Aan de slag met Isolation Forests

Anomaly Detection in Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Enquêtegegevens

  • Een voorbeeldrespondent:
    • 12 jaar oud
    • 160 cm lang
    • weegt 190 pond

Een afbeelding van een getekende 12-jarige jongen met een pet

Anomaly Detection in Python

Multivariate anomalieën

Multivariate anomalieën:

  • hebben twee of meer attributen
  • attributen zijn niet per se afwijkend
  • alleen afwijkend als alle attributen samen worden bekeken
Anomaly Detection in Python

Decision trees

Een root node en één eindknoop van een decision tree die controleert of 5 een priemgetal is

Anomaly Detection in Python

Decision trees

Volledig opgebouwde decision tree met drie niveaus die controleert of 5 een priemgetal is

Anomaly Detection in Python

Isolation Trees

iTrees:

  • afkorting van isolation trees
  • gerandomiseerde varianten van decision trees
  • splitsen (vertakken) gebeurt willekeurig
  • willekeurige splits valt vaker in de kloof tussen inliers/outliers
Anomaly Detection in Python

Voorbeeld 2D-data

Een voorbeeld van een 2D-dataset met 9 datapunten, waarvan er twee outliers zijn

Anomaly Detection in Python

Een iTree fitten

De 2D-dataset in tweeën gesplitst in het 2D-cartesisch vlak door een groene lijn

De root node van een iTree getraind op een 2D-dataset

Anomaly Detection in Python

Een iTree fitten

De 2D-dataset in vieren gesplitst in het 2D-cartesisch vlak door twee loodrechte lijnen

Twee knopen van een iTree die 2 outliers vindt

Anomaly Detection in Python

Een iTree fitten

De 2D-dataset in meerdere delen gesplitst in het 2D-cartesisch vlak door 6 lijnen met verschillende kleuren

De rest van een iTree die op de 2D-dataset wordt gefit

Anomaly Detection in Python

Hoe punten worden geclassificeerd

Punten zijn outliers:

  • als ze dicht bij de root node liggen
  • of minder splits nodig hebben

De rest van een iTree die op de 2D-dataset wordt gefit

Anomaly Detection in Python

US Airbnb-data

import pandas as pd

airbnb_df = pd.read_csv("airbnb.csv")
Anomaly Detection in Python

US Airbnb-data

airbnb_df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10000 entries, 0 to 9999
Data columns (total 6 columns):
 #   Column                          Non-Null Count  Dtype  
 0   minimum_nights                  10000 non-null  int64  
 1   number_of_reviews               10000 non-null  int64  
 2   reviews_per_month               10000 non-null  float64
 3   calculated_host_listings_count  10000 non-null  int64  
 4   availability_365                10000 non-null  int64  
 5   price                           10000 non-null  int64  
dtypes: float64(1), int64(5)
Anomaly Detection in Python

fit_predict

from pyod.models.iforest import IForest

iforest = IForest() labels = iforest.fit_predict(airbnb_df) print(labels)
array([0, 0, 0, ..., 1, 0, 0])

Anomaly Detection in Python

Outliers filteren

outliers = airbnb_df[labels == 1]

print(outliers.shape)
(1000, 6)
Anomaly Detection in Python

Laten we oefenen!

Anomaly Detection in Python

Preparing Video For Download...