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.

Veri Dengesizliği Özeti: A ve B kategorileri, C ve D kategorilerine göre 10 kat daha fazla örneğe sahiptir. Bu durum, modelin azınlık sınıflarını (C ve D) doğru tahmin etme yeteneğini olumsuz etkiler.

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.

A Kategorisi için Metrik Hesaplaması Tahmin/Gerçek A (Gerçek) B (Gerçek) C (Gerçek) D (Gerçek) A (Tahmin) 85 True Positive 7 False Positive 4 False Positive 3 False Positive B (Tahmin) 10 False Negative 120 True Negative 3 True Negative 5 True Negative C (Tahmin) 3 False Negative 3 True Negative 2 True Negative 2 True Negative D (Tahmin) 2 False Negative 0 True Negative 1 True Negative 1 True Negative
A Kategorisi için Metrik Hesaplamaları

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

C Kategorisi için Metrik Hesaplaması Tahmin/Gerçek A (Gerçek) B (Gerçek) C (Gerçek) D (Gerçek) A (Tahmin) 85 True Negative 7 True Negative 4 False Negative 3 True Negative B (Tahmin) 10 True Negative 120 True Negative 3 False Negative 5 True Negative C (Tahmin) 3 False Positive 3 False Positive 2 True Positive 2 False Positive D (Tahmin) 2 True Negative 0 True Negative 1 False Negative 1 True Negative
C Kategorisi için Metrik Hesaplamaları
Temel Değerler
C kategorisi için karışıklık matrisinden elde edilen değerler:
  • 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
Adım Adım Metrik Hesaplamaları
1. Precision (Kesinlik)
Formül: Precision = TP / (TP + FP)
Hesaplama: 2 / (2 + 8) = 0.200 = %20.0
2. Recall (Duyarlılık)
Formül: Recall = TP / (TP + FN)
Hesaplama: 2 / (2 + 8) = 0.200 = %20.0
3. F1 Skoru
Formül: F1 = 2 * (Precision * Recall) / (Precision + Recall)
Hesaplama: 2 * (0.200 * 0.200) / (0.200 + 0.200) = 0.200 = %20.0
Sonuç
  • Precision: 0.200 (%20.0)
  • Recall: 0.200 (%20.0)
  • F1 Skoru: 0.200 (%20.0)
Bu değerler, modelin C kategorisini tespit etmede başarısız olduğunu göstermektedir.
Tüm Kategoriler için Metrik Karşılaştırması 0.0 0.2 0.4 0.6 0.8 1.0 Kategoriler Değer A (100 örnek) B (100 örnek) C (10 örnek) D (10 örnek) 0.86 0.85 0.85 0.87 0.92 0.90 0.20 0.20 0.20 0.25 0.09 0.13 Precision Recall F1 Skoru Yüksek örnek sayısı Düşük örnek sayısı Örnek sayısı azaldıkça performans düşüyor
Tüm Kategoriler için Hesaplanan Metrikler - Özet Tablo
Her kategori için hesaplanan precision, recall ve F1 skorlarının özetlendiği tablo:
Kategorilere Göre Metrikler
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
Hesaplama Detayları ve Formüller
Precision (Kesinlik): TP / (TP + FP)
Recall (Duyarlılık): TP / (TP + FN)
F1 Skoru: 2 * (Precision * Recall) / (Precision + Recall)
Ortalama Metrikler
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.
Veri Dengesizliğinin Etkisi
  • A ve B (100 örnek): F1 ≈ 0.85-0.90
  • C ve D (10 örnek): F1 ≈ 0.13-0.20
Kategorilere Göre Zorluk Derecesi
  1. B Kategorisi: F1 = 0.896
  2. A Kategorisi: F1 = 0.854
  3. C Kategorisi: F1 = 0.200
  4. D Kategorisi: F1 = 0.133
İyileştirme İçin Öncelikli Alanlar
  • D kategorisi için Recall değerini artırmak
  • C kategorisi için Precision ve Recall değerlerini artırmak
Bu amaçla; oversampling, SMOTE, sınıf ağırlıklandırma ve focal loss gibi yöntemler kullanılabilir.

Performans Metrikleri

Sınıflandırma performansını değerlendirmede kullanılan temel metrikler: Precision, Recall ve F1 Skorudur.

Temel Kavramlar

Formüller

Precision = TP / (TP + FP)
Recall = TP / (TP + FN)
F1 Score = 2 * (Precision * Recall) / (Precision + Recall)

Kategori Bazlı Metrikler

A Kategorisi

0.85

F1 Skoru

B Kategorisi

0.87

F1 Skoru

C Kategorisi

0.20

F1 Skoru

D Kategorisi

0.14

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
Azınlık sınıflarının düşük performansı makro-ortalamayı düşürür.

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
Büyük sınıfların etkisiyle daha yüksek görünür.

Mikro-ortalama

Tüm örnekler üzerinden hesaplanır.

  • Precision: 0.84
  • Recall: 0.80
  • F1 Skoru: 0.82
Büyük sınıfların etkisi nedeniyle yanıltıcı olabilir.

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

Dengeli Veri

Tüm sınıfların eşit temsil edildiği durumlarda model dengeli öğrenir.

Sonuç: Yüksek F1 skoru

Dengesiz Veri

Az temsil edilen sınıflar nedeniyle çoğunluk sınıflarına yanlılık oluşur.

Sonuç: C ve D için çok düşük F1 skoru

Dengesizliğin Temel Nedenleri

  1. Yetersiz Öğrenme: Az örnek, modelin doğru öğrenmesini engeller.
  2. Genelleme Zorluğu: Az örnekle yeni örneklere genelleme yapılamaz.
  3. Çoğunluk Sınıflarına Yanlılık: Model, çoğunluk sınıflarına odaklanır.
  4. 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
# C ve D kategorileri için veri artırma örneği
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
# Sınıf ağırlıklı Focal Loss implementasyonu
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ı

  1. 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.
  2. 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.
  3. İ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.
  4. 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.
  5. 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
Hedef:
0.50
D Kategorisi
Mevcut:
0.14
Hedef:
0.45
Makro F1 Skoru
Mevcut:
0.52
Hedef:
0.70

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:

Akademik Makaleler

  • "Learning from Imbalanced Data" - He & Garcia (2009)
  • "SMOTE: Synthetic Minority Over-sampling Technique" - Chawla et al.
  • "Focal Loss for Dense Object Detection" - Lin et al. (2017)
  • "Class-Balanced Loss Based on Effective Number of Samples" - Cui et al.

Kod Kütüphaneleri

  • imbalanced-learn (Python)
  • TensorFlow Addons
  • nlpaug
  • PyTorch SMOTE

Online Kurslar

  • "Practical Solutions for Class Imbalance" - Kaggle Courses
  • "Advanced NLP with BERT" - TensorFlow Data and Deployment Specialization
  • "Anomaly Detection in Time Series Data with Keras" - Coursera
  • "Machine Learning with Imbalanced Datasets" - edX