Sosyal Ağlarda Makine Öğrenmesi 4 [ Polinom Regresyon ]

Polinom Regresyon veya Polinominal regresyon konusuna geçelim. Simple Lineer ve Multi Lineer fonksiyonda gördüğümüz şey bir doğrusallıktı. Bunun için de daha çok takipçi-beğeni veya harcama-kâr eğrileri gibi daha doğrusal parametreleri kullandık.

Peki her zaman bu iş böyle gider mi ? Elbette hayır. Örneğin aşağıdaki grafikteki noktalar arasında nasıl bir bağlantı görüyorsunuz ?

Bir doğrusallık yok değil mi ? x değeri artarken y değeri önce düşmüş ardından artmış. Bir çocuğa bütün bu noktaları birleştir denilseydi muhtemelen bir eğri çizecekti.

İşte bu gibi problemlerde yardımımıza Polinom Regresyon yetişiyor. Matematiksel olarak ifade edersek artık bağımlı değişkenimiz y için y=x0+B1X1+B2X2… gibi bir denklem yerine farklı derecelerden X ifadelerini kullanacağız. y=X0+B1X1+B2(X2karesi)+B3(X3küpü) gibi..

Not: Blogta matematiksel gösterim zor olduğu için bu şekilde yazmak durumunda kaldım. 🙂

Bizim hikayemizde de bir sosyal medya kullanıcısının yeni üye olmasından marka destekli fenomen olmasına kadar giden süreçte elde ettiği gelirlerden oluşan bir tablo var.

Tablomuz aşağıdaki görüldüğü gibi 10 adet seviyeden oluşuyor. Seviye arttıkça gelir doğrusal bir şekilde değil üstel bir şekilde artıyor.

İlk adımda kütüphaneleri ve veri setimizi içe aktarıyoruz. Bize ünvan değil seviye lazım gerektiği için X kısmında [: , 1:2] şeklinde değer alıyoruz. Bu da seviye sütununa karşılık geliyor. Y için ise Gelir’e karşılık gelen [:,2] kısmını yazıyoruz.

 

İkinci adımda Lineer Regresyona göre eğitiyoruz. Bunu yapmasak da olur fakat Polinom ile arasındaki farkı görmek açısından faydalı oluyor.

Şimdi Polinom Regresyon yapıyoruz. Kodumuzu satır satır inceleyelim.

İlk olarak PolynominalFeatures sınıfını içe aktarıyoruz. Ardından poly_reg isminde 4. dereceden Polinom özelliğine sahip bir nesne tanımlıyoruz. Bu nesnemizin görevi x nitelikler matrisini alıp nesnenin fit_transform() metodunu kullanaak yeniden biçimlendirmek. Bu biçimlendirilmiş nitelikleri x_poly isimli değişkenimize atıyoruz. Ardından Polinom Lineer Regresyon ile modeli eğitiyoruz.

İşte bu kadar. Artık ekrana lineer ve polinom regresyonu yazdırabiliriz.

Görüldüğü gibi Lineer Regresyon çok hatalı tahminlerde bulundu. Peki Polinom Regresyonu daha da iyi yapabilir miyiz?

Bunun için çizim kısmındaki kodumuzda bir kaç değişiklik yapıyoruz.

Görüldüğü gibi tahmin sonuçlarımızdaki (mavi çizgimizdeki) keskin geçişler kayboldu ve daha hassas bir hale geldi. Peki Polinom Regresyon için derecemizi 6 dan 9’a çıkarırsak ne olurdu ?

Böyle bir durumda grafiğimiz aşağıdaki şekilde oluşuyor.

İlk bakışta şöyle diyebilirsiniz. “Vavv harika!”  Tüm değerler tam isabet bulunmuş gibi gözüküyor. Kusursuz bir makine öğrenmesi gerçekleştirebiliriz. Peki gerçekte durum öyle mi ? Pek değil.

Overfitting nedir ?

Overfitting ile tanışmanın vakti geldi. Bunu öğrendiğimde, “Makine de kötü bir öğrenci gibi öğrenmeden ezber yapabiliyormuş.” dedim. Özetle Overfitting makinenin eğitim kümesindeki sonuçları birebir ezberler ve üzerinde çalıştığınız veri setinde harika sonuçlar verir. Fakat yeni bir veri seti gelince başarısız tahminler yapar. Tıpkı bir sürücüsüz arabayı eğitirken arabanın dünyadaki tüm otobanlardaki hareketleri ezberleyip köy yoluna girince tıkanması gibi. İşte bu yüzden dereceyi ne kadar artırırsak işler o kadar kolaylaşır diyemiyoruz. Overfitting bir problem ve bundan kaçmamız gerekiyor.

Overfitting demişken gelin bir de Underfitting’e bakalım.

Underfitting nedir ?

Underfitting ise aslında overfittingin tersi gibi bir durum. Verisetimiz üzerinde yeterince çalışmamız durumunda tahminlerimiz kötü oluyor. Bu durum da underfitting olarak isimlendiriliyor.

 

Soru: Neden bu modelimizde veri setimizi, eğitim ve test seti olarak ikiye ayırmadık ?

 

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir