Começando com Isolation Forests

Detecção de Anomalias em Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Dados de pesquisa

  • Um respondente de exemplo:
    • 12 anos
    • 160 cm de altura
    • pesa 190 libras

Uma imagem de um menino de 12 anos em desenho, usando boné

Detecção de Anomalias em Python

Anomalias multivariadas

Anomalias multivariadas:

  • têm dois ou mais atributos
  • atributos não são necessariamente anômalos
  • só são anômalas ao considerar todos os atributos
Detecção de Anomalias em Python

Árvores de decisão

Um nó raiz e um nó de término de uma árvore de decisão que verifica se 5 é primo

Detecção de Anomalias em Python

Árvores de decisão

Árvore de decisão completa com três níveis que verifica se 5 é primo

Detecção de Anomalias em Python

Isolation Trees

iTrees:

  • abreviação de isolation trees
  • versões aleatorizadas de árvores de decisão
  • a divisão (ramificação) ocorre aleatoriamente
  • a divisão aleatória tende a ocorrer no intervalo entre inliers e outliers
Detecção de Anomalias em Python

Exemplo de dados 2D

Um exemplo de conjunto de dados 2D com 9 pontos, dois deles são outliers

Detecção de Anomalias em Python

Ajustando uma iTree

O conjunto 2D dividido em dois no plano cartesiano 2D por uma linha verde

O nó raiz de uma iTree ajustada a um conjunto de dados 2D

Detecção de Anomalias em Python

Ajustando uma iTree

O conjunto 2D dividido em quatro no plano cartesiano 2D por duas linhas perpendiculares

Dois nós de uma iTree que encontra 2 outliers

Detecção de Anomalias em Python

Ajustando uma iTree

O conjunto 2D dividido em várias partes no plano cartesiano 2D por 6 linhas de cores diferentes

O restante de uma iTree sendo ajustada ao conjunto de dados 2D

Detecção de Anomalias em Python

Como os pontos são classificados

Pontos são outliers:

  • se próximos ao nó raiz
  • ou se exigem menos divisões

O restante de uma iTree sendo ajustada ao conjunto de dados 2D

Detecção de Anomalias em Python

Dados de Airbnb nos EUA

import pandas as pd

airbnb_df = pd.read_csv("airbnb.csv")
Detecção de Anomalias em Python

Dados de Airbnb nos EUA

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ção de Anomalias em 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ção de Anomalias em Python

Filtrar outliers

outliers = airbnb_df[labels == 1]

print(outliers.shape)
(1000, 6)
Detecção de Anomalias em Python

Vamos praticar!

Detecção de Anomalias em Python

Preparing Video For Download...