Dengesiz Verilerden Maksimum Sonuç Almak: Tüm Stratejiler
Dengesiz Verilerden Maksimum Sonuç Almak: Tüm Stratejiler3 min read·Just now--Giriş2025 yılı itibarıyla, yapay zeka ve makine öğrenmesi sistemlerinin neredeyse her alanda kullanılmasıyla birlikte, dengesiz veri setleri problemi daha da önem kazanmıştır. Özellikle finans, sağlık ve siber güvenlik gibi yüksek riskli uygulamalarda azınlık sınıfların doğru şekilde tahmin edilmesi hayati önemdedir. Bu yazıda, dengesiz veri setleriyle çalışırken model performansını artırmak için kullanılan en güncel stratejileri ve araçları ele alacağız.Dengesiz Veri Nedir?Dengesiz veri setleri, sınıflar arasındaki örnek sayısının çok farklı olduğu veri setleridir. Örneğin; sahte kredi kartı işlemleri, nadir hastalıkların tespiti gibi uygulamalarda pozitif (ilgi duyulan) sınıf sayıca çok az olabilir. Bu gibi senaryolarda standart modeller, azınlık sınıfı göz ardı edebilir.Neden Sorun Olur?Model çoğunluk sınıfına ağırlık verir.“Accuracy” metriği yanıltıcı olur.Azınlık sınıfı öğrenilemez ve model asıl ihtiyacımız olan sınıfta zayıf performans gösterir.Örnek Bir Durum:Kanser tespiti yapan bir model düşünelim:1000 veri noktasından 990'ı sağlıklı, 10'u hastalıklı.Model herkesi “sağlıklı” derse %99 doğruluk elde eder. Ama hiçbir hastalığı yakalayamaz.Performans MetrikleriDengesiz veri setlerinde aşağıdaki metrikler tercih edilir:Precision (Kesinlik)Pozitif tahminlerin ne kadarının gerçekten doğru olduğunu gösterir. Formül: TP: True Positive, FP: False Positive. Örneğin, modeliniz 10 kişiyi hasta dedi ve bunların 7'si gerçekten hastaysa, precision değeri 0.7'dir.Precision yüksekse, “hatalı pozitif tahmin” yapma oranı düşüktür. Yani, model sadece “emin olduğu” vakalarda pozitif tahmin yapıyordur.Recall (Duyarlılık / True Positive Rate)Gerçek pozitif örneklerin ne kadarının tespit edildiğini ölçer. Formül: FN: False Negative. Yani modelin gerçekten pozitif olanları ne kadar kaçırmadan yakalayabildiğini gösterir.Recall yüksekse, model “pozitif olanların çoğunu yakalıyor” demektir. Özellikle hastalık tespiti gibi kritik konularda yüksek recall istenir.F1 ScorePrecision ve recall’un dengeli bir şekilde ölçülmesini sağlar. Bu iki metriğin harmonik ortalamasıdır. Formül: F1 skoru, precision ve recall arasında bir denge sağlar. Eğer biri çok düşükse, F1 skoru da düşer. Bu yüzden özellikle dengesiz veri setlerinde ideal bir ölçüdür.ROC AUC (Receiver Operating Characteristic — Area Under Curve)ROC eğrisi, True Positive Rate (Recall) ile False Positive Rate’in (FPR = FP / (FP + TN)) grafiğidir.AUC, bu eğrinin altında kalan alandır ve modelin sınıfları ne kadar iyi ayırabildiğini gösterir.1'e yaklaştıkça modelin sınıflandırma başarısı artar.Dengesiz veri setlerinde ROC AUC, özellikle sınıf ayrımının genel başarısını göstermek açısından oldukça faydalıdır.Dengesiz Veriye Çözümler1. Veri Düzeyinde Yöntemlera. Oversampling (Azınlık sınıfı arttırma)SMOTE (Synthetic Minority Over-sampling Technique): Yeni yapay örnekler oluşurur.ADASYN: SMOTE’un gelişmiş versiyonudur.b. Undersampling (Çoğunluk sınıfını azaltma)Çoğunluk sınıfından rastgele örnek silinir.Bilgi kaybı riski vardır.2. Model Düzeyinde YöntemlerSınıf ağırlığı (class_weight): Model, azınlık sınıfa daha fazla önem verir.Örnek: LogisticRegression(class_weight='balanced')3. Ensemble YöntemleriBalanced Random ForestEasyEnsembleDengesizlik problemini ağırıklı kararlarla aşar.4. Uygun Metriklerle DeğerlendirmePrecision-Recall CurveConfusion Matrix analizifrom sklearn.datasets import make_classificationfrom imblearn.over_sampling import SMOTEfrom sklearn.model_selection import train_test_splitfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.metrics import classification_report# Dengesiz veri setiX, y = make_classification(n_samples=1000, n_classes=2, weights=[0.9, 0.1], random_state=42)# SMOTE uygulamasm = SMOTE(random_state=42)X_res, y_res = sm.fit_resample(X, y)# Train-test ayırmaX_train, X_test, y_train, y_test = train_test_split(X_res, y_res, test_size=0.2)# Model eğitimimodel = RandomForestClassifier()model.fit(X_train, y_train)# Tahmin ve rapory_pred = model.predict(X_test)print(classification_report(y_test, y_pred))Gerçek Hayatta Kullanıldığı YerlerSahtecilik tespitiHastalık tanısıSiber sınıflandırma (normal/saldırı)Kredi risk analizleriSonuçDengesiz veri setleriyle çalışmak, makine öğrenmesinde ayrı bir uzmanlık alanıdır. Model performansını doğru anlamak için uygun metriklerin kullanılması ve verinin dengeleme yöntemleriyle işlenmesi şarttır. Bu yöntemler hem veri bilimcilerin hem de uygulamalı makine öğrenmesi geliştiricilerinin aracıdır.Kaynaklar:He & Garcia (2009). Learning from imbalanced data.Chawla et al. (2002). SMOTE: Synthetic Minority Over-sampling Technique.Imbalanced-learn: https://imbalanced-learn.orgScikit-learn: https://scikit-learn.org