Makine Öğrenmesi Dersleri 4a: Lojistik Regresyon

Hakkı Kaan Simsek
Veri Bilimi Türkiye
4 min readMar 6, 2018
kaynak

Gözetimli makine öğrenmesi (supervised machine learning) ve istatistik modelleri temel olarak iki problemi çözmeye çalışır:

  • Regresyon
  • Sınıflandırma

Makine öğrenmesi derslerinin 3. serisinde karar ağaçlarıyla nasıl regresyon ve sınıflandırma yaptığımızdan bahsetmiştik.

Bu yazıda en temel sınıflandırma modeli olan lojistik regresyondan bahsedip adult veri seti üzerinde insanların yıllık maaşının 50K’dan yüksek veya düşük olduğu hakkında tahminde bulunacağız.

Tahmin etmek istediğimiz değişkenimizin tipi kategorik ise Lojistik Regresyon kullanabiliriz. (Örneğin bir kişinin kanser olup olmadığı, bir kişiye kredi verilip verilmeyeceği veya bir mailin spam olup olmadığı gibi..)

Lojistik regresyon, y değişkenin (maaşın >=50K) olma olasılığı ile veri setindeki x öznitelikleri (eğitim, medeni durum, yaş vs.) arasındaki ilişkiyi anlamamıza yardımcı olur.

image.png
image.png

Peki bunu niye yapıyoruz? Çünkü lineer regresyon bize (-∞, +∞) arasında sonuçlar verir. Bizim problemimizde elde etmek istediğimiz bir olasılık değeri olduğu için değerleri S şeklindeki lojistik fonksiyonundan (sigmoid fonksiyonu) geçirip [0,1] arasına alıyoruz.

Örneğin sonuç 0.8 çıktıysa şunu söyleyebiliriz: elimizdeki X değerleriyle (eğitim, yaş vs.) o kişinin maaşı %80 olasılıkla 50K’dan yüksek. Günün sonunda da elde ettiğimiz olasılık değeri 0.5'ten büyükse (threshold’u biz belirliyoruz.) sonucu 1 küçükse 0 olarak etiketliyoruz.

image.png

Lineer regresyonda bağımsız değişkenlerin parametreleri Ordinary Least Squares (OLS) yöntemiyle tahmin edilirken Lojistik regresyonda parametreler Maximum Likelihood (MLE) yöntemiyle hesaplanıyor. MLE yönteminin amacı sonsuz parametre havuzundan veri setinin görülme olasılığını maksimize eden en iyi parametreleri seçmek.

Bu dersi takip etmek için de bilgisayarınıza Python kurmanıza veya veri setini indirmenize gerek yok. İzlemeniz gereken adımlar sırasıyla şöyle:

  • Google hesabınızı açın.
  • https://colab.research.google.com/ adresine gidin.
  • NEW PYTHON 3 NOTEBOOK’a tıklayın.
  • Oradaki satıra aşağıdaki kodu yapıştırın ve play tuşuna basın.

İlk derste olduğu gibi sütunları isimlendirip veri tiplerini ve eksik veri olup olmadığını kontrol ettik. Modelimizdeki hedef değişken ‘salary’ olduğu için onun dağılımına bakıyoruz ve veri setinin geri kalanından ayırıyoruz.

Bu çalışmada işimize yaramasa da yanlış bir veri tipi olduğunda nasıl düzeltmemiz gerektiğine bir örnek yaptım. Capital-gain değişkeninin tipini ‘integer’ dan ‘float’ a çevirdim.

Şimdi de tipi object olan verilere hızlıca bir göz atalım.

Gördüğünüz gibi bazı veriler eksik olarak gözükmese de ‘?’ soru işareti ile doldurulmuş.

Yapmamız gerekenler sırasıyla şöyle:

  • Veri tipi ‘object’ olan sütunlar seçilir.
  • Bu sütunlar yine o sütunun mode() değeriyle doldurulur.

Makine öğrenmesi modelleri kategorik değişkenleri algılayamadığı için ‘object’ tipindeki değişkenleri one-hot-encoding yöntemiyle 0 ve 1'lere ayırıyoruz.

Modelimizi kurmaya hazırız şimdi standart modelleme süreçlerini uygulayacağız.

  1. Veriyi eğitim ve test alt-veri gruplarına ayırma.
  2. Lojistik regresyon modeli oluşturma.
  3. Modeli eğitim verisine ‘fit’ etme.

4. Görmediğimiz test verisine modele verip tahminde bulunma.

5a. Modelin başarı metrikleri: Confusion matrix

5a. Modelin başarı metrikleri: Precision, recall, f1-score

6. ROC curve ve AUC değerlerini bulma.

7. Modelin özniteliklerinin önem sıralamasını analiz etme.

8. En önemli x tane öznitelikle modeli eğitme ve statsmodel.api kullanma.

Yaptıklarımızı tekrarlayalım:

- Veri tiplerini kontrol etme/düzeltme.
- Açıklayıcı veri analizi ve görselleştirme.
- Eksik verileri tahmin etme/veri atama.
- Kategori tipindeki verileri one-hot encoding ile nümerik formata çevirme.
- Veri setini eğitim ve test veri-setlerine ayırma.
- Modeli eğitme ve test verisi üzerinde tahmin yapma.
- Sınıflandırma başarı metriklerine bakma.
- ROC curve çizme ve AUC hesaplama.
- Özniteliklerin önem sıralamasına bakma.
- En önemli 5 öznitelik ile modeli tekrar eğitme.
- Modelin yaptığı öznitelik sıralamasını görselleştirme.

Çalışmadaki veri setine ve kodlara şuradan ulaşabilirsiniz.

Sorunuz olursa bana Linkedin veya Twitter hesaplarından ulaşabilirsiniz.

--

--