Kom igång med Isolation Forests

Avvikelsedetektering i Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Enkätdata

  • En exempelrespondent:
    • 12 år gammal
    • 160 cm lång
    • väger 86 kg

En tecknad bild av en 12-årig pojke med hatt

Avvikelsedetektering i Python

Multivariata avvikelser

Multivariata avvikelser:

  • har två eller fler attribut
  • attributen är inte nödvändigtvis avvikande
  • avvikande enbart när alla attribut beaktas
Avvikelsedetektering i Python

Beslutsträd

En rotnod och en terminalnod i ett beslutsträd som kontrollerar om 5 är ett primtal

Avvikelsedetektering i Python

Beslutsträd

Ett fullt utvecklat beslutsträd med tre nivåer som kontrollerar om 5 är ett primtal

Avvikelsedetektering i Python

Isolationsträd

iTrees:

  • förkortning för isolationsträd
  • slumpbaserade versioner av beslutsträd
  • uppdelning (förgreningar) sker slumpmässigt
  • slumpmässig uppdelning sker oftare i gapet mellan inliers och outliers
Avvikelsedetektering i Python

Exempel på 2D-data

Ett exempel på ett 2D-dataset med 9 datapunkter, varav två är outliers

Avvikelsedetektering i Python

Anpassa ett iTree

2D-datasetet delat i två i det kartesiska 2D-planet av en grön linje

Rotnoden i ett iTree anpassat till ett 2D-dataset

Avvikelsedetektering i Python

Anpassa ett iTree

2D-datasetet delat i fyra i det kartesiska 2D-planet av två vinkelräta linjer

Två noder i ett iTree som hittar 2 outliers

Avvikelsedetektering i Python

Anpassa ett iTree

2D-datasetet uppdelat i flera delar i det kartesiska 2D-planet av 6 olika färgade linjer

Resten av ett iTree som anpassas till 2D-datasetet

Avvikelsedetektering i Python

Hur punkter klassificeras

Punkter klassas som outliers:

  • om de ligger nära rotnoden
  • eller kräver färre uppdelningar

Resten av ett iTree som anpassas till 2D-datasetet

Avvikelsedetektering i Python

Airbnb-data från USA

import pandas as pd

airbnb_df = pd.read_csv("airbnb.csv")
Avvikelsedetektering i Python

Airbnb-data från USA

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)
Avvikelsedetektering i 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])

Avvikelsedetektering i Python

Filtrera outliers

outliers = airbnb_df[labels == 1]

print(outliers.shape)
(1000, 6)
Avvikelsedetektering i Python

Nu kör vi en övning!

Avvikelsedetektering i Python

Preparing Video For Download...