Her bir düğüm (node) gini özelliğine sahiptir: gini özelliği o düğümün “kirlilik” (impurity) ni ölçer: Eğer o düğümdeki eğitim örneklerinin hepsi aynı sınıftan ise, düğüm saftır (gini = 0) denir. Formulü ise:
CART Algoritması
Scikit-Learn’in karar ağaçları için CART algoritmasını kullandığını bir önceki yazıda söylemiştim. Algoritmadan bahsedelim: algoritma ilk olarak eğitim verilerini tek bir öznitelik ve bir eşik değeri kullanarak iki altkümeye ayırmaktadır. Bu özniteliği ve eşik değerini de olabildiğince saf düğümler oluşturacak şekilde seçmektedir. Daha sonra oluşturduğu bu altkümeleri aynı mantıkla ikiye bölerek devam etmektedir. Peki nereye kadar? Ya kirlilik değerini 0 yapana kadar, ya da max_depth parametresi ile belirlenen derinliğe ulaşana kadar.
Gini impurity ya da Entropi?
Bir düğümün kirliliğini ölçmek için “entropi” de kullanılabilir. Makine öğrenimi için entropi kavramından bahsedersek, bir kümedeki elemanların hepsi aynı sınıftan ise, entropi sıfırdır denir. Aşağıda entropinin formulü verilmiştir:
Peki hangisini kullanmalıyız? Çoğu zaman her ikisi de sonuç olarak aynı ağacı oluşturmaktadır. Gini impurity, daha hızlı çalışmaktadır. O yüzden varsayılan olarak iyi bir seçim olabilir.
Bir sonraki yazıda görüşmek üzere.
Kaynaklar
- Geron, A. (2017). Hands-On Machine Learning with Scikit-Learn and TensorFlow Concepts, Tools, and Techniques for Building Intelligent Systems. Sebastopol: OReilly UK Ltd.