Modeliniz neden (hala) hatalı? Bias ve Variance.

Ahmet Kuzubaşlı
4 min readMay 1, 2018

--

Original yazı.

Diyelim ki, test setinizdeki veriler hemen hemen aynı dağılımdan geliyor. Bu durumda, model performansını artırmak için daha fazla veriye ihtiyacınız olduğunu kesin olarak söyleyebilir miyiz?

Machine Learning üzerine çalışma yapan hemen herkes Andrew Ng’yi duymuştur. Bir dönem Andrew, özel bir email listesi topluyordu. O dönemde bu email listesine ben de kayıt olmuştum. Çıkaracağı kitaptan konu başlığı taslaklar halinde bu email listesi ile paylaşıyor. Geçtiğimiz haftalarda yine böyle bir taslak email kutuma düşünce, uzun zamandır aklımda olan bu konuda bir yazı yazmak istedim.

Konuya dönecek olursak, evet, fazla veri göz çıkarmaz ancak umulduğu gibi hatayı azaltmayabilir. Bu durumda buna harcanacak vakit de boşa gitmiş oluyor. O halde, ne zaman daha fazla veriye ihtiyacımız olduğunu veya uğraşmaya değmeyeceğini nasıl bileceğiz?

Machine Learning‘de iki temel hata kaynağı vardır: bias ve variance. (Aslında bu kelimelerin Türkçe karşılıkları Yanlılık/Varyans kullanmayı istedim ancak artık günümüzde çoğu kişi online dersleri takip ettiği için aynı anlama gelen ve aslında Türkçe olmayan karşılıkları kullanmamayı tercih ediyorum.) Eğer bu kavramları yeterince iyi anlayabilirsek, ne zaman veri eklemenin hatayı değecek ölçüde azaltmaya yaradığını ve bu amaçla diğer taktiklerin nasıl kullanılacağını bilebiliriz. Böylece zaten hızına zor yetiştiğimiz bu alanda boşa vakit kaybetmemiş oluruz.

Yine Ng’nin örneği üzerinden ilerleyecek olursak, (kedi değil merak etmeyin) gökyüzündeki İHA’ları %5 hata payı ile tespit edebilen bir tanıyıcı geliştirmeye çalıştığımızı düşünelim. Şuanki hatamız, eğitim (training) setinde %15 ve test setinde %16 olsun. Bu durumda tahmin edeceğiniz gibi daha fazla İHA görüntüsüne sahip olmak hatamızı azaltmamıza çok fazla yardımcı olmayacaktır. Başka değişikliklere odaklanmalıyız. Çünkü aslında ekleyeceğimiz her eğitim verisi, eğitim seti üzerindeki performansı artırmayı zorlaştıracaktır. Buna yazının ilerleyen aşamalarında tekrar döneceğiz.

Eğer eğitim setindeki hata %15’se ve %5 hatayı hedefliyorsak, aslında çözülmesi gereken ilk problem eğitim setindeki başarıyı artırmak olmalı. Zaten sık sık birlikte çalıştığımız arkadaşlara verdiğimiz tavsiye, öncelikle training set üzerine over-fit edebiliyor olmaktır. Over-fit başlı başına bir yazı dizisi olabilecek bir problem ancak kısaca modelin veri setini ezberlemesi demektir. Bu durumda ezberlediği eğitim setinden gelecek sorulara iyi cevaplar verirken daha önce karşılaşmadığı sorularda yüksek hataya sahip olmasıdır diyebiliriz. Model ilk geliştirildiğinde küçük bir eğitim setini ezberleyebilecek kapasiteye sahip olmasını bekleriz. Bu (efektif) kapasite sağlandığında artık daha büyük verilerle eğitime devam edilmelidir. Örneğe geri dönecek olursak, ilk hedef eğitim setinin hatasını yukarılara çekebilmek olmalıdır.

Gelelim %16’lık est hatasına. Asıl hedefimiz olan bu hatayı, basitçe, iki bileşene ayırabiliriz.

  • Bias. Bu modelin eğitim seti üzerindeki %15’lik hatasını içeriyor. Kabaca, modelin yanlılığı olarak düşünebiliriz.
  • Variance. Bu da modelin test setindeki performansının, eğitim setindekine göre ne kadar değiştiğini, kötüleştiğini gösteriyor. Bunu da kabaca, modelin varyansı (değişkenliği) olarak kaydedelim.

Özellikle belirtmek isterim ki, Bias ve Variance ile ilgili bu tanımlamalar istatistiksel olarak yüzeysel. MSE (Ortalama Kare Hatası)’nı hata ölçütü olarak kabul ederseniz toplam hatanın, bu iki hatanın toplamı olduğunu göreceksiniz. Bu yazıda amacımız, ML modelleri geliştirirken nasıl hızlı ilerleyebileceğimiz olduğu için yüzeysel tanımlar yeterli. Taktiklere gelince, bazıları bias ve eğitim setindeki performansı artırmak için bazıları ise variance yani test seti performansı için daha etkili. Bu nedenle, aradaki farkı ve hatanın asıl bileşenini bilmek hayati önem taşıyor. Belki birazda zamanla kazanılacak tecrübe ile bias/variance üzerine sezgi geliştirmek size zaman kazandıracaktır.

Örnekte, İHA tanımlayıcı eğitim setinde %1 ve test setinde %11 hata yapıyor olsaydı: %11 — %1 = %10 yüksek variance hatası var diyecektik. Çünkü model performansı eğitim setinde çok iyi ancak sete göre çok değişkenlik gösteriyor. Bu bir overfitting (fazla kapasite) problemi olurdu. Ancak bizim durumumuzda %15 — % 14 = %1 ve hatadaki değişkenlik az yani variance düşük. Ancak bu kez de zaten eğitim performansı kötü yani yüksek bias (yanlılık) problemi var. Bu durumda underfitting (yetersiz kapasite) problemi var. Bu konuyu ifade etmesi açısından aşağıdaki görseli çok yararlı buluyorum.

Bias/Variance farkını en iyi anlatan görsellerden biri. [1]

Hedef tahtası görseli ile örneklerimizi ilişkilendirecek olursak, hedefimiz düşük bias ve düşük variance yani sol üst köşedeki gibi büyük oranda hedefi vuruyor olmamız. Orijinal örneğimizde variance düşük (atışlarımız arasındaki değişkenlik düşük) ancak yüksek bias problemi var yani sağ üst köşedeki gibi yanlı atıyoruz. İkinci örneğimizdeyse, eğitim setinde attığımızı vuruyoruz, yanlı atmıyoruz bu yüzden bias düşük ancak test sırasında performansımız değişkenlik gösteriyor yani variance yüksek.

Bazı durumlarda, mesela konuşma algılama sistemlerinde hata payları en iyi ihtimaller %14’lere kadar düşürülebiliyor. Eğer bizim hatamız eğitimde %15 ve testte %30 ise, eğitim performansı için yapacak çok fazla birşey yok demektir. Bu durumda test performansına, %30’a odaklanmak gerekiyor. Yani her ne kadar underfitting (yüksek bias) gözüküyor da olsa bu hatadan kaçamıyoruz. Bu bizi hatadaki diğer ayrıma getiriyor:

  • Kaçınılmaz Bias / Optimum Hata: Konuşma algılama için %14. Yani en iyi model bile bu hatayı yapıyor. Bu nedenle bu kadar model yanlılığını kaçınılmaz olarak düşünebiliriz.
  • Kaçınılabilir Bias: %1. Bunu basit bir işlemle kendi hatamızdan en iyi hatayı çıkararak bulabiliriz.
  • Variance: Değişkenlik ise %15. Eğitim performansı — test performansı. Asıl odaklanılması gereken yer.

Sonuç olarak, model hatalarının temel iki bileşeninden, model yanlılığından (yana atması) ve performansının değişiklik göstermesinden bahsettik. Her ne kadar çok temel gözükse de birçok kişinin pratikte bu analizi göz ardı etmesi mümkün. Eğer hatayı doğru analiz edebilirsek, doğru taktiklerle başarı yüzdesini artırabiliriz. Bu taktikleri de bundan sonraki yazılarda paylaşacağım.

Öğrenmenin tadını çıkarın!

--

--