Isolation Forests ile başlama

Python ile Anomali Tespiti

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Anket verisi

  • Örnek bir katılımcı:
    • 12 yaşında
    • 160 cm boyunda
    • 190 pound ağırlığında

Şapkalı çizgi film tarzı 12 yaşında bir erkek çocuğu resmi

Python ile Anomali Tespiti

Çok değişkenli anomaliler

Çok değişkenli anomaliler:

  • iki veya daha fazla özniteliğe sahiptir
  • öznitelikler tek başına aykırı olmayabilir
  • tüm öznitelikler birlikte düşünülünce aykırıdır
Python ile Anomali Tespiti

Karar ağaçları

5’in asal olup olmadığını kontrol eden bir karar ağacının kök ve bir yaprak düğümü

Python ile Anomali Tespiti

Karar ağaçları

5’in asal olup olmadığını kontrol eden, üç seviyeli tam büyümüş karar ağacı

Python ile Anomali Tespiti

Isolation Ağaçları

iTree’ler:

  • isolation trees’in kısaltması
  • karar ağaçlarının rastgeleleştirilmiş hâli
  • bölme (dallanma) rastgele olur
  • rastgele bölme, iç-nokta/aykırı boşluğunda daha olasıdır
Python ile Anomali Tespiti

Örnek 2B veri

9 veri noktulu, ikisi aykırı olan örnek 2B veri kümesi

Python ile Anomali Tespiti

Bir iTree’yi uydurma

2B veri kümesi, düzlemde yeşil bir çizgiyle ikiye bölünmüş

2B veriye uydurulmuş bir iTree’nin kök düğümü

Python ile Anomali Tespiti

Bir iTree’yi uydurma

2B veri kümesi, düzlemde iki dik çizgiyle dörde bölünmüş

2 aykırıyı bulan bir iTree’nin iki düğümü

Python ile Anomali Tespiti

Bir iTree’yi uydurma

2B veri kümesi, 6 farklı renkte çizgiyle çok parçaya bölünmüş

2B veriye uydurulan bir iTree’nin kalan bölmeleri

Python ile Anomali Tespiti

Noktalar nasıl sınıflanır

Noktalar aykırıdır:

  • kök düğüme yakınsa
  • ya da daha az bölme gerekiyorsa

2B veriye uydurulan bir iTree’nin kalan bölmeleri

Python ile Anomali Tespiti

ABD Airbnb verisi

import pandas as pd

airbnb_df = pd.read_csv("airbnb.csv")
Python ile Anomali Tespiti

ABD Airbnb verisi

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)
Python ile Anomali Tespiti

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

Python ile Anomali Tespiti

Aykırı değerleri filtreleme

outliers = airbnb_df[labels == 1]

print(outliers.shape)
(1000, 6)
Python ile Anomali Tespiti

Hadi pratik yapalım!

Python ile Anomali Tespiti

Preparing Video For Download...