Dengesiz veri kümeleri, bir sınıfın diğerine göre çok daha az örneğe sahip olduğu durumlardır ve standart sınıflandırma algoritmaları çoğunluk sınıfına yanlılık gösterir. Bu yazıda, SMOTE (Synthetic Minority Over-sampling Technique) başta olmak üzere örnekleme stratejilerini adım adım uygulayarak model performansınızı nasıl artıracağınızı göreceksiniz.
Dengesiz Veri Nedir ve Neden Sorun Oluşturur?
Dengesiz veri, bir sınıfın (azınlık sınıfı) toplam veri içinde çok düşük oranda temsil edilmesidir. Örneğin, dolandırıcılık tespiti veri setinde dolandırıcı işlemler %1 iken normal işlemler %99 oranındadır. Standart modeller bu durumda çoğunluk sınıfına aşırı uyum gösterir ve azınlık sınıfını yok sayar. Sonuç olarak doğruluk yüksek görünse de gerçek dünya performansı düşüktür. Bunu aşmak için veri düzeyinde veya algoritma düzeyinde yöntemler kullanılır. Bu rehberde veri düzeyindeki örnekleme stratejilerine odaklanacağız.
Adım Adım Dengesiz Veri ile Çalışma Rehberi
Aşağıdaki adımları sırasıyla uygulayarak dengesiz veri setinizi dengeleyebilir ve sınıflandırma başarımınızı artırabilirsiniz.
- Veri Setini İnceleyin ve Hedef Değişkeni Belirleyin
İlk adım, sınıf dağılımını kontrol etmektir. value_counts() veya benzeri bir yöntemle azınlık ve çoğunluk sınıflarının oranını hesaplayın. Örneğin, %95-%5 oranı dengesiz kabul edilir. Bu aşamada ayrıca eksik veri ve aykırı değerleri de temizleyin. - Veriyi Eğitim ve Test Olarak Ayırın
Veriyi eğitim ve test setlerine ayırırken tabakalı (stratified) bölme kullanın. Bu, her iki sette de orijinal sınıf oranlarının korunmasını sağlar. train_test_split fonksiyonundastratify=yparametresini kullanabilirsiniz. - Temel Model Oluşturun ve Performansı Ölçün
Örnekleme yapmadan önce bir temel model (örneğin Lojistik Regresyon veya Rastgele Orman) eğitin. Performansı doğruluk yerine hassasiyet, duyarlılık, F1 skoru ve AUC-ROC gibi metriklerle değerlendirin. Dengesiz veride doğruluk yanıltıcı olabilir. - Rastgele Alt Örnekleme (Random Undersampling) Uygulayın
Çoğunluk sınıfından rastgele örnekler çekerek sayıyı azınlık sınıfına eşitleyin. Bu yöntem basittir ancak bilgi kaybına yol açabilir. imbalanced-learn kütüphanesindekiRandomUnderSamplerile uygulayın. Eğitim setine uygulayın, test setine dokunmayın. - Rastgele Üst Örnekleme (Random Oversampling) Uygulayın
Azınlık sınıfından rastgele kopyalar çıkararak sayıyı artırın.RandomOverSamplerile kolayca yapılır. Ancak aşırı öğrenmeye (overfitting) yol açabilir, çünkü aynı örnekleri tekrarlar. - SMOTE (Synthetic Minority Over-sampling Technique) Kullanın
SMOTE, azınlık sınıfındaki örnekler arasında enterpolasyon yaparak sentetik veri üretir.SMOTEsınıfını kullanarak yeni örnekler oluşturun. Parametre olaraksampling_strategyile hedef oranı belirleyebilirsiniz. SMOTE, rastgele üst örneklemeye göre daha başarılıdır ancak komşu sayısı (k_neighbors) gibi hiperparametrelere duyarlıdır. Bu noktada erken durdurma gibi tekniklerle aşırı öğrenmeyi önleyebilirsiniz. - Hibrit Yöntemler: SMOTE + Tomek Links veya SMOTE + ENN
SMOTE'u alt örnekleme ile birleştirerek daha temiz bir veri seti elde edin.SMOTETomekveyaSMOTEENNsınıflarını kullanarak önce sentetik veri oluşturup ardından gürültülü örnekleri temizleyin. Bu yöntemler genellikle tek başına SMOTE'tan daha iyi sonuç verir. - Modeli Yeniden Eğitin ve Hiperparametre Optimizasyonu Yapın
Örnekleme sonrası eğitim seti ile modeli yeniden eğitin. Hiperparametreleri ayarlamak için hiperparametre optimizasyonu araçlarını kullanabilirsiniz. GridSearchCV veya RandomizedSearchCV ile en iyi parametreleri bulun. Bu aşamada çapraz doğrulama yaparken sınıf dengesini korumak için tabakalı katlama (StratifiedKFold) kullanmayı unutmayın. - Performansı Değerlendirin ve Karşılaştırın
Tüm yöntemleri (undersampling, oversampling, SMOTE, hibrit) aynı test seti üzerinden değerlendirin. Duyarlılık (recall), hassasiyet (precision), F1 ve AUC-ROC metriklerini karşılaştırın. Ayrıca karmaşıklık matrisi (confusion matrix) ile yanlış sınıflandırmaları görün. - En İyi Yöntemi Seçin ve Raporlayın
Projenize en uygun yöntemi seçin. Unutmayın ki her veri seti farklıdır; SMOTE her zaman en iyisi olmayabilir. Bazı durumlarda basit alt örnekleme yeterli olabilir. Kararınızı metrikler ve iş hedefleriniz doğrultusunda verin.
Sık Yapılan Hatalar ve Dikkat Edilmesi Gereken Noktalar
- Test setine örnekleme uygulamayın: Örnekleme yalnızca eğitim setine uygulanmalıdır. Test seti orijinal dağılımını korumalıdır.
- Aşırı öğrenmeyi izleyin: Özellikle rastgele üst örnekleme ve SMOTE aşırı öğrenmeye neden olabilir. Modelin eğitim ve test performansı arasındaki farkı kontrol edin. Zaman serisi çapraz doğrulama benzeri veri sızıntısına dikkat edin.
- Hiperparametreleri ihmal etmeyin: SMOTE'un k_neighbors değeri, alt örnekleme stratejisi gibi parametreler sonucu etkiler. Bunları optimize edin.
- Metrik seçimi: Doğruluk yerine F1 ve AUC-ROC gibi dengesiz veriye duyarlı metrikler kullanın.
Sonuç
Dengesiz veri kümeleriyle çalışırken SMOTE ve diğer örnekleme stratejileri etkili çözümler sunar. Bu adımları izleyerek model başarımınızı önemli ölçüde artırabilirsiniz. Her yöntem veri setinize göre farklı sonuç verebilir; bu nedenle birden fazla yöntemi deneyip metriklerle karşılaştırma yapmanız önerilir.
Sık Sorulan Sorular
SMOTE nedir ve nasıl çalışır?
SMOTE (Synthetic Minority Over-sampling Technique), azınlık sınıfındaki örnekler arasında enterpolasyon yaparak sentetik veri üreten bir yöntemdir. Bir örnek ve en yakın komşuları arasındaki farkı alarak yeni örnekler oluşturur, böylece rastgele kopyalamaya göre daha çeşitli bir veri seti elde edilir.
Dengesiz veri için hangi metrikler kullanılmalıdır?
Doğruluk (accuracy) dengesiz veride yanıltıcı olabileceğinden, F1 skoru, duyarlılık (recall), hassasiyet (precision) ve AUC-ROC gibi metrikler tercih edilmelidir. Bu metrikler azınlık sınıfının performansını daha iyi yansıtır.
SMOTE her zaman en iyi yöntem midir?
Hayır, SMOTE her veri seti için en iyi yöntem olmayabilir. Bazı durumlarda alt örnekleme veya hibrit yöntemler (SMOTE+Tomek Links) daha iyi sonuç verebilir. Veri setinizin yapısına ve gürültü seviyesine bağlı olarak farklı yöntemleri denemek gerekir.
Örnekleme yaparken dikkat edilmesi gereken en önemli şey nedir?
En önemli kural, örnekleme işlemini yalnızca eğitim setine uygulamak ve test setini orijinal haliyle bırakmaktır. Ayrıca aşırı öğrenmeyi önlemek için model performansını eğitim ve test setlerinde düzenli olarak kontrol edin.






