Excel Verilerinde Isolation Forest Algoritması ile Anomali Tespiti
Anomalilerle Neden İlgilenmeliyiz?
Veri analizi süreçlerinde çoğu zaman verilerin büyük kısmı belirli bir örüntüye ya da dağılıma uyar. Ancak her zaman bu örüntüyü bozan, “sıradan” olmayan, istatistiksel anlamda uç değer ya da “anormal” olarak tanımlanan veri noktaları karşımıza çıkar. İşte bu noktada anomali tespiti (anomaly detection) devreye girer.
Anomaliler; finansal dolandırıcılıktan medikal teşhislere, üretim hatalarından siber güvenliğe kadar birçok alanda kritik öneme sahiptir. Bu nedenle, veriyi temizlemeden ya da modellemeden önce anomalileri tanımlamak ve mümkünse elemek gerekir.
Bu yazıda, Python programlama dili ve Isolation Forest algoritması kullanılarak, bir Excel dosyasındaki veri kümesi üzerinde anomalilerin nasıl tespit edileceğini adım adım gösteriyorum. Ayrıca IQR (Interquartile Range) yöntemiyle de aykırı değer tespiti yapılmıştır. Yazının sonunda, anomaliler temizlendikten sonra veri dağılımının histogramlarla nasıl değiştiğini görebileceksiniz.
Isolation Forest Nedir?
Isolation Forest, yani izolasyon ormanı, anomali tespiti için geliştirilmiş denetimsiz (unsupervised) bir makine öğrenmesi algoritmasıdır. Temel prensibi oldukça sezgiseldir: anormal veriler, normal verilere kıyasla daha kolay izole edilir.
Bu sayede, verinin yapısı hakkında ön bilgiye ihtiyaç duymadan aykırı değerleri başarılı bir şekilde tanımlayabilir.
Isolation Forest algoritmasının avantajları:
- Yüksek boyutlu verilerle iyi çalışması
- Hızlı ve etkin hesaplama süresi (büyük veri setleri için uygundur)
- Etiketli veriye ihtiyaç duymaması
Uygulama: Excel Verisinde Anomali Tespiti Adımları
Bu bölümde, Python kodlarını kullanarak adım adım bir Isolation Forest modeli kuracak ve anomalileri nasıl tespit edebileceğimizi göstereceğim.
1️⃣ Gerekli Kütüphaneleri İçe Aktaralım
import pandas as pd
import numpy as np
from sklearn.ensemble import IsolationForest
import matplotlib.pyplot as plt
import seaborn as sns
2️⃣ Excel Dosyasından Veriyi Okuyalım
Veri setimiz Calculation.xlsx adlı bir Excel dosyasından okunmaktadır.
İlk olarak dosyanın tamamı, ardından yalnızca gerekli sütunlar
usecols parametresi ile okunmuştur.
df = pd.read_excel("C:/Calculation.xlsx")
required_columns = [0, 1, 2, 3]
required_df = pd.read_excel("C:/Calculation.xlsx", usecols=required_columns)
3️⃣ Modeli Tanımlayıp Eğitelim
Isolation Forest modelini belirli hiperparametrelerle tanımlayıp, sadece Result sütunu üzerinden eğitiyoruz.
model = IsolationForest(
n_estimators=100,
max_samples='auto',
contamination=float(0.1),
max_features=1.0,
bootstrap=True,
n_jobs=-1,
random_state=42,
verbose=0
)
model.fit(required_df[["Result"]])
Önemli parametreler:
- contamination: Beklenen anomali oranı (bu örnekte %10)
- n_estimators: Kullanılacak ağaç sayısı
- max_samples: Her ağaç için örneklenen alt küme sayısı
- bootstrap: Rastgele örnekleme yapılmasını sağlar
4️⃣ Anomali Skorlarını ve Tahminleri Ekleyelim
Modelin karar fonksiyonu ile her satıra ait skorları ve -1 (anomali) veya 1 (normal) etiketlerini ekliyoruz.
required_df['scores'] = model.decision_function(required_df[['Result']])
required_df['anomaly'] = model.predict(required_df[['Result']])
5️⃣ Tespit Edilen Anomalileri İnceleyelim
anomaly = required_df.loc[required_df['anomaly'] == -1]
print(anomaly)
Örnek çıktı:
Sample Treatment Period Result scores anomaly
3 1 Tr-4 2 0.636951 -0.032099 -1
...
157 5 Tr-2 48 6.641357 -0.017261 -1
Ayrıca anomalilerin indekslerini ayrı bir listeye alabiliriz:
anomaly_index = list(anomaly.index)
print(anomaly_index)
[3, 10, 14, 15, 56, 72, 81, 84, 128, 132, 133, 145, 149, 152, 153, 157]
6️⃣ Anomalileri Veri Setinden Silelim
Silme işleminden önce veri setinin boyutunu kontrol edelim:
required_df.shape
(160, 4)
Şimdi drop() yöntemiyle anomali satırlarını çıkaralım:
required_df.drop(anomaly_index, axis=0, inplace=True)
required_df.shape
Yeni boyut: (144, 6)
7️⃣ Histogram ile Veri Dağılımını Gözlemleyelim
Anomaliler temizlendikten sonra veri dağılımının nasıl değiştiğini histogramlar ile gözlemleyebiliriz:
plt.figure(figsize=(10, 5))
plt.hist(df.Result)
plt.hist(required_df.Result)
plt.show()
Bu grafik, anomali verilerden arındırılmış veri kümesinin daha düzgün bir dağılıma sahip olduğunu açıkça gösterecektir.
Sonuç ve Öneriler
Bu çalışmada, Python kullanarak Excel verilerinde anomali tespiti nasıl yapılır sorusuna uygulamalı bir yanıt verdik. Isolation Forest algoritması, özellikle denetimsiz veri setlerinde aykırı değerleri izole ederek tespit etmek için güçlü bir araçtır.
Aykırı verilerin temizlenmesiyle birlikte:
- Daha tutarlı analizler
- Daha güvenilir modeller
- Daha doğru sonuçlar
elde etmek mümkündür.
🔍 Ayrıca IQR (Interquartile Range) gibi istatistiksel yöntemleri paralel olarak kullanmak, modelinizin sağlamlığını artıracaktır.
Veri analizine meraklı olan herkes için bu tür araçlar, analiz kalitesini birkaç seviye yukarı taşır. Umarım bu içerik sizin için hem öğretici hem de uygulanabilir olmuştur.
