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.
1import numpy as np2import matplotlib.pyplot as plt3from sklearn.ensemble import IsolationForest4from sklearn.datasets import make_blobs56# Normal veri oluştur7X_normal, _ = make_blobs(n_samples=300, centers=1, n_features=2, random_state=42)89# Anomali veri ekle (rastgele noktalar)10X_anomaly = np.random.uniform(low=-10, high=10, size=(20, 2))11X = np.vstack([X_normal, X_anomaly])1213# Isolation Forest modelini oluştur ve eğit14model = IsolationForest(contamination=0.05, random_state=42)15anomalies = model.fit_predict(X)1617# -1 anomali, 1 normal veri anlamına gelir18print(f"Anomali sayısı: {sum(anomalies == -1)}")19print(f"Normal veri sayısı: {sum(anomalies == 1)}")2021# Sonuçları görselleştir22plt.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ç.
0 yorum