Introducere în Isolation Forests

Detecția anomaliilor în Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Date din sondaj

  • Un respondent din sondaj:
    • 12 ani
    • 160 cm înălțime
    • 86 kg

Imaginea unui băiat de desene animate de 12 ani cu pălărie

Detecția anomaliilor în Python

Anomalii multivariate

Anomalii multivariate:

  • au două sau mai multe atribute
  • atributele nu sunt neapărat anomale individual
  • devin anomale doar când toate atributele sunt considerate împreună
Detecția anomaliilor în Python

Arbori de decizie

Un nod rădăcină și un nod terminal al unui arbore de decizie care verifică dacă 5 este număr prim

Detecția anomaliilor în Python

Arbori de decizie

Arbore de decizie complet cu trei niveluri care verifică dacă 5 este număr prim

Detecția anomaliilor în Python

Isolation Trees

iTree-uri:

  • prescurtare de la isolation trees
  • versiuni randomizate ale arborilor de decizie
  • împărțirea (ramificarea) are loc aleatoriu
  • împărțirea aleatorie apare mai probabil în golul dintre valori normale/anomalii
Detecția anomaliilor în Python

Date 2D exemplu

Un set de date 2D exemplu cu 9 puncte, două dintre ele fiind anomalii

Detecția anomaliilor în Python

Antrenarea unui iTree

Setul de date 2D împărțit în două în planul cartezian printr-o linie verde

Nodul rădăcină al unui iTree antrenat pe un set de date 2D

Detecția anomaliilor în Python

Antrenarea unui iTree

Setul de date 2D împărțit în patru în planul cartezian de două linii perpendiculare

Două noduri ale unui iTree care identifică 2 anomalii

Detecția anomaliilor în Python

Antrenarea unui iTree

Setul de date 2D împărțit în mai multe zone în planul cartezian de 6 linii colorate diferit

Restul unui iTree antrenat pe setul de date 2D

Detecția anomaliilor în Python

Clasificarea punctelor

Punctele sunt anomalii:

  • dacă sunt apropiate de nodul rădăcină
  • sau necesită mai puține împărțiri

Restul unui iTree antrenat pe setul de date 2D

Detecția anomaliilor în Python

Date Airbnb SUA

import pandas as pd

airbnb_df = pd.read_csv("airbnb.csv")
Detecția anomaliilor în Python

Date Airbnb SUA

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)
Detecția anomaliilor în 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])

Detecția anomaliilor în Python

Filtrarea anomaliilor

outliers = airbnb_df[labels == 1]

print(outliers.shape)
(1000, 6)
Detecția anomaliilor în Python

Să exersăm!

Detecția anomaliilor în Python

Preparing Video For Download...