Mulai dengan Isolation Forests

Deteksi Anomali dengan Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Data survei

  • Responden contoh:
    • 12 tahun
    • tinggi 160 cm
    • berat 190 pon

Gambar kartun anak laki-laki 12 tahun dengan topi

Deteksi Anomali dengan Python

Anomali multivariat

Anomali multivariat:

  • punya dua atau lebih atribut
  • atributnya belum tentu anomali
  • hanya anomali saat semua atribut dipertimbangkan
Deteksi Anomali dengan Python

Decision tree

Node akar dan satu node terminasi dari decision tree yang memeriksa apakah 5 adalah bilangan prima

Deteksi Anomali dengan Python

Decision tree

Decision tree lengkap dengan tiga level yang memeriksa apakah 5 adalah bilangan prima

Deteksi Anomali dengan Python

Isolation Tree

iTree:

  • singkatan dari isolation tree
  • versi acak dari decision tree
  • pemisahan (cabang) terjadi secara acak
  • belahan acak lebih mungkin muncul di celah inlier/outlier
Deteksi Anomali dengan Python

Contoh data 2D

Contoh dataset 2D dengan 9 titik data, dua di antaranya outlier

Deteksi Anomali dengan Python

Memasang iTree

Dataset 2D dibelah menjadi dua pada bidang kartesius 2D oleh garis hijau

Node akar dari iTree yang dipasang pada dataset 2D

Deteksi Anomali dengan Python

Memasang iTree

Dataset 2D dibelah menjadi empat pada bidang kartesius 2D oleh dua garis tegak lurus

Dua node iTree yang menemukan 2 outlier

Deteksi Anomali dengan Python

Memasang iTree

Dataset 2D dibelah menjadi beberapa bagian pada bidang kartesius 2D oleh 6 garis berwarna berbeda

Sisa iTree yang dipasang pada dataset 2D

Deteksi Anomali dengan Python

Klasifikasi titik

Titik dianggap outlier:

  • jika dekat node akar
  • atau butuh lebih sedikit belahan

Sisa iTree yang dipasang pada dataset 2D

Deteksi Anomali dengan Python

Data Airbnb AS

import pandas as pd

airbnb_df = pd.read_csv("airbnb.csv")
Deteksi Anomali dengan Python

Data Airbnb AS

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)
Deteksi Anomali dengan 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])

Deteksi Anomali dengan Python

Saring outlier

outliers = airbnb_df[labels == 1]

print(outliers.shape)
(1000, 6)
Deteksi Anomali dengan Python

Ayo berlatih!

Deteksi Anomali dengan Python

Preparing Video For Download...