Anomaly Detection के लिए z-scores का उपयोग

Python में Anomaly Detection

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Z-scores क्या हैं?

  • Z-scores बताते हैं:
    • mean से कितने STD दूर है

उदाहरण:

  • एक distribution में जहाँ $\mu=10$ और $\sigma=3$:
    • $Z_{16.3}=(16.3-10) / 3=2.1$

z-scores निकालने का फ़ॉर्मूला.

Python में Anomaly Detection

Empirical Rule और outliers

Empirical Rule:

  • 68% एक STD के भीतर
  • 95% दो STDs के भीतर
  • 99.7% तीन STDs के भीतर

Outliers:

  • तीन STD लिमिट के बाहर
  • टेल्स में जाते हैं (साइड के पिंक एरिया)

विकिपीडिया से Empirical Rule की छवि, जो normal distribution में 68%, 95% और 99.7% हिस्सों को दर्शाती है.

1 विकिपीडिया के Empirical Rule पेज से छवि
Python में Anomaly Detection

कोड में Z-scores

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 में Anomaly Detection

कोड में Z-scores

is_over_3 = np.abs(scores) > 3

is_over_3[:5]
0    False
1    False
2    False
3    True
4    False
Python में Anomaly Detection

कोड में Z-scores

outliers = sales[is_over_3]

print(len(outliers))
90
Python में Anomaly Detection

Z-scores की सीमाएँ

  • केवल normally distributed डेटा पर सबसे अच्छा काम करता है
  • Mean और STD पर outliers का बड़ा असर होता है
  • बहुत अधिक outliers हों तो performance गिरती है
Python में Anomaly Detection

Median Absolute Deviation (MAD)

  • dispersion (variability) मापता है
  • outliers के प्रति अधिक robust
  • core में median का उपयोग करता है

Median Absolute Deviation स्कोर का फ़ॉर्मूला.

Python में Anomaly Detection

MAD स्कोर

from scipy.stats import median_abs_deviation

mad_score = median_abs_deviation(sales)

mad_score
1081.925
Python में Anomaly Detection

PyOD परिचय

  • MAD के साथ modified z-scores, PyOD में implement हैं
  • PyOD - Python Outlier Detection लाइब्रेरी:
    • 40+ एल्गोरिदम ऑफ़र करती है
    • सभी एल्गोरिदम का sklearn-जैसा syntax है
Python में Anomaly Detection

Modified z-scores कोड में

from pyod.models.mad import MAD

# threshold का default 3.5 है
mad = MAD(threshold=3.5)


# sales को reshape करें sales_reshaped = sales.values.reshape(-1, 1)
Python में Anomaly Detection

Modified z-scores कोड में

labels = mad.fit_predict(sales_reshaped)

print(labels.sum())
83
Python में Anomaly Detection

अभ्यास करते हैं!

Python में Anomaly Detection

Preparing Video For Download...