Overfitting ve underfitting neden bu kadar önemli?
Makine öğreniminde hedef yalnızca eğitim verisinde iyi sonuç almak değildir; asıl amaç, modelin görülmemiş yeni verilerde de tutarlı performans göstermesidir. Bu noktada iki klasik sorun karşımıza çıkar:
- Overfitting (aşırı öğrenme): Model eğitim verisini fazla “ezberler” ve yeni örneklerde performansı düşer.
- Underfitting (yetersiz öğrenme): Model, eğitim verisinde bile yeterince iyi öğrenemez; genellikle çok basit kalır veya temsil gücü yetersizdir.
Bu iki kavram, pratikte doğru teşhis ve doğru müdahale olmadan deneme-yanılmayı uzatabilir. Aşağıdaki bölümlerde, gerçek projelerde işinize yarayacak şekilde tespit ve önleme adımlarını bir araya getiriyoruz.
Hızlı tanımlar: Overfitting ve underfitting
Overfitting (aşırı öğrenme) nedir?
Overfitting, modelin eğitim verisinde hatayı çok düşürmesine rağmen validasyon/test gibi eğitimde görülmeyen veride hatanın daha yüksek kalması veya zamanla artması durumudur. Pratikte bu, eğitim metriği iyileşirken validasyon metriğinin iyileşmemesi veya eğrilerin ayrışması olarak gözlenir. (Kaynak: Google Machine Learning Crash Course)
Underfitting (yetersiz öğrenme) nedir?
Underfitting ise modelin eğitim setinde bile tatmin edici performans verememesidir. Bu; modelin aşırı basit olması, özelliklerin (feature’ların) yetersizliği veya eğitimin/optimizasyonun doğru yapılandırılmaması gibi nedenlerden kaynaklanabilir. (Kaynaklar: Google ML Crash Course, scikit-learn örneği)
Belirtiler: Hangi işaret neye işaret eder?
Aşağıdaki tablo, günlük pratikte en sık karşılaşılan sinyalleri ve olası yorumları özetler:
| Gözlem | Olası durum | Ne kontrol edilir? |
|---|---|---|
| Eğitim performansı çok iyi, validasyon/test belirgin düşük | Overfitting | Model karmaşıklığı, regularization, veri bölme kurgusu |
| Eğitim performansı da düşük, validasyon/test de düşük | Underfitting | Model kapasitesi, özellikler, eğitim/optimizasyon ayarları |
| Eğitim kaybı düşerken validasyon kaybı bir noktadan sonra yükseliyor | Overfitting (özellikle eğitim uzadıkça) | Erken durdurma, düzenlileştirme, veri/özellik stratejisi |
| Hem eğitim hem validasyon kaybı yüksek ve plato yapıyor | Underfitting veya öğrenememe | Özellik mühendisliği, model türü seçimi, hedef/etiket kalitesi |
Adım adım tespit: “Sorun var” demeden önce ölçün
1) Doğru veri bölme (train/validation/test) ile başlayın
Overfitting/underfitting konuşmadan önce kritik bir ön koşul, değerlendirme verisinin (validation/test) eğitimden ayrı tutulması ve modelin görülmemiş veride ölçülmesidir. (Kaynak: Google ML Crash Course)
Pratikte, aşağıdaki gibi durumlar sonuçlarınızı olduğundan iyi/kötü gösterebilir; bu yüzden bölme ve veri hazırlama adımlarını gözden geçirmek faydalıdır:
- Etikete çok yakın sinyal taşıyan alanlar (ör. sonuç oluştuktan sonra türeyen sütunlar) değerlendirme metriklerini gerçekçi olmayan şekilde yükseltebilir.
- Zaman bağımlılığı (ör. zaman serisi) varsa, rastgele bölme bazı senaryolarda yanıltıcı olabilir; bölme stratejisinin probleme uygunluğunu kontrol edin.
- Çok benzer/tekrarlı örneklerin farklı bölümlere düşmesi, validasyon sonucunu yapay olarak iyileştirebilir.
2) Eğitim ve validasyon eğrilerini birlikte izleyin
En pratik teşhis yöntemlerinden biri, eğitim süreci boyunca eğitim/validasyon kaybı (loss) ve ilgili metriklerin birlikte izlenmesidir:
- Overfitting tipik deseni: Eğitim kaybı düzenli azalırken validasyon kaybı bir noktadan sonra durur veya artar.
- Underfitting tipik deseni: Eğitim kaybı da yüksek kalır; model daha fazla eğitimle bile istenen seviyeye gelmez.
Bu yaklaşım, özellikle “aşırı öğrenme” belirtilerini erken yakalamak için yaygın olarak önerilir. (Kaynak: Google ML Crash Course)
3) Cross-validation (çapraz doğrulama) ile kararlılık ölçün
Tek bir validasyon bölmesi bazen “şans eseri” iyi/kötü sonuç verebilir. k-katlı cross-validation, modeli farklı bölmelerde tekrar tekrar değerlendirerek hata tahminini daha kararlı hale getirir ve model seçimine yardımcı olur. (Kaynak: scikit-learn örneği)
Pratik kullanım önerisi:
- Model ve hiperparametreleri karşılaştırırken cross-validation skorlarının ortalamasını ve mümkünse dağılımını (oynaklığını) takip edin.
- Skorlar katlar arasında çok değişiyorsa; veri azlığı, bölme stratejisi veya model kararsızlığı söz konusu olabilir.
Neden olur? Bias–variance dengesi ile doğru çerçeve
Overfitting/underfitting çoğu zaman bias–variance dengesi ile açıklanır: Basit modeller genellikle daha yüksek bias ile underfitting’e yatkındır; çok esnek/karmaşık modeller ise variance’ı yükselterek overfitting riskini artırabilir. Bu çerçeve, model karmaşıklığı ile genelleme arasındaki gerilimi anlamak için kullanılır. (Kaynak: Stanford CS229 materyalleri)
Bu nedenle “modeli büyütmek” bazen çözüm, bazen de sorunun kendisi olabilir. Kritik olan, ölçüme dayalı ilerlemektir.
Overfitting’i önleme: En etkili pratik yöntemler
1) Model karmaşıklığını kontrol edin
Overfitting’i azaltmanın en doğrudan yolu, model kapasitesini ihtiyaçla uyumlu hale getirmektir. Örnekler:
- Polinom derecesini düşürmek, ağaç derinliğini sınırlamak, daha az parametreli bir mimariye geçmek.
- Gereksiz özellikleri kaldırmak veya özellik uzayını sadeleştirmek.
scikit-learn’ün underfitting/overfitting örneği, model karmaşıklığı arttıkça eğitim başarısının artabileceğini; ancak validasyon performansının bir noktadan sonra bozulabileceğini görselleştirmeyi amaçlar. (Kaynak: scikit-learn örneği)
2) Regularization (düzenlileştirme) kullanın
Regularization, modelin aşırı karmaşık çözümlere gitmesini sınırlayarak genellemeyi iyileştirmeye çalışır. Uygulamada sık kullanılan yaklaşımlar:
- L2 (weight decay): Ağırlıkların çok büyümesini cezalandırır.
- L1: Bazı ağırlıkları sıfıra çekmeye eğilimlidir; seyrek (sparse) çözümleri teşvik edebilir.
Regularization, overfitting’i azaltmada en yaygın yöntemler arasında sayılır. (Kaynaklar: Google ML Crash Course, scikit-learn örneği)
İpucu: Düzenlileştirme gücü (hiperparametre), probleme göre değişebileceğinden küçük bir tarama ile validasyon performansına bakmak genellikle daha sağlıklı bir yaklaşımdır.
3) Erken durdurma (early stopping) uygulayın
Eğitim uzadıkça validasyon hatası yükselmeye başlıyorsa, erken durdurma modelin overfitting’e gitmeden önce durdurulmasına yardımcı olabilir. Bu yaklaşım, özellikle iteratif öğrenme yapan yöntemlerde pratik bir “emniyet kemeri” gibi çalışır. (Kaynak: Google ML Crash Course)
Uygulama mantığı basittir: validasyon metriği belirli bir süre iyileşmiyorsa eğitim durdurulur ve en iyi noktadaki ağırlıklar korunur.
4) Veri miktarını ve çeşitliliğini artırın (mümkünse)
Daha fazla ve daha çeşitli eğitim verisi, modelin daha genel örüntüler öğrenmesine yardımcı olabilir. Görüntü, ses ve metin gibi alanlarda veri artırma (data augmentation) teknikleri de bu amaca hizmet eder. (Kaynak: Google ML Crash Course)
Dikkat: Veri artırma stratejilerini, probleme uygunluk ve validasyon metriği üzerinden doğrulamak önemlidir.
5) Değerlendirme kurgusu: Tek metrik her şeyi anlatmayabilir
Bazı problemler (özellikle sınıf dağılımı dengesiz olanlar) için tek bir metrik, performansın hangi yönde “iyi” ya da “kötü” olduğunu tam yansıtmayabilir. Bu yüzden, iş hedefinize uygun metrik(ler)i seçip validasyon/test üzerinde tutarlı şekilde izlemek faydalıdır.
Underfitting’i giderme: Model “öğrenmiyorsa” ne yapmalı?
1) Model kapasitesini artırın (ama kontrollü)
Underfitting çoğu zaman modelin veri içindeki örüntüyü temsil edecek kadar güçlü olmamasından kaynaklanır. Çözüm seçenekleri:
- Daha esnek bir model sınıfına geçmek (ör. doğrusal modelden ağaç tabanlı yönteme).
- Modelin karmaşıklık ayarlarını artırmak (derinlik, derece, katman sayısı gibi), fakat validasyon performansını izleyerek.
Bu yaklaşımın overfitting riskini de yükseltebileceği unutulmamalıdır. (Kaynak: scikit-learn örneği)
2) Özellik (feature) mühendisliğini iyileştirin
Model iyi bir sinyal görmüyorsa, daha karmaşık bir modele geçmek tek başına işe yaramayabilir. Şunları deneyin:
- Özelliklerin ölçekleme/normalizasyon ihtiyacı (özellikle bazı yöntemlerde).
- Problem alanına uygun yeni özellikler (oranlar, etkileşimler, zaman pencereleri).
- Hatalı veya aşırı gürültülü özellikleri temizleme.
3) Eğitim sürecini kontrol edin
Bazen “underfitting” gibi görünen durum, yanlış eğitim ayarlarından kaynaklanır:
- Yetersiz eğitim süresi (model henüz yakınsamadı).
- Optimizasyon ayarları (öğrenme oranı gibi) nedeniyle öğrenememe.
- Yanlış hedef/etiket tanımı veya etiket kalitesi sorunları.
Pratik teşhis akışı: 30 dakikalık kontrol listesi
Aşağıdaki adımlar, hızlı bir şekilde “sorun nerede?” sorusuna yaklaşmanıza yardımcı olur:
- Veri bölmeyi doğrula: Eğitim ve değerlendirme verisinin ayrıldığından emin ol.
- Basit bir temel model kur: Karmaşıklığı düşük bir başlangıç noktası belirle.
- Eğitim + validasyon eğrilerini izle: Ayrışma var mı, plato nerede?
- Cross-validation ile doğrula: Sonuçlar katlar arasında tutarlı mı? (Kaynak: scikit-learn örneği)
- Müdahale seç:
- Overfitting ise: regularization, erken durdurma, karmaşıklığı azaltma, veri/çeşitlilik iyileştirme.
- Underfitting ise: kapasite/özellik/optimizasyon iyileştirme.
- Tekrar ölç: Her değişiklikten sonra aynı değerlendirme düzenini koru.
Yeni yaklaşımlar: Validasyon gerektirmeyen göstergeler var mı?
Son dönemde bazı çalışmalar, overfitting’i ayrı bir validasyon seti olmadan daha erken sezmeye yönelik göstergeler önermektedir. Örneğin arXiv’de yayımlanan bir ön baskı, weight decay (L2 benzeri düzenlileştirme) perspektifinden “Overfitting–Underfitting Indicator (OUI)” gibi bir yaklaşımı tartışır. (Kaynak: arXiv ön baskı)
Önemli not: Bu tür yöntemler araştırma düzeyinde olabilir; farklı veri kümeleri ve gerçek dünya senaryolarında tutarlılık göstereceği garanti değildir. Üretim ortamında kullanmadan önce, klasik validasyon/cross-validation yaklaşımlarıyla karşılaştırmalı denemeler yapmak daha güvenli bir yoldur.
Sık yapılan hatalar (ve daha güvenli alternatifler)
Hata 1: Test setini model seçimi için kullanmak
Test seti “son değerlendirme” içindir. Model seçimi ve hiperparametre ayarı test setine göre yapılırsa, test metriği artık gerçek genellemeyi temsil etmeyebilir. Alternatif: model seçimini validation veya cross-validation ile yapın; test setini en sona saklayın. (Kaynak: Google ML Crash Course)
Hata 2: Tek bir bölme ile kesin karar vermek
Özellikle veri azsa, tek bir validasyon bölmesi yanıltıcı olabilir. Alternatif: k-katlı cross-validation gibi yöntemlerle sonuçların kararlılığını ölçün. (Kaynak: scikit-learn örneği)
Hata 3: “Bir ayar her yerde çalışır” varsayımı
Regularization gücü, model karmaşıklığı veya eğitim süresi için evrensel bir reçete yoktur. Alternatif: küçük bir deneme planı oluşturun, değişkenleri tek tek oynatın ve her adımda validasyon metriğini izleyin.
Özet: Hangi durumda ne yapmalı?
- Overfitting görüyorsanız: değerlendirme verisinin eğitimden ayrılıp ayrılmadığını kontrol edin; ardından regularization, erken durdurma, model karmaşıklığını azaltma ve veri/çeşitlilik iyileştirme gibi araçları deneyin. (Kaynak: Google ML Crash Course)
- Underfitting görüyorsanız: model kapasitesini ve özellikleri güçlendirin; eğitim/optimizasyon ayarlarının doğru olduğundan emin olun. (Kaynak: scikit-learn örneği)
- Model seçimini daha sağlam yapmak için cross-validation ile doğrulayın ve sonuçların oynaklığını takip edin. (Kaynak: scikit-learn örneği)
Bu kılavuz, overfitting ve underfitting’i yalnızca tanımlamakla kalmaz; aynı zamanda ölçüme dayalı şekilde yönetmenize yardımcı olacak pratik bir çerçeve sunar.