Makine Öğrenmesi Dersleri 3a: Karar Ağaçları (Sınıflandırma)

Hakkı Kaan Simsek
Veri Bilimi Türkiye
4 min readFeb 27, 2018
kaynak

Serinin 1. ve 2. yazısında Python’ın popüler pandas, matplotlib, seaborn kütüphanelerini kullanarak veri analizi ve görselleştirme çalışmaları yapmıştık, umarım keyifli bir başlangıç olmuştur.

İlk iki yazıyı makine öğrenmesinden ziyade Python’a giriş olarak düşünebiliriz. Bu yazıdan itibaren farklı veri setleri üzerinde makine öğrenmesi modelleri kurup bu modellerin başarı oranlarını arttırmak için çeşitli yöntemler deneyeceğiz.

Makine öğrenmesi modelleri arasında insanın düşünme tarzına en yakın olanın Karar Ağaçları (Decision Tree) olduğu düşünülür. Sözgelimi iş yerinizde öğle arası 12.30–13.30 arasıysa ve saat 12.10'sa biraz daha beklemeliyim diye düşünmeniz en basit karar ağacı modeline örnek olabilir.

İnsanların zihnindeki bazı karar ağaçlarının derinliği yukarıdaki gibi 1–2 olmakla birlikte çoğu zaman çok daha karmaşık karar ağaçları kurulur. Örneğin insan kaynakları departmanında çalışan birinin zihninde aşağıdakine benzer bir karar ağacı olabilir.

Eğer bir kişi x-y yaş aralığındaysa a, b, c, d, e okullarından mezunsa en az t yıl tecrübesi varsa ve daha önceki işlerinde çalışma süresi ortalama p yıldan fazlaysa mülakata çağıralım.

Karar Ağaçları bulunulan durumun entropi değerini (rastgelelik derecesini) düşüren seçimler yaparak bilgi kazancını (information gain) maksimize etmeye çalışır. Bunun için de her soruda (düğüm/node) hata fonksiyonunu tekrar hesaplayıp en düşük hataya sahip soruyu/durumu seçer.

Bilgi kazancını anlamak için de hemen herkesin bildiği sayı tutma oyununu düşünebiliriz . Örneğin 1'den 100'e kadar bir sayıyı en az soruyla bulmamız bekleniyorsa “sayı 50'den büyük mü küçük mü?” sorusunun cevabı “sayı 95'ten büyük mü küçük mü?” sorusunun cevabından daha çok bilgi kazanmamızı sağlar. Çünkü ilk soruyla seçenekleri yarıya indiririz. Sonrasında küçük cevabına karşı “sayı 25'ten büyük mü küçük mü?” diye oyunu en kısa sürede sonlandırabiliriz.

İlk derslerde olduğu gibi 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. Karar ağacı 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

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

6. Karar ağacını görselleştirme

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

Bu çalışma standart bir veri bilimi projesinin en basit hali olarak düşünülebilir.

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 alt-setlerine ayırma.
  • Modeli eğitme ve test verisi üzerinde tahmin yapma.
  • Sınıflandırma başarı metriklerine bakma.
  • Karar ağacını görselleştirme.
  • 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 yazabilirsiniz.

--

--