Makine Öğrenmesi Dersleri 3b: Karar Ağaçları (Regresyon)

Hakkı Kaan Simsek
Veri Bilimi Türkiye
3 min readAug 28, 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ı alanlardaki veri setleri üzerinde çeşitli makine öğrenmesi modelleri kurup bu modellerimizin kalitesini 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 modeller 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 devam ederek oyunu en kısa sürede sonlandırabiliriz.

İlk derste 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.

Modelimizdeki hedef değişken ‘median_house_value’ olduğu için onun dağılımına bakıyoruz ve veri setinin geri kalanından ayırıyoruz.

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. Ayrıca ‘total_bedroom’ değişkenindeki eksik değerleri doldurmamız gerekiyor.

  • ocean_proximity değişkeni pd.get_dummies() fonksiyonuyla zenginleştirilir.
  • Bu değişken veri setinden atılır.
  • total_bedroom değişkeni yine o sütunun median() değeriyle doldurulur.

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

  1. Veriyi eğitim ve test alt-veri setlerine 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.

5. Gerçek değerle tahmin arasındaki benzerliğe göre mean absolute error ve accuracy hesaplama.

Mean Absolute Error: 55653.73 unit.
Accuracy: 68.285 %.

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

7. Sınıflandırma modeli kurulurken yapılan öznitelik önem sıralamasını görselleştirme.

Burada derinliği 8 olan yeni bir model kurup o modelin başarı oranına bakıyoruz ve öznitelik sıralamasını görselleştiriyoruz.

Başarı oranımız ciddi bir şekilde arttı. 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 veri-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.

--

--