Dengesiz veri setleri, makine öğrenmesi projelerinde sık karşılaşılan ve model performansını ciddi şekilde etkileyen bir sorundur. Örneğin, bir bankacılık fraud tespiti verisinde dolandırıcı işlemlerin oranı %1'in altında olabilir. Böyle bir durumda, model tüm örnekleri 'dürüst' olarak sınıflandırsa bile %99 doğruluk elde eder, ancak gerçek amaca hizmet etmez. Bu yazıda, dengesiz veri setlerini dengelemek ve model başarısını artırmak için kullanılan başlıca yöntemleri—SMOTE, Random Undersampling ve topluluk tekniklerini—detaylıca inceleyeceğiz.
Dengesizliğin Etkisi ve En Sık Yapılan Hata
Dengesiz veri setlerinde en yaygın hata, model değerlendirmesinde accuracy (doğruluk) metriğini kullanmaktır. Accuracy, çoğunluk sınıfını doğru tahmin eden bir modeli yüksek puanla ödüllendirir, ancak azınlık sınıfını hiç yakalayamadığımızı gizler. Bunun yerine precision, recall, F1-score ve ROC-AUC gibi metrikler kullanılmalıdır.
Dengesiz veri setlerinde en kritik nokta, modelin azınlık sınıfını doğru tespit etme yeteneğidir. Doğruluk metriği tek başına yanıltıcıdır; her zaman precision, recall ve F1 gibi metriklerle birlikte değerlendirme yapın.
Yeniden Örnekleme (Resampling) Yöntemleri
Veri setini dengelemek için en temel yaklaşım, örnekleme yöntemleridir. Bunlar iki ana gruba ayrılır: azınlık sınıfını çoğaltan oversampling ve çoğunluk sınıfından örnek azaltan undersampling.
Random Oversampling (Rastgele Aşırı Örnekleme)
Azınlık sınıfındaki örnekleri rastgele kopyalayarak sınıf sayılarını eşitler. Basit ve hızlıdır ancak aşırı öğrenmeye (overfitting) yol açabilir, çünkü aynı örneklerin birden çok kopyası modele ezberleme eğilimi kazandırır.
SMOTE (Sentetik Azınlık Aşırı Örnekleme Tekniği)
SMOTE, azınlık sınıfındaki örneklerin arasındaki doğru parçası üzerinde yeni sentetik örnekler üretir. Bu yöntem, rastgele kopyalamaya göre daha iyi genelleme sağlar ve overfitting riskini azaltır. SMOTE'un farklı varyantları (Borderline-SMOTE, ADASYN) sınıf sınırlarına odaklanarak daha başarılı sonuçlar verebilir.
Random Undersampling (Rastgele Alt Örnekleme)
Çoğunluk sınıfından rastgele örnekler çıkararak veri setini dengeleyen bu yöntem, işlem hızını artırır. Ancak çoğunluk sınıfına ait önemli bilgiler kaybolabilir (information loss). Genellikle büyük veri setlerinde kullanışlıdır.
Yöntemlerin Karşılaştırması
| Yöntem | Avantajlar | Dezavantajlar | En Uygun Kullanım Alanı |
|---|---|---|---|
| Random Oversampling | Basit, hızlı | Overfitting riski | Küçük veri setleri, hızlı prototip |
| SMOTE | Overfitting riski düşük | Gürültülü veri oluşturabilir | Orta-büyük veri setleri, karmaşık sınırlar |
| Random Undersampling | Veri boyutunu küçültür, hızlı | Bilgi kaybı, düşük performans | Büyük veri setleri, çoğunluk sınıfı gürültülüyse |
Topluluk (Ensemble) Yöntemleri
Birden fazla modelin birleştirilmesiyle çalışan topluluk yöntemleri, dengesiz veri setlerinde iyi performans gösterir.
Random Forest ve BalanceCascade
Random Forest, temel karar ağaçlarını birleştirir ve sınıf ağırlıklarını ayarlamaya izin verir. BalancedRandomForestClassifier her ağaçta alt örnekleme yaparak dengesizliği azaltır. BalanceCascade ise adım adım çoğunluk sınıfını azaltarak çalışır ve yüksek başarı sağlar.
XGBoost ile Ağırlıklandırma
Gradient boosting algoritmaları (XGBoost, LightGBM) scale_pos_weight parametresi ile azınlık sınıfına daha fazla ağırlık verilmesini sağlar. Bu, kayıp fonksiyonunda azınlık sınıfı hatalarını daha fazla cezalandırarak dengeyi sağlar.
Uygulama Adımları ve İpuçları
Dengesiz veri setleriyle çalışırken şu adımları takip edin:
- Veriyi inceleyin: Sınıf dağılımını görselleştirin, azınlık sınıfının yapısını anlayın.
- Doğru metrikleri seçin: Precision, recall, F1, ROC-AUC kullanın.
- Veriyi bölün: Eğitim ve test setlerini ayrı ayrı dengesiz bırakın; yeniden örneklemeyi sadece eğitim setine uygulayın (Cross-Validation Teknikleri ile doğrulama yaparken de aynı kural geçerlidir).
- Farklı yöntemleri dene: SMOTE, Random Undersampling, BalancedRandomForest, XGBoost ağırlıklandırma gibi yöntemleri karşılaştırın.
- Sonucu değerlendirin: Test setinde precision, recall ve F1 skorlarına bakın; eğer hala dengesizlik varsa farklı bir yaklaşım deneyin.
İhtiyacınıza göre, Karar Ağaçları vs Rastgele Orman yazımızda hangi modelin dengesiz verilerde daha iyi çalıştığını görebilirsiniz.
Dikkat Edilmesi Gerekenler
Veri dengesizliğini gidermek için veri setinizi eğitmeden önce dikkatli olun. Özellikle SMOTE kullanırken:
- SMOTE sınır bölgesindeki gürültüyü artırabilir, bu nedenle veri ön işleme adımlarını (aykırı değer temizliği vb.) tamamlayın.
- Çok dengesiz veri setlerinde (örneğin 1:100), SMOTE tek başına yetersiz kalabilir. Topluluk yöntemleri veya veri sentezleme (GAN tabanlı) teknikleri düşünün.
- Yeniden örnekleme sonrası modelin overfitting yapıp yapmadığını kontrol edin.
Sonuç
Dengesiz veri setleri, doğru yöntemler ve metrikler seçildiğinde aşılması zor olmayan bir engeldir. SMOTE, Random Undersampling ve topluluk yöntemleri, her duruma uygun bir çözüm sunar. Projenize en uygun tekniği seçmek için denemeler yapın ve doğrulama stratejinizi iyi belirleyin.
Sık Sorulan Sorular
SMOTE ile Random Oversampling arasındaki temel fark nedir?
Random Oversampling, azınlık sınıfındaki örnekleri kopyalayarak çoğaltırken, SMOTE mevcut örnekler arasında interpolasyon yaparak sentetik örnekler üretir. SMOTE, overfitting riskini azaltır ve genellikle daha iyi genelleme sağlar.
Dengesiz veri setlerinde accuracy neden yanıltıcıdır?
Accuracy, çoğunluk sınıfını doğru tahmin eden bir modeli yüksek puanla ödüllendirir. Örneğin %99 çoğunluk sınıfına sahip bir veride model tüm örnekleri çoğunluk sınıfı olarak tahmin etse %99 doğruluk alır, ancak azınlık sınıfını hiç yakalayamaz.
Random Undersampling'in dezavantajları nelerdir?
Random Undersampling, çoğunluk sınıfından rastgele örnekler çıkararak bilgi kaybına neden olur. Önemli örnekler kaçırılabilir ve modelin performansı düşebilir. Büyük veri setlerinde daha az sorun oluşturur.
Hangi topluluk yöntemi dengesiz verilerde daha iyidir: Random Forest mı XGBoost mu?
Her iki yöntem de başarılıdır. Random Forest, BalancedRandomForest gibi varyantlarla doğrudan dengesizlikle başa çıkabilir. XGBoost ise scale_pos_weight parametresiyle azınlık sınıfına ağırlık verir. Hangisinin daha iyi olduğu veriye bağlıdır; deneyerek karar vermek en doğrusudur.






