Makine Öğrenmesi — Bias-Variance Çelişkisi #4
Herkese merhaba! Bir önceki yazımda makine öğrenmesi modellerinin başarılarını değerlendirirken kullandığımız yöntemleri incelemiştik. Bu yazıda yanlılık ve varyans ilişkisini inceleyeceğiz.
Yanlılık ve Varyans İlişkisi (Bias-Variance Tradeoff)
Modelleri oluştururken amacımız modelin tahmin başarısını daha doğru değerlendirmektir. Bunu varyans ve yanlılık (bias) arasında denge kurarak sağlamaya çalışıyoruz. Bu dengeyi sağladığımız noktada iyi uyum (good-fit) yakalamış model kurmuş oluruz.
Daha önceki yazıda Overfitting’den bahsetmiştik. Overfitting ne demekti? Eğitim ve test olarak ayırmış olduğumuz veri setimizin eğitim bölümüyle modelimizi kuruyorduk. Eğer kurmuş olduğumuz modeli fazla optimize edersek, model eğitim setimizi çok iyi öğrenmiş, bir başka deyişle ezberlemiş oluyordu. Daha sonra verinin hiç görmediği yeni bir veri üzerinden tahmin yapmasını istediğimizde modelin başarısı düşüyordu. Bu durum da bizim için kabul edilebilir değildi. Bu durumdan kurtulmak için model hata parametrelerini incelemek gerekmektedir.
Modelin başarısını değerlendirirken elimizde 2 tip hata olur.
- Eğitim Hatası: Modeli kurmak için kullanılan veri seti üzerinden elde ettiğimiz hatadır.
- Test Hatası: Kurulan modeli test etmek için kullandığımız veri seti için oluşan hatadır.
Burada eğitim ve test hataları arasında yanlı (bias) bir durum vardır.
Kurmuş olduğumuz modelin iyi uyumlu olup olmadığını görmek için sıkça karşılaştığımız aşağıdaki görselden yararlanacağız.
Görseli incelemeden önce görseli yorumlamamıza yardımcı olacak kavramlara bakalım. Kurmuş olduğumuz modeli hep daha esnek hale getirmeye çalışırız. Peki esneklik ne demektir? Verinin fonksiyonel yapısının uygun bir şekilde yorumlanmasıdır. Esneklik ifadesini varyans / değişkenlik olarak da düşünebiliriz.
O halde varyansın yüksek olması ne demektir? Veri seti içerisindeki yapıyı esnek bir biçimde, yani temsil gücü yüksek, oldukça detaylı bir şekilde temsil etmek demektir.
Grafikte Underfitted ve Overfitted modelleri incelediğimizde; verinin yapısına en esneği Overfitted modeldir. Çünkü verinin yapısına kendini uydurmuştur. Yani varyansı yüksek bir fonksiyondur. Bu fonksiyon veri setini çok iyi temsil eder. Veri setinin içerisindeki yapıları mükemmel öğrenmiştir.
Bir diğer kavram olan yanlılık ise gerçek değerler ile tahmin edilen değerler arasındaki farkı ifade eder. Buna göre Underfitted model yanlıdır. Neden? Çünkü verinin tüm noktalarını temsil edememiştir. Bir başka deyişle modelin gerçek değerleri tahmin etme konusunda yeteri kadar başarılı olmadığını söyleyebiliriz. Underfitted modeller az veya eksik öğrenmiş modeller olarak tanımlanabilirler. Bu modellerde yüksek yanlılık mevcuttur. Çünkü bazı gözlemleri çok iyi temsil edebiliyorken bazılarını temsil edememektedir.
Doğru model ise düşük yanlılığa ve düşük varyansa sahip modeldir. Her zaman esnekliğin yüksek olup veri seti içerisindeki yapının çok iyi tahmin edilmesi istediğimiz bir durum değildir. Çünkü genellikle tahmin fonksiyonunun esnekliği arttıkça (Overfitted) yani veri seti içindeki yapıyı temsil etme kabiliyeti arttıkça yanlılığı azalır. Fakat fonksiyonun genellenebilirlik kabiliyeti düşer.
Peki bu doğru model dediğimiz; düşük yanlılık ve düşük varyans neye göre seçilir?
Test hatasına göre seçilir. Yani ortalama test hatası yüksek ise daha esnek model tercih ederiz. Model esnekleştiğinde varyans artar, yanlılık azalır. Bu belirli bir noktada durmazsa bu sefer yine esneklik arttıkça varyans artacak ve ezberleme işlemi olacak ve bu yine bir problem olacaktır.
Kısacası bu durum; yanlılık-varyans değiş tokuşu olarak adlandırılmaktadır.
Eğitim Hatası ile Test Hatasının Karşılaştırılması
Grafiği inceleyecek olursak X ekseni model karmaşıklığını, Y ekseni tahmin hatasını temsil etmektedir. Kurmuş olduğumuz modeli eğitirken hatamız düşmeye başlar. Modeli optimize ettiğimiz için hatanın düşmesi normaldir ancak bu noktada model karmaşıklığı artmaktadır.
Test setindeki hatanın düşmesi de başarılı tahmin yaptığımızı gösterir. Ancak hatanın arttığı noktada eğitim setini çok iyi öğrendiğini fakat test setini artık açıklayamamaya başladığını gösterir. Model karmaşıklığı arttıkça ve eğitim setindeki hata düştükçe (başarımızın arttığını gösterir) bir noktadan sonra test setindeki hatamızın eğitim setindeki gibi düşmediğini görüyoruz. Özetle, eğitim seti hatası düşmeye devam ediyor fakat test seti hatası artık artmaya başlıyor. İşte bu noktada Learning Curve (Öğrenme Eğrisi) görseli yardımıyla nerede durmamız gerektiğine karar vermeye çalışırız. Kısacası, optimum noktayı bulmaya çalışırız.
Model Optimizasyonu (Model Tuning)
Çeşitli makine öğrenmesi algoritmaları ile kurmuş olduğumuz modelimizi, geçen yazıda da değindiğimiz model başarı değerlendirme ölçütleri (MSE, RMSE, Doğruluk Oranı gibi) yardımıyla değerlendireceğiz. Bu başarıları değerlendirirken model doğrulama (yani daha doğru bir şekilde hata değerlendirme) yaklaşımlarımızı (Cross Validation gibi) biliyoruz. Bir model kurarken yanlılık varyans değiş tokuşu gibi modelin performansına etki edecek olan bir diğer önemli konunun (aşırı ezberlemek yani Overfitting durumu) artık farkındayız. Son olarak da modellerin tahmin performansı yapılabilecek en optimize hale getirmeye çalışacağız.
Model Parametreleri: Modele dahil olan ve değeri veriden öğrenilen parametrelerdir. Eğitim verilerinden tahmin edilirler. Örnek olarak, Regresyon modellerinde formülde yer alan beta katsayılarıdır.
Model Hiperparametreleri: Veri içerisinden elde edemeyeceğimiz, kullanıcı tarafından belirlenen ve veri ile optimize edilen parametrelerdir. Optimum performansa sahip bir model elde etme sürecinde ayarlanması gereken parametreler de diyebiliriz. Örnek olarak, Gradient Boosting yöntemlerinde kullandığımız Öğrenme Hızı (Learning Rate), K en yakın komşulardaki K değeri vs.
Amacımız her zaman için en az hatayla tahmin yapmaya çalışmaktır. Örneğin ev fiyatını tahmin etmeye çalıştığımızda 600K olan değeri 605K olarak tahmin etmeyi amaçlıyoruz. Bu amaca yönelik olarak kullanacağımız onlarca makine öğrenmesi algoritmalarının bir içsel Model Parametreleri bir de dışsal Model Hiperparametreleri olacaktır.
Bir sonraki yazıda Veri İşleme adımlarını inceleyeceğiz.