Karar Ağaçları (Makine Öğrenmesi Serisi-3)

Mehmet Fatih AKCA
Deep Learning Türkiye
4 min readSep 7, 2020

Karar ağaçları, Sınıflandırma ve Regresyon problemlerinde kullanılan, ağaç tabanlı algoritmadan biridir. Karmaşık veri setlerinde kullanılabilir.

Karar Ağaçlarını Tanıyalım

Karar Ağacı (Decision Tree) (Görsel 1)

Karar ağaçlarının ilk hücrelerine kök (root veya root node) denir. Her bir gözlem kökteki koşula göre “Evet” veya “Hayır” olarak sınıflandırılır.

Kök hücrelerinin altında düğümler (interval nodes veya nodes) bulunur. Her bir gözlem düğümler yardımıyla sınıflandırılır. Düğüm sayısı arttıkça modelin karmaşıklığı da artar.

Karar ağacının en altında yapraklar (leaf nodes veya leaves) bulunur. Yapraklar, bize sonucu verir.

(Görsel 2)

Peki ya kök hücreyi nasıl seçiyoruz?

Burada seçeceğimiz kökün veri setimizi olabildiğince çok açıklamasını isteriz. Örneğin yukarıdaki örnek karar ağacına bakarsak, bu kişi için iş teklifinde en önemli etken maaşmış.

Köke tabi ki biz karar vermiyoruz. Buna karar vermek için çeşitli değerler var. Bunlardan bazıları:

Gini: Alt kümenin saflık değeri

(Görsel 3)

pj, j sınıfının gerçekleşme olasılığıdır. Her sınıf için hesaplanır ve çıkan sonuçların karelerinin toplamı birden çıkartılır. Gini değeri 0 ile 1 arasında bir sonuç alır ve sonuç 0’a ne kadar yakınsa o kadar iyi ayrım yapmış olur.

Daha anlaşılır olması için ilk önce Gini değerinin nasıl hesaplandığını anlatacağım. Daha sonra Karar Ağaçları içerisindeki kullanımından bahsedeceğim.

Elimizde Kırmızı ve Mavi renkte 4 topumuz olduğunu varsayalım;

(Görsel 4)

Şimdi Karar Ağaçlarına bakalım. Bakalım düğümlerimiz veri setimizi nasıl ayırabiliyor.

Kök (root) hücreyi bulabilmek için her düğüm için Gini değerini hesaplamamız gerekiyor.

Maaş için Gini değerinin hesaplanması

Maaş için inceleyelim. Öncelikle “Evet/Hayır” olarak ağacımızı ikiye ayırıyoruz. Maaş 50.000 $’dan fazla olduğunda; 512 kişinin 478'i işi kabul ederken 34 kişi işi reddediyor. Ardından 1 - maaş 50.000 $’dan yüksek iken işin kabul edilme olasılığı - maaş 50.000 $’dan yüksek iken işin reddedilme olasılığı işlemini yaparak cevabı “Evet” olanların Gini değerini bulmuş oluyoruz. Aynı işlemi cevabı “Hayır” olanlar için tekrarlıyoruz. Son olarak (işi kabul edenlerin veri setindeki oranı * işi kabul edenlerin Gini değeri) + (işi reddedenlerin veri setindeki oranı * işi reddedenlerin Gini değeri) işlemini yapıyoruz ve maaş için 0,1278 değerini buluyoruz.

Diğerleri içinde aynı işlemleri yapıyoruz.

Ulaşım ve Kahve için Gini değerinin hesaplanması

Değerlere baktığımızda 0'a en yakın olanın Maaş olduğunu görüyoruz. Bu bize Maaş düğümü ile yapılan ayrımın veri setini diğerlerine göre daha iyi ayrıştırdığını gösteriyor. Bu yüzden kök (root) hücre olarak Maaş düğümünü seçiyoruz.

Kök hücreden sonra hangisinin geleceğini de aynı şekilde karar veriyoruz. Örnek olması için:

İç düğümlerin seçilmesi için Gini değerinin hesaplanması

Entropy: Temel fikir, bir gruplamanın bozukluğunu hedef değişkene göre ölçmektir ama bunu log2 tabanında yapar.

Gini ile arasında çok büyük bir fark yoktur. Entropi daha dengeli bir ağaç çıkarmaya meyilli iken Gini, frekansı fazla olan sınıfı ayrıştırmaya meyillidir.

Eğitim Algoritmaları:

Scikit-learn Karar Ağaçlarını eğitirken CART (Classification and Regression Tree) algoritmasını kullanır. Bu algoritma veri setini ikiye ayırarak ayrıştırmaya çalışır. Diğer algoritmalar ile karşılaştırmak için şöyle bir tablo oluşturdum:

Hiperparametreler:

Aşırı uyum (overfitting) veya öğrenememe(underfitting) gibi sorunlarla karşı karşıya iseniz hiperparametre değerleri ile biraz oynamanız gerekebilir.

max_depth= Karar Ağacının maksimum derinliğini ifade eder. Değer girilmezse limitsiz olur. Model overfit(aşırı uyum) olmuşsa düşürülmesi gerekir.

min_samples_split=Bir düğümün bölünmeden önce sahip olması gereken minimum örnek sayısıdır.

min_samples_leaf=Bir yaprağın sahip olması gereken minimum örnek sayısıdır.

min_weight_fraction= min_samples_leaf’e benzer.Ağırlıklı örneklerin, toplam örnekler içerisindeki oranı. Ağacın dengeli gitmesi için kullanılır.

max_leaf_nodes= Maksimum yaprak sayısı.

max_features= En iyi bölünmeyi ararken göz önünde bulundurulması gereken featureların sayısı.

Özet:

1-) Sınıflandırma ve Regresyon problemlerinde çok çıktılı bir şekilde çalışabilir.

2-)Karmaşık veri setlerinde kullanılabilir.

3-) Scale etmeye ve çok fazla Veri Ön İşleme’ye gerek duymaz.

4-) Kök hücreyi seçerken veri setini mümkün olduğunca anlamlı şekilde ayrıştırabilen sütun seçilmeye çalışır. (Görsel 2’deki maaş gibi)

5-) Karar Ağacı, önceden tanımlanmış olan max_depth hiperparametresine ulaştığında veya daha saf bir alt küme elde edemediğinde durur.

6-) Gini ve Entropi arasında çok büyük bir fark yoktur. Entropi daha dengeli bir ağaç çıkarmaya meyilli iken Gini frekansı fazla olan sınıfı ayrıştırmaya meyillidir.

7-) Model overfit (aşırı uyum) olmuşsa genellikle önce max_depth hiperparametresi düşürülür.

--

--

Mehmet Fatih AKCA
Deep Learning Türkiye

Sakarya Üniversitesi Yönetim Bilişim Sistemleri 4.sınıf öğrencisiyim. Makine Öğrenmesi, Veri Madenciliği, Veri Analizi ve Görüntü İşleme www.mfakca.com