Aykırı Değer Tespiti için z-puanları

Python ile Anomali Tespiti

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

z-puanları nedir?

  • z-puanları şunu söyler:
    • ortalamadan kaç STD uzakta olduğunuzu

Örnek:

  • $\mu=10$ ve $\sigma=3$ olan bir dağılımda:
    • $Z_{16.3}=(16.3-10) / 3=2.1$

z-puanlarını hesaplama formülü.

Python ile Anomali Tespiti

Ampirik Kural ve aykırı değerler

Ampirik Kural:

  • %68 bir STD içinde
  • %95 iki STD içinde
  • %99,7 üç STD içinde

Aykırı değerler:

  • üç STD sınırının dışında
  • kuyruklara gider (yanlardaki pembe alanlar)

Wikipedia'dan Ampirik Kuralı gösteren, normal dağılım üzerinde %68, %95 ve %99,7 kısımları işaretli bir görsel.

1 Görsel: Wikipedia'daki Ampirik Kural sayfasından
Python ile Anomali Tespiti

Kodda z-puanları

from scipy.stats import zscore


scores = zscore(sales) scores[:5]
0    0.910601
1   -1.018440
2   -0.049238
3    0.849103
4   -0.695373
Python ile Anomali Tespiti

Kodda z-puanları

is_over_3 = np.abs(scores) > 3

is_over_3[:5]
0    False
1    False
2    False
3    True
4    False
Python ile Anomali Tespiti

Kodda z-puanları

outliers = sales[is_over_3]

print(len(outliers))
90
Python ile Anomali Tespiti

z-puanlarının eksileri

  • En iyi normal dağılımda çalışır
  • Ortalama ve STD aykırı değerlerden çok etkilenir
  • Çok aykırı değer olursa performans düşer
Python ile Anomali Tespiti

Medyan Mutlak Sapma (MAD)

  • Saçılımı (değişkenliği) ölçer
  • Aykırı değerlere daha dayanıklıdır
  • Çekirdeğinde medyanı kullanır

Medyan Mutlak Sapma (MAD) puanını hesaplama formülü.

Python ile Anomali Tespiti

MAD puanı

from scipy.stats import median_abs_deviation

mad_score = median_abs_deviation(sales)

mad_score
1081.925
Python ile Anomali Tespiti

PyOD'a giriş

  • MAD ile değiştirilmiş z-puanları PyOD'de uygulanır
  • PyOD - Python Aykırı Değer Tespit kütüphanesi:
    • 40'tan fazla algoritma sunar
    • tüm algoritmalar sklearn-benzeri sözdizimine sahiptir
Python ile Anomali Tespiti

Kodda değiştirilmiş z-puanları

from pyod.models.mad import MAD

# threshold defaults to 3.5
mad = MAD(threshold=3.5)


# Reshape sales sales_reshaped = sales.values.reshape(-1, 1)
Python ile Anomali Tespiti

Kodda değiştirilmiş z-puanları

labels = mad.fit_predict(sales_reshaped)

print(labels.sum())
83
Python ile Anomali Tespiti

Hadi pratik yapalım!

Python ile Anomali Tespiti

Preparing Video For Download...