Karar Ağaçları (Decision Trees) ile Veri Sınıflandırma

Karar ağaçları, verimizi özelliklerine göre bir nevi if…else yapısına sokarak sınıflandırmamızı sağlar.

http://www.r2d3.us/ sitesi çok güzel bir görselleştirme ile Türkçe olarak anlatmış. Buradaki örneğe göre veri setindeki ev fiyatları, alanı, yüksekliği, yatak odası sayısı vs. özelliklerini alarak bu evin hangi şehirde olduğunu tahmin etmeye çalışıyor. Burada verileri görselleştirerek belirli sınırlar(eşik, threshold’da deniliyor) yakalamaya çalışıyor daha sonra bu sınırları birleştirerek modeli eğitiyor ve sonra test veri seti ile büyük oranda başarılı tahminler yapabiliyor.

Entropi

Fizikte kullanılan bu kavram karar ağaçlarında da benzer bir anlam ile kullanlır. Saflığın zıttının değerini gösterir şöyle ki veri setimizdeki bütün örnekler aynı sınıfa ait ise o veri setinin entropisi sıfırdır, eğer eşit sayıda iki sınıftan örnekler bulunuyorsa maksimum impurity(saf olmama) olmuş olur ve veri setimizin entropisi alabileceği maksimum değer olan 1 olmuş olur. Entropi için çeşitlilik demek doğru olmayanilir, çeşitliliğin büyüklüğü değil dağılımının daha çok önemi vardır.

Aşağıdaki şekilde hesaplanır, veri setindeki bütün sınıflar(n adet) için o sınıfın bulunma oranı(Pi) ve bu oranın 2 tabanında logaritmasının çarpımının toplamıdır.

Entropi = $latex \sum_{i}^{n} -P_{i} log_{2} (P_{i}) $

Küçük bir örnek verelim bununla ilgili, iki okulumuz olsun ve bunların öğrenci cinsiyetlerine göre entropilerini bulalım.

Birinci okul, karma bir sistem var 55 erkek 45 kadın öğrenci toplam 100 kişi.
Entropi = (-1 * 55/100 * -0.86) + (-1 * 45/100 * -1.15) = 0.47 + 0.51 = 0.98
Beklediğimiz gibi çok yüksek bir entropi çıktı

İkinci okul Erkek Meslek lisesi olsun, 100 erkek 0 kadın.
Entropi = (-1 * 100/100 * 0) = 0
Çeşitlilik olmadığı yani saflık maksimum olduğu için entropi sıfır çıktı.

Karar ağaçları tek bir kök ayrım ile başlayarak en saf yapraklara dallanma amacıyla ilerler. Yani son yaprakların entropisinin sıfır olması en iyi sonucu verir bize.

Bilgi Kazanımı (Information Gain)

Eşik değer belirleyip bir dallanma yaptığımızda sistemin entropisindeki azalma bize bilgi kazanımındaki artış olarak döner. Sistemin amacı bilgi kazanımı maksimum yapmaktır.

Bilgi kazanımı dallanmadan önceki ve sonraki entropi toplamlarının farkı ile bulunur, dediğim gibi ne kadar yüksek olursa entropiyi o kadar düşürmüşüzdür ve optimum sınıflandırmaya o kadar yaklaşmışızdır.

Teorik olarak bu hesaplamalar ile yapılıyor bir karar ağacı öğrenmesi. Scikit-learn ekibi sağolsun bunlarla uğraşmadan bir kaç satır Python kodu ile bu modeli verimize uygulayabiliriz. Tree adındaki modülün nasıl kullanıldığını gösterelim.

from sklearn import tree

# basitlik için verimizin hazır geldiğini düşünelim
feature_x, feature_y, test_x, test_y = getData()

clf = tree.DecisionTreeClassifier()
clf = clf.fit(feature_x, feature_y)

# öğrenmenin başarısı için score metodu kullanılır
score = clf.score(test_x, test_y)

# predict metodu ile sınıf tahmini yapabiliriz
predicted_y = clf.predict(unknown_x)

# predict_proba metodu ile bütün sınıflar için bir tahmin oranı elde edebiliriz.
probability_y = clf.predict_proba(unknown_x)

Kaynak:
https://sadanand-singh.github.io/posts/treebasedmodels


Yayımlandı

kategorisi

yazarı:

Yorumlar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir