Underfitting ve Overfitting

Makine öğrenmesinde sıklıkla “Overfitting nedir? Bununla nasıl başa çıkabiliriz?” sorusu sorulmaktadır. Bu konuda iki kavram karşımıza çıkar: Underfitting ve Overfitting. Kısaca tanımlayalım.

Model underfitting olmuşsa, verilerin altında yatan mantığı kavrayamamış demektir. Model bu veriler ile ne yapacağını bilemez ve doğru olmayan sonuçlar verir. Diğer durumda, yani model overfitting olmuşsa, veri setine çok fazla uyum sağlar ve asıl durumu kaçırır.

Bu iki kavramı regression ve classification problemlerinde gösterelim.

Evlerin boyutuna göre fiyatını bulan bir regression problemini ele alalım.

Birinci grafikte lineer bir model görüyoruz. Model, boyut arttıkça fiyatın her zaman artacağını öngörür. Fakat grafikteki noktalara baktığımızda, boyutun arttığı durumlarda fiyatın sabit kalabileceğini görürüz. Bu durumda model underfitting olmuştur ve hata oldukça yüksektir.

İkinci grafikte, model quadratic fonksiyondur. Bu fonksiyonun, veriler ile uyumunu görebiliriz. Bu model verileri eğitmekte başarılı olabilir.

Son grafikte, model verilerle çok iyi uyum sağlamış gibi görünür. Fakat inişler ve çıkışlar çok fazladır. Bunu, model kendisini verilere uydurmaya zorlamış gibi düşünebiliriz. Ama bizim istediğimiz, modelin sadece bu veri grubu üzerinde iyi çalışması olmadığı için bu model başarısızdır ve overfitting olmuştur.

Overfitting konusunu önemli yapan nokta hatanın sıfıra çok yakın hatta bazen de sıfır olmasıdır. Bizi yanıltan nokta budur. Modelin çok iyi olduğunu düşünürüz ama aslında overfitting olmuştur.

Classification problemi için overfitting durumunu inceleyelim.

İlk durumda model underfitting olmuştur. İkinci durum, bir miktar hata içermesine karşın istenen bir durumdur. Ancak üçüncü durum overfitting olmuştur. Sadece bu veri düzeni ile iyi çalışır.

Faklı veri setleri için overfitting olmuş bir modelin nasıl bir sorun yaratacağı aşağıdaki grafiklerde daha net anlaşılmaktadır.

Modelin overfitting olması nasıl engellenir?

Kullandığımız veri setini eğitim, test ve validation (cross-validation) olarak üç kısma ayırırız. 

Bu üç bölümün oranı, %80-%10-%10 veya %70-%20-%10 olarak değişebilir. Eğitim verileri ile ağ eğitilir yani ağırlıklar güncellenir. Daha sonra validation kısmı ağa verilir. Bu noktada ağırlıklar güncellenmez, sadece hata oranı bulunur.

Eğitim hatası bulunurken genellikle gradient descent kullanılır. Bu sebeple hata bir öncekinden daha düşük olur. Validation da gradient descent kullanılmaz. Bu sebeple hatalar değişkenlik gösterir. Validation hatasının artmaya başladığı ilk nokta overfitting başlangıcıdır. Böylece eğitimi bu noktada durdurup modelin overfitting olmasını engelleyebiliriz.

Aynı güncelleme işlemi sadece eğitim ve test verileri kullanılarak yapılsaydı ne olurdu?

Modelin gerçek performansını göremezdik. Çünkü, modelin asıl başarısını hiç görmediği verilerdeki tahmin gücü belirler. Test için ayrılmış olan veriler hem overfitting tespiti hem de test olarak kullanılması tekrara yol açar. Bu durumda modelin sağlıklı çalışabilmesi için istenen bir durum değildir.

Bu yazımda overfitting ve underfitting konularını anlatmaya çalıştım. Faydalı olması dileğiyle…

KAYNAKLAR

365 Data Science, Advanced Statistical Methods in Python

Coursera, Machine Learning, Andrew Ng.