Sosyal Ağlarda Makine Öğrenmesi 8 [ Lojistik Regresyon ]

Bu yazımızla lineer regresyondan lojistik regresyona geçiş yapıyoruz. Lineer regresyonda ikiden fazla değer sonuç olarak ortaya çıkabilirken,lojistik regresyonda yalnızca iki değere sahip olabilen sonuçlar ortaya çıkar.

Örneğin bir evin fiyatını tahmin eden lineer regresyon algoritması 200.000 TL den 500.000 TL ye kadar bir çok farklı değer verebilirken, lojistik regresyonda bir ev satıldı/satılmadı gibi iki sonucu olan değerler üzerinden gidilir.

Peki matematiksel olarak bakarsak ne görürüz ?

 

Yukarıdaki mavi denklemimiz bizim lineer regresyonda kullandığımız formüldü. Buranın bağımlı değişkeni olan y değerini Sigmoid Fonksiyonundan geçirilirse sonuçlar 0 ve 1’e yakınsanan şekilde çıkıyor. Yeşil arkaplanı olan denklem ise mavi ve mor denklemin bir kerede gösterilmesi için kullanılmış. Sigmoid fonksiyonun ismi de S harfindan (Sigma’dan) geliyor. Grafiksel olarak görelim.

Görüldüğü gibi lineer regresyon yapsaydık üst taraftaki grafik oluşacak ve çoğu kırmızı noktayı yanlış tahmin edecektik. Fakat Sigmoid fonksiyonuyla alttaki sonuca ulaştık ve bir çok noktayı doğru tahmin etmiş olduk. İkinci grafiğimizdeki yeşil çizgiye göre 2 den fazla değer olabileceğini düşünebiliriz. Fakat çizginin kıvrıldığı yerlerdeki tahmin mekanizması şöyle çalışıyor.

Eğer değer alt çizgiye yakınsa 0, üst çizgiye yakınsa 1 olarak tahminde bulunuyor. Bunun dışında 0.3, 0.4 gibi değerler tahmin etmiyor.

Projeye geçelim. Elimizde çeşitli sosyal medya kullanıcılarının kullanıcı idleri, yaşları, cinsiyetleri, tahmini maaşları ve ürünü satın alıp almadıkları bilgisi var. Biz de modelimizde bir kullanıcının ürünü satın alıp almayacağını tahmin edeceğiz.

Kodumuza geçelim. İlk olarak kütüphaneleri ve veri setini içe aktardık.

Veri setini içe aktarırken yaş ve tahmini maaşı bağımsız değişkenler, satın aldı mı sütununu ise bağımlı değişken olarak aktardık.

Veri setini %25’i test %75’i eğitim kümesi olacak şekilde ikiye ayırdık.

Feature Scaling yapıyoruz.

Eğitim kümemizi lojistik regresyon ile eğittik.

Buraya kadar olan kısım bir çok algoritmada ortak olan kodlardan oluşuyordu. Fakat yeni bir şey olan hata matrisi oluşturacağız.

 

Hata matrisi nedir ?

Hata Matrisi ( Confusion Matrix) makine öğrenmesinde kullandığımız sınıflandırma modelinin performansını hesaplarken kullanılıyor. Burada True Positive-TP , True Negative-TN, False Positive – FP ve False Negative-FN isminde kavramlar var.Eğer sonucu doğru olan bir şey doğru tahmin edilirse True Positive olarak adlandırılıken sonucu yanlış olan bir şey doğru olarak tahmin edilirse buna True Negative deniliyor. Aynı şekilde sonucu yanlış olan bir şey doğru olarak tahmin edilirse False Positive, sonucu yanlış olan bir şey yanlış olarak tahmin edilirse False negative deniliyor.

 

Hata matrisimizi ekledik. Çizime geçmeden önce sonuçların nasıl çıktığına bakalım.

Şimdi çizime geçelim. Bizim en çok zorlanacağımız kısım burası olacak çünkü bir çok yeni şey var. Hadi yakından bakalım.

 

Şimdi satır satır bu kodu açıklayalım.

 

İlk olarak renklendirme kullanacağımız için ListedColorMap sınıfını içe aktardık. Ardından X_train ve Y_train değişkenlerimizi yerel değişkenler olan X_set ve Y_set e atıyoruz. Bunu yapmamızın sebebi çizim şablonunu rahatça kullanmamız. Çünkü bir çok yerde X_set ve Y_set ifadesi var. Ardından meshgrid metodu ile bir dikdörtgen çizdiriyoruz. Bunun içerisinde de x ve y eksenleri için minumum,maksimum değerler ve aralıkları koyarak bir anlamda çözünürlüğü ayarlıyoruz. Ardından contourf metoduyla asıl sınıflandırma çalışmamızı yapıyoruz. İngilizcede biçimini vermek,hatlarını oluşturmak anlamına gelen contour burada da aynı işlemi görüyor ve kırmızı,yeşil olarak noktaları sınıflandırıyor. Burada classifier nesnemizin predict() metodunu kullanmamıza dikkat edelim.

xlim ve ylim metoduyla minim ve maksimum değerleri belirliyoruz. Ardından noktaları ekrana çizdirirken enumerate() fonksiyonunu for döngüsü içerisinde kullanıyoruz. Ardından da klasikleşen ana başlık, eksen başlıklarını belirleme ve show() ile ekranda gösterme işini yapıyoruz.

 

 

Görüldüğü gibi grafiğimiz oluştu. Kırmızı alan içerisinde kalan yeşil noktalar ve yeşil alan içerisinde kalan kırmızı noktalar hatalı tahminleri gösteriyor.

 

 

 

 

You may also like...

Bir cevap yazın

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