Primi passi con Isolation Forests

Rilevamento delle anomalie in Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Dati del sondaggio

  • Un rispondente del sondaggio:
    • 12 anni
    • alto 160 cm
    • pesa 190 libbre

Immagine di un ragazzo di 12 anni a cartone con un cappello

Rilevamento delle anomalie in Python

Anomalie multivariate

Anomalie multivariate:

  • hanno due o più attributi
  • gli attributi non sono necessariamente anomali
  • sono anomale solo considerando tutti gli attributi
Rilevamento delle anomalie in Python

Decision tree

Un nodo radice e un nodo terminale di un decision tree che verifica se 5 è primo

Rilevamento delle anomalie in Python

Decision tree

Decision tree completo a tre livelli che verifica se 5 è primo

Rilevamento delle anomalie in Python

Isolation Trees

iTree:

  • abbreviazione di isolation trees
  • versioni casuali dei decision tree
  • le divisioni (ramificazioni) sono casuali
  • il taglio casuale cade spesso nel gap tra inlier e outlier
Rilevamento delle anomalie in Python

Esempio di dati 2D

Un dataset 2D con 9 punti, di cui due outlier

Rilevamento delle anomalie in Python

Addestrare un iTree

Il dataset 2D diviso in due nel piano cartesiano da una linea verde

Il nodo radice di un iTree addestrato su un dataset 2D

Rilevamento delle anomalie in Python

Addestrare un iTree

Il dataset 2D diviso in quattro nel piano cartesiano da due linee perpendicolari

Due nodi di un iTree che trova 2 outlier

Rilevamento delle anomalie in Python

Addestrare un iTree

Il dataset 2D diviso in più parti nel piano cartesiano da 6 linee di colori diversi

Il resto di un iTree addestrato sul dataset 2D

Rilevamento delle anomalie in Python

Come si classificano i punti

I punti sono outlier:

  • se vicini al nodo radice
  • o se richiedono meno split

Il resto di un iTree addestrato sul dataset 2D

Rilevamento delle anomalie in Python

Dati Airbnb USA

import pandas as pd

airbnb_df = pd.read_csv("airbnb.csv")
Rilevamento delle anomalie in Python

Dati Airbnb 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)
Rilevamento delle anomalie 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])

Rilevamento delle anomalie in Python

Filtra gli outlier

outliers = airbnb_df[labels == 1]

print(outliers.shape)
(1000, 6)
Rilevamento delle anomalie in Python

Andiamo a esercitarci!

Rilevamento delle anomalie in Python

Preparing Video For Download...