Isolation Forest ile Anomali Tespit: Python Uygulaması

Isolation Forest, anormal verileri normal olanlardan ayırmak için ağaç yapısı kullanan etkili bir yöntemdir. Algoritma, anomalilerin nadir olduğu varsayımına dayanır ve onları izole etmek daha az adımda başarılı olur. Gözlemci saçılım grafiğine baktığında, bazı noktaların diğerlerinden açıkça uzak olduğunu görmüş olabilirsin, işte bu anomaliler.

Python'da scikit-learn kütüphanesi ile bu işi kolaylıkla yapabilirsin. Önce normal ve anormal veriler içeren bir veri seti oluştur, modeli eğit, sonra hangi örneklerin anomali olduğunu belirle.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1import numpy as np
2import matplotlib.pyplot as plt
3from sklearn.ensemble import IsolationForest
4from sklearn.datasets import make_blobs
5
6# Normal veri oluştur
7X_normal, _ = make_blobs(n_samples=300, centers=1, n_features=2, random_state=42)
8
9# Anomali veri ekle (rastgele noktalar)
10X_anomaly = np.random.uniform(low=-10, high=10, size=(20, 2))
11X = np.vstack([X_normal, X_anomaly])
12
13# Isolation Forest modelini oluştur ve eğit
14model = IsolationForest(contamination=0.05, random_state=42)
15anomalies = model.fit_predict(X)
16
17# -1 anomali, 1 normal veri anlamına gelir
18print(f"Anomali sayısı: {sum(anomalies == -1)}")
19print(f"Normal veri sayısı: {sum(anomalies == 1)}")
20
21# Sonuçları görselleştir
22plt.figure(figsize=(10, 6))
23plt.scatter(X[anomalies == 1, 0], X[anomalies == 1, 1], c='blue', label='Normal', alpha=0.6)
24plt.scatter(X[anomalies == -1, 0], X[anomalies == -1, 1], c='red', label='Anomali', s=100, marker='X')
25plt.legend()
26plt.title('Isolation Forest Anomali Tespiti')
27plt.xlabel('Feature 1')
28plt.ylabel('Feature 2')
29plt.grid(True, alpha=0.3)
30plt.show()

Kod çalıştırıldığında, mavi noktalar normal veriyi, kırmızı X işaretleri anomalileri gösterir. `contamination` parametresi, veri içinde kaç oranında anomali olduğunu söyler, burada %5 olarak ayarladık.

Gerçek senaryolarda (ağ trafiği, sensör verileri, finansal işlemler) aynı mantık geçerli. Veri setini yükle, modeli eğit, anomali puanlarını kontrol et. Puanı düşük olan örnekler anomali olma ihtimali yüksektir. Sık yapılan hata: `contamination` değerini çok yüksek ayarlamak ve normal verileri yanlışlıkla anomali olarak etiketlemek. Verinin yapısını biliyorsan bu oranı doğru seç.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz