Premiers pas avec les Isolation Forests

Détection d’anomalies en Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Données d'enquête

  • Exemple de répondant :
    • 12 ans
    • 160 cm
    • pèse 190 livres

Image d'un garçon de 12 ans en dessin animé avec une casquette

Détection d’anomalies en Python

Anomalies multivariées

Anomalies multivariées :

  • portent sur au moins deux attributs
  • chaque attribut n'est pas forcément anormal
  • l'anomalie n'apparaît qu'en les combinant
Détection d’anomalies en Python

Arbres de décision

Un nœud racine et un nœud terminal d'un arbre de décision qui vérifie si 5 est premier

Détection d’anomalies en Python

Arbres de décision

Arbre de décision complet à trois niveaux qui vérifie si 5 est premier

Détection d’anomalies en Python

Isolation Trees

iTrees :

  • abréviation de isolation trees
  • versions aléatoires des arbres de décision
  • le découpage (les branches) est aléatoire
  • un découpage aléatoire survient souvent dans l'intervalle inliers/outliers
Détection d’anomalies en Python

Exemple de données 2D

Exemple de jeu de données 2D avec 9 points, dont deux outliers

Détection d’anomalies en Python

Ajuster un iTree

Le jeu de données 2D scindé en deux dans le plan cartésien 2D par une ligne verte

Le nœud racine d'un iTree ajusté à un jeu de données 2D

Détection d’anomalies en Python

Ajuster un iTree

Le jeu de données 2D scindé en quatre par deux lignes perpendiculaires dans le plan cartésien 2D

Deux nœuds d'un iTree qui détecte 2 outliers

Détection d’anomalies en Python

Ajuster un iTree

Le jeu de données 2D scindé en plusieurs parties dans le plan cartésien 2D par 6 lignes de couleurs différentes

Le reste d'un iTree en cours d'ajustement au jeu de données 2D

Détection d’anomalies en Python

Classification des points

Les points sont des outliers :

  • s'ils sont proches de la racine
  • ou nécessitent peu de découpages

Le reste d'un iTree en cours d'ajustement au jeu de données 2D

Détection d’anomalies en Python

Données Airbnb US

import pandas as pd

airbnb_df = pd.read_csv("airbnb.csv")
Détection d’anomalies en Python

Données Airbnb US

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)
Détection d’anomalies en 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])

Détection d’anomalies en Python

Filtrer les outliers

outliers = airbnb_df[labels == 1]

print(outliers.shape)
(1000, 6)
Détection d’anomalies en Python

Passons à la pratique !

Détection d’anomalies en Python

Preparing Video For Download...