Dengesiz Veri Setlerinde Sınıflandırma
Dengesiz veri dağılımı olan datalarla çalışırken doğru metrik seçimi ve performans optimizasyonu
Giriş
Makine öğrenmesi projelerindeki en zorlu problemlerden biri, dengesiz veri setleriyle çalışmaktır. Dengesiz veri seti, bazı sınıfların diğerlerine göre çok daha az örneğe sahip olduğu durumlarda ortaya çıkar.
Bu öğreticide, A, B, C ve D kategorilerine sahip, son derece dengesiz bir veri seti üzerinde eğitilmiş bir BERT modelini ele alacağız.
Kategori Başına Örnek Sayısı
Kategori | Örnek Sayısı | Veri Dağılımı |
---|---|---|
A Kategorisi | 100 |
|
B Kategorisi | 100 |
|
C Kategorisi | 10 | |
D Kategorisi | 10 |
Tablo ve grafikten de görüldüğü üzere, A ve B kategorileri 100’er örnek; C ve D kategorileri ise 10’ar örneğe sahiptir. Bu dengesizlik, model performansını önemli ölçüde etkilemektedir.
Karışıklık Matrisi
Modelin performansını değerlendirmek için karışıklık matrisi, gerçek ve tahmin edilen sınıfları gösterir.
Tahmin/Gerçek | A (Gerçek) | B (Gerçek) | C (Gerçek) | D (Gerçek) |
---|---|---|---|---|
A (Tahmin) | 85 | 7 | 4 | 3 |
B (Tahmin) | 10 | 120 | 3 | 5 |
C (Tahmin) | 3 | 3 | 2 | 2 |
D (Tahmin) | 2 | 0 | 1 | 1 |
Karışıklık matrisinden; A ve B kategorileri için modelin performansı iyi, ancak C ve D kategorileri için zayıf olduğu gözlemlenmektedir.
Temel Değerler
A kategorisi için karışıklık matrisinden şu değerleri elde ediyoruz:
- True Positive (TP) = 85
A olarak tahmin edilen gerçek A örnekleri - False Positive (FP) = 7 + 4 + 3 = 14
Gerçekte A olmayan, ancak A olarak tahmin edilen örnekler- B'den 7 örnek
- C'den 4 örnek
- D'den 3 örnek
- False Negative (FN) = 10 + 3 + 2 = 15
Gerçekte A olan, ancak A olarak tahmin edilmeyen örnekler- B olarak tahmin edilen 10 örnek
- C olarak tahmin edilen 3 örnek
- D olarak tahmin edilen 2 örnek
- True Negative (TN) = 120 + 3 + 5 + 3 + 2 + 2 + 0 + 1 + 1 = 137
A olmayan ve A olarak tahmin edilmeyen örnekler
Adım Adım Metrik Hesaplamaları
1. Precision (Kesinlik)
Precision = TP / (TP + FP)
Precision = 85 / (85 + 14) = 85 / 99 ≈ 0.859 = %85.9
2. Recall (Duyarlılık)
Recall = TP / (TP + FN)
Recall = 85 / (85 + 15) = 85 / 100 = 0.85 = %85
3. F1 Skoru
F1 = 2 * (Precision * Recall) / (Precision + Recall)
F1 ≈ 2 * (0.859 * 0.85) / (0.859 + 0.85) ≈ 0.854 = %85.4
- True Positive (TP) = 2
- False Positive (FP) = 3 + 3 + 2 = 8
- A'dan 3 örnek
- B'den 3 örnek
- D'den 2 örnek
- False Negative (FN) = 4 + 3 + 1 = 8
- A olarak tahmin edilen 4 örnek
- B olarak tahmin edilen 3 örnek
- D olarak tahmin edilen 1 örnek
- True Negative (TN) = 233
- Precision: 0.200 (%20.0)
- Recall: 0.200 (%20.0)
- F1 Skoru: 0.200 (%20.0)
Kategori | Örnek Sayısı | Precision | Recall | F1 Skoru | TP | FP | FN | TN |
---|---|---|---|---|---|---|---|---|
A | 100 | 0.859 | 0.85 | 0.854 | 85 | 14 | 15 | 137 |
B | 100 | 0.870 | 0.923 | 0.896 | 120 | 18 | 10 | 103 |
C | 10 | 0.200 | 0.20 | 0.200 | 2 | 8 | 8 | 233 |
D | 10 | 0.250 | 0.091 | 0.133 | 1 | 3 | 10 | 237 |
Ortalama Türü | Precision | Recall | F1 Skoru | Açıklama |
---|---|---|---|---|
Makro-ortalama | 0.545 | 0.516 | 0.521 | Her sınıfa eşit ağırlık verir. |
Ağırlıklı Ortalama | 0.807 | 0.789 | 0.798 | Sınıf örnek sayılarına göre ağırlıklandırılır. |
Mikro-ortalama | 0.840 | 0.800 | 0.820 | Tüm sınıflar üzerinden hesaplanır. |
- A ve B (100 örnek): F1 ≈ 0.85-0.90
- C ve D (10 örnek): F1 ≈ 0.13-0.20
- B Kategorisi: F1 = 0.896
- A Kategorisi: F1 = 0.854
- C Kategorisi: F1 = 0.200
- D Kategorisi: F1 = 0.133
- D kategorisi için Recall değerini artırmak
- C kategorisi için Precision ve Recall değerlerini artırmak
Performans Metrikleri
Sınıflandırma performansını değerlendirmede kullanılan temel metrikler: Precision, Recall ve F1 Skorudur.
Temel Kavramlar
- True Positive (TP): Doğru pozitif tahminler
- False Positive (FP): Yanlış pozitif tahminler
- False Negative (FN): Yanlış negatif tahminler
- True Negative (TN): Doğru negatif tahminler
Formüller
Recall = TP / (TP + FN)
F1 Score = 2 * (Precision * Recall) / (Precision + Recall)
Kategori Bazlı Metrikler
A Kategorisi
F1 Skoru
B Kategorisi
F1 Skoru
C Kategorisi
F1 Skoru
D Kategorisi
F1 Skoru
Kategori Bazlı Performans Metrikleri
Kategori | Precision | Recall | F1 Skoru | Performans Düzeyi |
---|---|---|---|---|
A Kategorisi | 0.85 | 0.85 | 0.85 | ✓ İyi |
B Kategorisi | 0.89 | 0.86 | 0.87 | ✓ İyi |
C Kategorisi | 0.20 | 0.20 | 0.20 | ✗ Çok Düşük |
D Kategorisi | 0.25 | 0.10 | 0.14 | ✗ Çok Düşük |
Ortalama Metrikler
Makro-ortalama
Her sınıfa eşit ağırlık verilir.
- Precision: 0.55
- Recall: 0.50
- F1 Skoru: 0.52
Ağırlıklı Ortalama
Sınıf büyüklüklerine göre ağırlıklandırılır.
- Precision: 0.81
- Recall: 0.79
- F1 Skoru: 0.80
Mikro-ortalama
Tüm örnekler üzerinden hesaplanır.
- Precision: 0.84
- Recall: 0.80
- F1 Skoru: 0.82
Dengesizlik Analizi
Veri setindeki aşırı dengesizlik model performansını ciddi biçimde etkilemektedir. Bu bölümde, dengesizliğin etkileri analiz edilmiştir.
Dengesizliğin Ana Etkileri
- Makro vs Ağırlıklı Ortalama Farkı: Büyük fark, azınlık sınıflarında başarısızlığı gösterir.
- Düşük Recall: C ve D için düşük recall, modelin bu sınıfları tanımakta zorlandığını gösterir.
- Hatalı Tahmin Dağılımı: Karışıklık matrisinde C ve D örneklerinin A ve B olarak yanlış sınıflandırılması.
Dengeli Veri
Tüm sınıfların eşit temsil edildiği durumlarda model dengeli öğrenir.
Dengesiz Veri
Az temsil edilen sınıflar nedeniyle çoğunluk sınıflarına yanlılık oluşur.
Dengesizliğin Temel Nedenleri
- Yetersiz Öğrenme: Az örnek, modelin doğru öğrenmesini engeller.
- Genelleme Zorluğu: Az örnekle yeni örneklere genelleme yapılamaz.
- Çoğunluk Sınıflarına Yanlılık: Model, çoğunluk sınıflarına odaklanır.
- Karar Sınırı Problemi: Az örnek, doğru sınırları belirlemeyi zorlaştırır.
Çözüm Stratejileri
Dengesiz veri setlerinde model performansını artırmak için çeşitli stratejiler uygulanabilir:
1. Veri Dengeleme Teknikleri
Az temsil edilen sınıflar için veri artırma ve çoğaltma teknikleri:
- Oversampling: C ve D kategorileri için veri sayısını artırma
- SMOTE: Sentetik örnekler oluşturma
- Veri Artırma: Metin verileri için augmentasyon teknikleri
from nlpaug.augmenter.word import SynonymAug
syn_aug = SynonymAug()
augmented_samples = []
for text, label in minority_samples:
for _ in range(50):
aug_text = syn_aug.augment(text)
augmented_samples.append((aug_text, label))
2. Model İyileştirme Stratejileri
Modelin eğitim sürecini optimize etmek:
- Sınıf Ağırlıklandırma: C ve D kategorilerine yüksek ağırlık verilmesi
- Focal Loss: Zor örneklere odaklanan kayıp fonksiyonu
- Eşik Optimizasyonu: Düşük tahmin eşikleri belirleme
class FocalLoss(nn.Module):
def __init__(self, alpha, gamma=2.0):
super(FocalLoss, self).__init__()
self.alpha = alpha
self.gamma = gamma
def forward(self, inputs, targets):
CE_loss = F.cross_entropy(inputs, targets, reduction='none', weight=self.alpha)
pt = torch.exp(-CE_loss)
F_loss = (1 - pt)**self.gamma * CE_loss
return torch.mean(F_loss)
# A:1, B:1, C:25, D:25 ağırlıkları
class_weights = torch.tensor([1.0, 1.0, 25.0, 25.0])
criterion = FocalLoss(alpha=class_weights, gamma=3.0)
3. Ensemble Yöntemleri
Birden çok modeli birleştirerek performansı artırma:
- Çoklu Model Entegrasyonu: Farklı stratejilerle eğitilmiş modellerin kombinasyonu
- Bagging ve Boosting: AdaBoost veya Gradient Boosting kullanımı
- Cascade Sınıflandırma: Aşamalı sınıflandırma yaklaşımı
4. İleri Seviye Teknikler
Derin öğrenme ve meta-öğrenme yaklaşımları:
- Few-Shot Learning: Az örnekle öğrenme teknikleri
- Meta-Learning: MAML veya Prototypical Networks
- Aktif Öğrenme: En bilgilendirici örneklerin seçimi
Bu teknikler, özellikle az veri bulunan durumlarda modelin genelleme yeteneğini artırır.
Pratik Uygulama Adımları
Dengesiz Veri Seti İyileştirme Planı
-
Veri Artırma: C ve D kategorileri için 50-100 kat veri
artırma uygulayın.
Backtranslation, kelime değiştirme ve SMOTE teknikleri kullanın.
-
Sınıf Ağırlıklandırma: C ve D için yüksek ağırlıklar
(25-50x) kullanın.
Focal Loss ile azınlık sınıflarına daha fazla önem verin.
-
İki Aşamalı Eğitim: Önce genel eğitim, sonra azınlık
sınıflarına odaklı ince ayar yapın.
İkinci aşamada öğrenme oranını düşürün (örneğin 5e-6) ve daha uzun eğitim yapın.
-
Eşik Optimizasyonu: C ve D için düşük eşik değerleri
belirleyin (0.2-0.3).
Precision’dan ödün vererek recall’u artırın.
-
Ensemble Modeller: Farklı stratejilerle eğitilmiş
modelleri birleştirin.
C ve D odaklı modellere daha yüksek ağırlık verin (0.3-0.4).
Beklenen İyileştirme
C Kategorisi
D Kategorisi
Makro F1 Skoru
Gerçek Dünya Uygulamaları
Dengesiz veri setleri, gerçek dünyada çeşitli alanlarda karşımıza çıkar. İşte bazı örnek senaryolar:
Tıbbi Teşhis
Nadir hastalıkların teşhisi, doğal olarak dengesiz veri setleri içerir.
Problem:
- Nadir hastalık verileri çok sınırlı
- Yanlış negatifler ciddi sonuçlar doğurabilir
Çözüm:
- Yanlış negatiflerin maliyetini artıracak özel kayıp fonksiyonları
- Farklı hastalık aşamalarından örneklerle sentetik veri oluşturma
- Few-shot learning teknikleri
Dolandırıcılık Tespiti
Finansal dolandırıcılık tespiti genellikle aşırı dengesiz veriler içerir.
Problem:
- Dolandırıcılık işlemleri toplam işlemlerin çok küçük bir yüzdesini oluşturur
- Desenler hızla değişir
Çözüm:
- Anormallik tespiti ve one-class sınıflandırma
- Zaman bazlı örnekleme
- Aktif öğrenme ile etiketleme verimliliğini artırma
Arıza Tespiti
Endüstriyel ekipmanlarda arıza tespiti, sınırlı arıza verisi nedeniyle zorlayıcıdır.
Problem:
- Gerçek arıza verisi azdır
- Her arıza türü için yeterli örnek bulunmayabilir
Çözüm:
- Fizik tabanlı simülasyonlar ile arıza verisi oluşturma
- Transfer öğrenme
- Hibrit denetimli/denetimsiz öğrenme yöntemleri
İleri Kaynaklar
Dengesiz veri setleriyle sınıflandırma konusunda daha fazla bilgi edinmek için aşağıdaki kaynaklara göz atabilirsiniz: