Decision Tree Regression

Umut Çaylı
5 min readSep 28, 2020

--

Machine Learning hikayemize bugün Decision Tree Regression (Karar Ağacı Yapısı, Regrasyonu) ile devam edeceğiz.

Temel amacımız veriyi bölgeler halinde parçalayarak incelememizi kolaylaştırmak. Bu parçalamalar sayesinde daha kolay prediction edebileceğiz. Elimizde X1, X2, X3, . . . Xp verileri olsun ve biz buradan bir ağaç elde etmeye çalışalım. Alacağımız Xn değerinin node’unu (düğüm) bazı koşullara tabi tutacağız ve buna göre leaf (yaprak) dağılımlarını inceleyeceğiz.

Decision Tree’ler hem Regression modellemerinde hem de Classification modellemelerinde kullanılmaktadır. Classification konusuna geldiğimizde tekrar buraya uğrayacağız :) Google’da da bulabileceğimiz bu konu için klasikleşmiş olan Outlook dataset’ini inceleyeceğim. Tavsiyem bir excel tablosu açıp bu seti adım adım geçirip uygulamaya koyulmanız olucaktır :) -ki tam olarak ben şuan bunu yapıyorum…

  • .csv olarak kaydettiğimiz dosyamızı kod bloğumuz içerisinde import ettik. sep = “;” attribute’unu kullanma amacımız kolonlar arasındaki geçişleri libreoffice’te ; olarak yapması ve biz bunun seperator’ını belirtmek zorundayız.
  • Bu şekilde bir Diagram gözümüzde canlandıralım; Predict edeceğimiz değer Golf Player olsun ve bunun için Outlook değerlerinden başlayacağız. Outlook’umuzun 3 şıkkı bulunuyor; Overcast, Rain ve Sunny. Bu şekilde listeleme işlemlerimize devam edebiliriz. Diyelim ki Overcast’i seçtik ve burada da Cool, Hot ve Mild olarak yine üçe ayrılarak yola devam edip bir flowchart oluşturduk.
https://dzone.com/articles/decision-trees-vs-clustering-algorithms-vs-linear

Bu yapıları hangi durumlarda kullanabileceğimizi gösteren güzel bir sayfayı yukarı bıraktım :)

Elimden geldiği kadarıyla veri setimizi grafiğe döktüm. Şimdi burayı biraz okuyalım. Karar yapıalrında bizim seti yukarıda anlattığımız gibi koşullarla biçimlendirmemiz gerekiyordu. Bu biçimlendirmeyi nasıl yapıyoruz? Split’lere yani bölümlere ayırarak. Split 3 ne olsun, Golf players değeri 30'dan küçük bir prediction olucak, peki hangi durumlarda olucak bu split 1 ile arasındaki bölümde olduğu için Outlook değeri Overcast olan bir prediction yapılacak. Diğer hücre değerleri eklenerekte daha güzel bir görüntü oluşturabilirdim paint becerim yetmedi olsun, umarım anlamışsındır :D

  • Farklı bir dataset üzerinden motor gücüne göre fiyat karşılaştırması seti predict eden kodu yukarıya ekledim. tree_reg.predict([[1]]) yazmamızın sebebi 1.0 katları şeklinde bize değer predict etmesiydi. Pekala diğerlerinden farklı olan biçim ne burada? Görselleştirmemiz sırasında örneğin rate of engine değeri 2 olana kadar ki geçişleri inceleyebilmemiz.

ID3 Algoritması Nedir?

Pekala bu kadar basit mi? Arkasında yatan hesaplamalar neydi? 15 Satırda yazılan bu kodun biraz arka tarafında yatan matematiksel hesaplamalara göz atmaya ne dersiniz? Öncelikle biraz bilgi öğrenelim. Greedy (Aç gözlü) algoritmalar sınıfına giren ID3 algoritması karar ağacımızın yukarıdan aşağı Entropy ve Gain (Bilgi) temelli yapılar oluşrurmasını sağlar.

Entropi Nedir? Entropi rasgele değişkenin değerini tahmin ederken yaşanılan belirsizliği sayısallaştıran termodinamiğin ikinci yasasına dahil edilen hesaplama yöntemidir. Örneğin bir tavla zarını attığımızda üstündeki 6 değişkenin gelme ihtimalinin eşit olma (16.666667) ihtimalidir ya da bir yazı tura atma sonucundaki oranın %50 çıkmasının hesabını yapmamızı sağlayan yöntemdir.

Klasik Entropi formülünün tek değişkenli hesaplamalar üzerindeki grafiksel olarak etkisi.

P (pi) değerimiz burada istatistiksel olarak hesaplanmakta, örneğin 10 kişilik bir sınıfta 3 erkek öğrenci var olduğunu biliyorsak 7 tane kız öğrenci olduğunu predict etmemizi sağlayan hesaplamaya dayanmaktadır.

Yine Google’ladığımız bir görsel ile devam edelim.

Yukarıda bir popülasyonun pi değerlerinin nasıl hesaplandığını görebiliriz. Logiritmik olarak hesaplamalarda ise E = -16/30 log2(16/30) — 14/30log2(14/30) =~ 0.99 şeklinde bir değer elde ettik parent’ımızda. Ardından Balance < 50k ve > 50k değerleri içinde aynı hesaplamayla entropy’ler hesaplanabilir.

Formülümüz (iki değişkenli) bu şekilde. Şimdi bunu biraz açıklayalım.

Dependent değişkenli bir prediction yapmamız mümkün müdür?

E değerimiz yani Entropy değişkenimiz iki adet variable barındırabiliyor T ve X şeklinde, T yani Golf_Players neye independent şekilde bağlı değerler. Golf_Players neye bağlı? Outlook diyebiliriz. Hava durumu nasılsa ona bağlı olabilir ve bunu Entropy ile predict edilebilir, biraz hesaplama yapalım şimdi. E(Golf_Players, Outlook) = P(Sunny) * E(Sunny) + P(Overcast) * S(Overcsat) + P(Rain) * S(Rain)
= Toplam Sunny değerimiz(5) / Toplam Index (14) * Sunny değerinin Standart Sapması + Overcast Değerimiz (4) / Toplam Index (14) * Overcast değerinin Standart Sapması + Toplam Rain değeri (5) / Toplam Index (14) * Rain değerinin Standart Sapması. Peki burada Standart Sapma’yı nasıl hesaplıyoruz? Bir göz atalım.

SDR dediğimiz “Standard Deviation Reduction” olarak adlandırmaktayız, direkt olarak çevirimiz Standart Sapma İndirgenmesi şeklinde olabilir. İki adet değişkenimiz var; Y değişkenimiz bizim bulmayı amaçladığımız target değişkenimiz, X ise dataset’imizdeki sabit değişkenlerden biri örn. Outlook olabilir. SDR(Outlook, Golf_Players) = S(Sunny) — S(Outlook, Golf_Players). S değişkenimiz neydi? Yukarıdaki formülde bulduk onu, S(Y) ne peki? Standart Sapmamız. Bunun formülünü hemen matematik kitaplarımızdan alalım. Bu durumda SDR değerimizi 1.6, S değerimiz ise 7.6 bulmuş oluyoruz hesaplamalarda bir yanlışlık yapmadıysak eğer.

Yukarıda bahsetmiştik Entropy’nin Gain (Bilgi) temelli yapılarının olduğundan. Dataset’imizi karar ağacına dönüştürürken Information Gain adlı yapıdan nasıl ve neden yararlanırız? Bunun amacı bize homojen olarak en yüksek ihtimalli prediction’ı yapmamızı sağlar.

T dediğimiz yine klasik bulmayı hedeflediğimiz değer, Golf_Players. X değeri ise Outlook değişkenimiz olabilir aynı yaptığımız şekilde. Gain(Golf_Players, Outlook) = E(Golf_Players) — E(Golf_Players, Outlook) bu hesaplamayla; 0.942–0.690 = 0.242 şeklinde bir predict değer elde edebilirz.

Yukarıda ise bir sınıftaki cinsietlere göre spit edilme grafiğini görmekteyiz. Bir soruyla devam edelim Burada dependent değerli entrpoy formülü ile mi hesaplama yaparız, yoksa tek değişkenli en başta gösterdiğimiz formül ile mi? Taabiiki ilk formülle hesaplama yapılarak predict etmemiz daha mümkün. ŞİMDİ “Chefboost” kütüphanesi ile gerçek dünya odaklı ID3, C4., CART gibi karar ağçlarından bir tanesini kodlayarak inceleyeceğiz.

Ardından fit ederek, görselleştirmek bunları atmıyorum bence yapabilirsin :)

Çoooooooooooooooooooooook karmaşık benim için çok zor bir yazı oldu, muhtemelen bunların hiçbirini size aktarmada başarılı olamadım fakat diğer konumuz olan sırasıyla “Random Forest Regression, Evaluation Regression Models” ile bu konuyu daha iyi kavrayacağımıza eminim. Matematik bu hikayemizin temeli :) Okuduğun için teşekkür ederim :

--

--

Umut Çaylı
Umut Çaylı

Written by Umut Çaylı

Student of Computer Engineering, candicate of “Software Developer”

No responses yet