Dengesiz veri setleri, sınıflardan birinin diğerine göre çok daha az örneğe sahip olduğu durumdur. Bu durum, makine öğrenmesi modellerinin çoğunluk sınıfına aşırı uyum sağlamasına ve azınlık sınıfını yok saymasına neden olur. Peki, dengesiz veri setlerini nasıl ele almalısınız? İşte SMOTE ve diğer pratik stratejilerle adım adım rehber.
Dengesiz Veri Seti Nedir ve Neden Sorun Oluşturur?
Dengesiz veri setinde bir sınıf (çoğunluk) diğerine (azınlık) kıyasla büyük oranda daha fazla örneğe sahiptir. Örneğin, 1000 müşteriden sadece 10'unun dolandırıcılık yaptığı bir veri seti. Standart bir sınıflandırma modeli tüm örnekleri çoğunluk sınıfına atayarak %99 doğruluk elde edebilir, ancak azınlık sınıfını hiç yakalayamaz. Bu, özellikle sahtekarlık tespiti, tıbbi teşhis gibi alanlarda ciddi sonuçlar doğurur. Modelin gerçek performansını değerlendirmek için doğruluk yerine F1-skoru, hassasiyet (recall) ve kesinlik (precision) gibi metrikleri kullanmak gerekir.
SMOTE (Synthetic Minority Over-sampling Technique) Nedir?
SMOTE, azınlık sınıfının sentetik örneklerini oluşturan bir aşırı örnekleme (oversampling) yöntemidir. Rastgele kopyalama yerine, azınlık sınıfındaki mevcut örnekler arasında enterpolasyon yaparak yeni, gerçekçi örnekler üretir. Adımları şöyledir:
- Azınlık sınıfından bir örnek seçilir.
- Bu örneğin k en yakın komşusu (genelde k=5) belirlenir.
- Rastgele bir komşu seçilir ve iki örnek arasındaki farkın 0 ile 1 arasındaki bir rastgele sayı ile çarpılmasıyla yeni bir sentetik örnek oluşturulur.
Bu yöntem, aşırı uyum riskini azaltır ve modelin azınlık sınıfını daha iyi öğrenmesini sağlar. Ancak sentetik örnekler bazen gürültülü olabilir veya sınıf sınırlarını gereksiz yere genişletebilir.
SMOTE'a Alternatif Stratejiler
Rastgele Aşırı Örnekleme (Oversampling)
Azınlık sınıfındaki örnekleri rastgele kopyalayarak sınıf dengesini sağlar. Basit ve hızlıdır, ancak aşırı uyuma neden olabilir çünkü birebir kopyalar modele fazla ağırlık verir.
Rastgele Eksik Örnekleme (Undersampling)
Çoğunluk sınıfından rastgele örnekler çıkararak denge sağlar. İşlem hızını artırır ancak önemli bilgiler kaybolabilir. Özellikle çoğunluk sınıfı çok heterojense modelin genellemesi zayıflayabilir.
SMOTE Türevleri (Borderline-SMOTE, ADASYN)
Borderline-SMOTE, sınıf sınırına yakın örnekleri daha fazla önemseyerek sentetik örnek üretir. ADASYN ise öğrenmesi zor olan örneklere odaklanarak uyarlanabilir sentez yapar.
SMOTE Ne Zaman Kullanılmalı?
SMOTE, özellikle aşağıdaki durumlarda etkilidir:
- Azınlık sınıfı çok küçük (örneğin %1'den az).
- Veri setinde gürültü düşük ve sınıflar arasında belirgin ayrım var.
- Model karmaşık (derin öğrenme gibi) ve daha fazla veriye ihtiyaç duyuyor.
Ancak çok büyük veri setlerinde SMOTE hesaplama maliyeti artırabilir. Ayrıca sentetik örnekler gerçek dünyada anlamsız olabilir (örneğin tıbbi verilerde).
Pratik Adımlar: SMOTE ile Uygulama
Aşağıdaki adımlar, Python ve scikit-learn ile SMOTE uygulamak için bir rehberdir:
- Veri ön işleme: Eksik değerleri doldurun ve kategorik değişkenleri kodlayın. Feature Scaling de önemlidir; SMOTE uzaklık tabanlı olduğu için ölçeklendirme yapılmalıdır.
- Veriyi bölün: Eğitim ve test setlerine ayırın. SMOTE'u sadece eğitim setine uygulayın, test setini orijinal dağılımda bırakın.
- SMOTE uygulayın:
from imblearn.over_sampling import SMOTEile azınlık sınıfını istenen orana kadar çoğaltın. - Model eğitimi: Sınıflandırıcıyı (örneğin Random Forest) eğitin. K-fold Cross-Validation kullanarak modelin stabilitesini değerlendirin.
- Değerlendirme: F1-skoru, recall ve precision gibi metrikleri kullanın. Aşırı uyumu kontrol etmek için L1/L2 düzenlileştirme eklenebilir.
Karşılaştırma Tablosu: SMOTE vs Alternatifler
| Yöntem | Avantajlar | Dezavantajlar |
|---|---|---|
| SMOTE | Sentetik örneklerle aşırı uyumu azaltır | Gürültü yaratabilir, büyük veri setlerinde yavaş |
| Rastgele Oversampling | Basit, hızlı | Aşırı uyum riski yüksek |
| Rastgele Undersampling | Hızlı, küçük veri setleri için uygun | Bilgi kaybı, model başarımı düşebilir |
| Borderline-SMOTE | Sınıf sınırlarına odaklanır | Gürültüye daha duyarlı |
Dikkat Edilmesi Gerekenler ve Sık Yapılan Hatalar
- Test setine SMOTE uygulamayın: Bu, gerçek dünya performansını yanıltır.
- Aşırı örnekleme oranını makul tutun: %100 denge hedeflemek yerine %70-80 gibi oranlar deneyin.
- Model seçimi: Ağaç tabanlı modeller (Random Forest, XGBoost) dengesiz veriye karşı daha dayanıklıdır; her zaman SMOTE gerekmeyebilir.
- Veri sızıntısına dikkat: SMOTE uygulamadan önce veriyi bölün, aksi halde model test setindeki bilgileri sızdırmış olur.
Dengesiz veri setleri üzerinde çalışırken tek bir yönteme bağlı kalmayın. Farklı kombinasyonlar (SMOTE + undersampling) ve ensemble teknikleri (EasyEnsemble, BalanceCascade) de denenebilir. Unutmayın, en iyi yöntem verinize ve probleminize bağlıdır; denemeler yaparak en uygun stratejiyi bulun.
Sık Sorulan Sorular
SMOTE nedir ve ne zaman kullanılmalıdır?
SMOTE, azınlık sınıfının sentetik örneklerini oluşturan bir aşırı örnekleme yöntemidir. Özellikle azınlık sınıfı çok küçük olduğunda (%1-2 arası) ve veri setinde gürültü düşükse kullanılması önerilir.
SMOTE ile rastgele oversampling arasındaki fark nedir?
Rastgele oversampling mevcut örnekleri kopyalarken, SMOTE enterpolasyon ile yeni sentetik örnekler üretir. SMOTE aşırı uyum riskini azaltır, ancak rastgele oversampling daha basit ve hızlıdır.
SMOTE uygularken veri sızıntısını nasıl önlerim?
SMOTE'u yalnızca eğitim setine uygulayın. Veriyi eğitim ve test olarak ayırdıktan sonra aşırı örnekleme yapın. Test setine herhangi bir sentetik örnek eklemeyin.
Dengesiz veri setlerinde SMOTE dışında hangi yöntemler etkilidir?
Undersampling, borderline-SMOTE, ADASYN, ensemble yöntemleri (EasyEnsemble, BalanceCascade) ve maliyet duyarlı öğrenme (cost-sensitive learning) diğer etkili stratejilerdir.
SMOTE her zaman başarılı mıdır?
Hayır, SMOTE her senaryoda işe yaramaz. Veri setinde çok fazla gürültü varsa veya azınlık sınıfı çok seyrek dağılmışsa, sentetik örnekler anlamsız olabilir. Bu durumda farklı yöntemler denenmelidir.






