AI Atlas
Başlangıç· ~2 dk okuma#overfitting#generalization#regularization

Aşırı Öğrenme

Overfitting

Modelin eğitim verisini ezberleyip, daha önce görmediği yeni veride başarısız olması — makine öğrenmesinin en yaygın ve en tehlikeli tuzağı.

AŞIRI ÖĞRENMEdoğrulukepochEğitimDoğrulamaEğitim yükselirken doğrulama düşüyorsa: aşırı öğrenme.
Tanım

Aşırı öğrenme, modelin eğitim verisindeki örüntüleri yakalamak yerine gürültüyü ve özel durumları öğrenmesi durumudur. Eğitim doğruluğu sürekli yükselirken test doğruluğunun düşmesi klasik belirtidir. Model 'kendine fazla güveniyor' ama gerçek dünyada bu güveni karşılamaz.

Sebepler genelde şunlardır: model fazla esnek (çok parametre, çok derin ağaç, çok fazla iterasyon), eğitim verisi yetersiz veya çeşitlilikten yoksun, eğitim ile test arasındaki dağılım farkı ihmal edilmiş. Modelin "kapasitesi" verinin "söylediği örüntüden" büyükse, model gürültüyü de örüntü sanır.

Aşırı öğrenmeyi önlemenin standart araçları: doğrulama seti (validation), çapraz doğrulama (cross-validation), düzenlileştirme (regularization — L1, L2, dropout), erken durdurma (early stopping), veri artırma (data augmentation) ve daha fazla veri toplamak.

Benzetme

Bir öğrencinin sınav sorularını ezberlemesi gibidir. Sınıfta sorulan tüm soruları ezberlemiş, hepsini cevaplayabiliyor. Ama final sınavında soru biraz değişince donup kalıyor — çünkü konuyu anlamamış, sadece soru-cevap çiftlerini ezberlemiş. Eğitim doğruluğu %100, test doğruluğu %50. Aşırı öğrenmiş model işte tam olarak böyle bir öğrencidir.

Gerçek dünyadan örnek

Bir ekip 800 örneklik küçük bir veri setiyle dolandırıcılık tespit modeli eğitiyor. Random forest, max_depth sınırı yok, 1000 ağaç. Eğitim seti üzerinde %99.8 doğruluk. Heyecanla canlıya alınıyor. İlk hafta gerçek doğruluk %62. Müşteri şikayetleri patlıyor.

Sorun ortada: model 800 örneğin her detayını ezberlemişti. "Salı gecesi 23:14, restoran kategorisi, 487 TL = ham" gibi anlamsız ezberler yapmış. Yeniden eğitiliyor: max_depth=8, 100 ağaç, 5-fold cross-validation. Eğitim doğruluğu %88'e düştü ama test doğruluğu %85 kaldı. Ürün başarılı. Ezberi bırakmak doğruluğu artırdı.

Kod örnekleri
Aşırı öğrenmeyi yakalamanın hızlı yoluPython
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import learning_curve
import numpy as np
import matplotlib.pyplot as plt

# Eğitim ve doğrulama eğrilerini çiz
train_sizes, train_scores, val_scores = learning_curve(
    RandomForestClassifier(max_depth=None, n_estimators=300),
    X, y, cv=5,
    train_sizes=np.linspace(0.1, 1.0, 8),
    scoring="f1_macro",
)

plt.plot(train_sizes, train_scores.mean(axis=1), label="Eğitim")
plt.plot(train_sizes, val_scores.mean(axis=1), label="Doğrulama")
plt.xlabel("Eğitim örneği sayısı")
plt.ylabel("F1")
plt.legend()
plt.savefig("learning_curve.png")

# Eğitim ile doğrulama arasındaki büyük makas → aşırı öğrenme
gap = train_scores.mean(axis=1)[-1] - val_scores.mean(axis=1)[-1]
print(f"Eğitim-doğrulama makası: {gap:.3f}")
Ne zaman kullan
  • Bu bir konsept; her ML iş akışında kontrol etmen gereken bir tuzak
Ne zaman kullanma
  • Bu bir konsept; sürekli takipte olunması gerekir
Sık yapılan hatalar

Sadece eğitim doğruluğuna bakmak

Eğitim seti %99 doğru → 'model harika' demek en eski hatadır. Validation/test seti olmadan model kalitesi hakkında bir şey bilemezsin.

Test setine 'biraz' bakmak

Test setine birkaç kez bakıp hiperparametre ayarlamak, test setini sızdırır. Eğitim, validation, test üçlüsünü ayır; test setine sadece final değerlendirmesinde dokun.

Cross-validation sonucu yanlış yorumlamak

Çapraz doğrulama makul bir tahmin verir ama eğitim verisinin temsil ettiği dünyanın dışına çıkıldığında hâlâ patlayabilir. Domain shift, distribution drift kontrol edilmeli.