Table of Contents
Karar ağacı, bir veri setini, bir dizi karar uygulayarak daha küçük kümelere bölmek için kullanılan bir yapıdır. Karar ağacında ilk bölünmenin başladığı yere kök, dalların uzaması ile gelişen kısımlara düğüm, alt uçlara ise yaprak denir. Karar ağaçları, en iyi bölünmeyi seçmek için farklı kriterler kullanır. Daha uzun ağaçlar yerine daha kısa ağaçlar tercih edilir. Düğümler:
- Internal Node: Özelliğin adı.
- Branch: Bir üstteki özelliğin değeri.
- Leaf Node: Tahmin Sınıfı.
Karar ağaçlarının avantajları;
- Yorumlaması kolaydır.
- Kullanılan ağaçlar görselleştirilebilir (sklearn.tree.plot_tree()).
- Değişken seçimi yapabilir.
- Maliyeti kullanılan veri boyutu ile logaritmiktir.
Karar ağaçlarının dezavantajları;
- Overfitting sorunu. Budama işlemi ile önlenebilir.
- Heterojen veri üzerinde iyi performans göstermez.
- Yalnızca tek bir özellikle ilişkilendirilen ikinci sıra bağımlılıkları yakalayamaz.
Karar ağaçlarında en sık kullanılan algoritmalar;
- Bilgi Kazancı (Information Gain): Bir düğümün bölünmesinin ne kadar bilgi kazandıracağını ölçer. Bilgi kazancı, her alt düğümün belirli bir özellikle ne kadar homojen olduğunu gösteren bir metriktir. Bilgi kazancı, bir özellikle yapılan bölünmenin önceki duruma göre ne kadar daha az belirsizlik (bilgi eksikliği) getirdiğini ölçer. Bu, ağacın daha homojen alt gruplara bölünmesine ve iyi tahminler yapmasına yardımcı olur.
- Entropi (Entropy): Bir veri kümesinin ne kadar homojen veya heterojen olduğunu ölçen bir kavramdır. Daha yüksek entropi, daha fazla belirsizlik veya bilgi eksiliği anlamına gelir. Entropi şu formülle hesaplanır: E(S) = -p1 * log2(p1) – p2 * log2(p2) – … – pk * log2(pk), burada p1, p2, …, pk, S’deki her sınıfın olasılıklarıdır.
- Dallanma (Split): Bir özellik seçilir ve veri kümesi bu özelliğe göre alt gruplara bölünür. Her alt grup için entropi hesaplanır ve bu alt grupların ağırlıklı ortalaması (weighted average) alınır. Çok sayıda farklı kategorik değer alabilen özelliklerde Information Gain yöntemi etkili olmaz.
- Jini Indeksi (Gini Index): Bir düğümün homojenliğini ölçer. Daha küçük bir jini indeksi, daha homojen bir düğümü temsil eder.
Budama (Pruning), karar ağacında tahmine yeterince katkı yapmayan dallarda tahmin edici değişkenlerin modelden çıkarılması işlemidir. Post ve Pre olarak ikiye ayrılır. Prepruning, tahmin edici değişkenleri teker teker ele alarak modelin tahmin gücü için hangisinin etkili olacağı kararlaştırılarak adım adım dallanmaların ilerletilmesidir. Postpruning, tamamlanmış bir karar ağacından modele katkı yapmayan dalların tespit edilip modelden çıkarılmasıdır.
Çalışma Adımları
- Özellikler ve hedef değişken belirlenir.
- Ağacın kök düğümü seçilir ve veriler bu düğümde belirli bir özelliğe göre bölünür. Ardından, her alt düğüm için aynı adım tekrarlanır.
- Düğümler, en iyi bölünme kriterine göre alt düğümlere bölünür. Bölünme kriterleri genellikle bilgi kazancı, gini indeksi veya ortalama hata gibi metrikler kullanılarak belirlenir.
- Ağaç gereğinden fazla dallanma yapabilir. Bu nedenle gereksiz dallar kaldırılmaldır. (pruning)
- Yeni veriler için tahminler yapılır.
Hiperparametreler
Parametre | Type | Default | Açıklama |
criterion | “gini”, “entropy”, “log_loss” | “gini” | Ağaç oluşturma yöntemidir. |
max_depth | int | None | Ağacın maksimum derinliğini temsil eder. Değer verilmezse limitsiz olur. Overfitting’i önlemek için küçük bir değer girilmelidir. |
min_samples_split | int/float | 2 | Bir düğümün bölünmeden önceki sahip olması gereken minimum örnek sayısıdır. |
min_samples_leaf | int/float | 1 | Bir yaprağın sahip olması gereken minimum örnek sayısıdır. |
min_weight_fraction_leaf | float | 0 | Ağırlıklı örneklerin, toplam örnekler içerisindeki oranını temsil eder. |
max_leaf_nodes | int | None | Maksimum yaprak sayısıdır. Overfitting’i engellemek için kullanılır. |
max_features | int/float, “auto”, “sqrt”, “log2” | None | En iyi bölünme için aranacak feature sayısıdır. |
ID3
1986 yılında Ross Quinlan tarafından oluşturulmuştur. Veri setindeki öznitelikleri kullanarak bir karar ağacı oluşturur ve bu ağaç ile sınıflandırma yapar. ID3, kategorik değerlerle çalışabilir fakat sayısal değerleri doğrudan işleyemez.
Çalışma Adımları
- Öznitelikler arasından en bilgilendirici olanları bulmak için bilgi kazancı (information gain) kullanır.
- Seçilen en bilgilendirici öznitelik, bir karar ağacının bir düğümü olarak kullanılır. Her düğüm, bu özniteliğin farklı değerlerine göre alt düğümlere bölünür.
- ID3, özniteliklerin dallanma noktalarını ve karar ağacındaki düğümleri oluşturur. Her bir düğüm, bir öznitelik ve bu özniteliğin değerlerine göre alt düğümlere bölünür.
- ID3, bu işlemi her alt düğüm için tekrarlar. Her bir alt düğüm, bir veri kümesinin daha homojen alt kümelerine bölünmesini sağlar.
- ID3, bu işlemi veri seti tamamen sınıflandırıldığında durdurur ve bir karar ağacı elde eder.
from id3 import Id3Estimator
classifier = Id3Estimator()
classifier.fit(X_train, y_train)
Extra Trees
Extremely Randomized Trees, ağaçların oluşturulması sırasında rastgelelik kullanarak bir dizi karar ağacı oluşturur ve bu ağaçların tahminlerini bir araya getirerek sonuçları üretir. Diğer ağaç tabanlı yöntemlerden farkı, ağaçların oluşturulması ve eğitim sürecindeki rastgelelik derecesinin daha yüksek olmasıdır.
Çalışma Adımları
- Her bir ağaç oluşturulurken, özelliklerden rastgele bir alt küme seçilir.
- Her özellik için rastgele bir eşik değeri seçilir.
- Rastgele özellik ve eşik değerleri kullanılarak karar ağaçları oluşturulur. Maksimum derinliğe ulaşana kadar büyütülür.
- Bootstrap ile her ağacın farklı bir eğitim veri setiyle eğitilmesi sağlanır.
- Tüm ağaçlar üzerinde tahminler yapılır ve bu tahminler bir araya getirilerek modelin tahminleri üretilir. Sınıflandırma için en sık görülen tahmin alınır. Regresyon için tahminlerin ortalaması alınır.