Bilişim dünyasına kaliteli, özgün ve Türkçe içerikler kazandırmayı hedefleyen bir platform..

friends friends friends

Alt Örnekleme (under-sampling) Yöntemi

Veri setindeki sınıf dengesizliğini azaltmak için alt örnekleme (under-sampling) yöntemi uygulanarak model eğitimi dengeli hale getirilebilmektedir.

Bu ifadeyi en net şekilde Python’da alt örnekleme (under-sampling) ile göstermek için genellikle imbalanced-learn kütüphanesindeki RandomUnderSampler kullanılır.

Aşağıdaki örnek, sınıf dengesiz bir veri setini dengeleyip modeli eğitime hazır hale getirir:

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
from imblearn.under_sampling import RandomUnderSampler

# X: özellikler, y: sınıf etiketleri (0 = sağlıklı, 1 = hasta gibi)

# 1. Veriyi train-test olarak ayır
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)

# 2. Alt örnekleme (under-sampling) uygula
rus = RandomUnderSampler(random_state=42)
X_train_resampled, y_train_resampled = rus.fit_resample(X_train, y_train)

# 3. Modeli dengelenmiş veri ile eğit
model = RandomForestClassifier(random_state=42)
model.fit(X_train_resampled, y_train_resampled)

# 4. Test et
y_pred = model.predict(X_test)

print(classification_report(y_test, y_pred))

Bu kod ne yapıyor?

  1. Orijinal veri: Dengesiz (örneğin 90% sınıf 0, 10% sınıf 1)
  2. RandomUnderSampler: Çoğunluk sınıfından rastgele örnekleri azaltır ve Azınlık sınıfına eşitler
  3. Sonuç: Model “çoğunluğu ezberlemek” yerine daha dengeli öğrenir

tezlerde genelde SMOTE (oversampling) versiyonu ile birlikte karşılaştırılır.

SMOTE (Synthetic Minority Over-sampling Technique)

SMOTE (Synthetic Minority Over-sampling Technique) kullanarak azınlık sınıfı "gerçek gibi yeni örneklerle" büyütüyoruz. Yani veri setine rastgele kopya eklemek yerine, aradaki boşluklardan sentetik veri üretir.

Aşağıdaki kod, under-sampling örneğinin SMOTE karşılığıdır:

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
from imblearn.over_sampling import SMOTE

# X: özellikler, y: sınıf etiketleri

# 1. Train-test split
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)

# 2. SMOTE ile oversampling (azınlık sınıfı artırılır)
smote = SMOTE(random_state=42)
X_train_resampled, y_train_resampled = smote.fit_resample(X_train, y_train)

# 3. Model eğitimi (dengelenmiş veri ile)
model = RandomForestClassifier(random_state=42)
model.fit(X_train_resampled, y_train_resampled)

# 4. Tahmin ve değerlendirme
y_pred = model.predict(X_test)

print(classification_report(y_test, y_pred))

SMOTE burada ne yapıyor?

  1. Azınlık sınıfındaki örnekleri kopyalamaz
  2. Onların komşu örneklerine bakarak yeni sentetik noktalar üretir
  3. Böylece veri “yapay ama gerçekçi” şekilde dengelenir

Under-sampling vs SMOTE (kısa fark)

  1. Under-sampling → çoğunluğu azaltır (veri kaybı var)
  2. SMOTE → azınlığı artırır (veri kaybı yok, ama sentetik veri var)
0 Beğeni
Makine Öğrenmesi
Önceki Yazı

Akademik Makale Taslak

09 May. 2026 tarihinde yayınlandı.
Sonraki Yazı

Elbow Method

09 May. 2026 tarihinde yayınlandı.
arrow