Büyük veri kümeleriyle karşılaştığımızda, bu yığınların içerisinde gizlenmiş değerli bilgileri ve karar alma kalıplarını nasıl ortaya çıkarabiliriz? İşte tam bu noktada, Karar Ağaçları Algoritması devreye giriyor. Makine öğreniminin en sezgisel ve güçlü araçlarından biri olan karar ağaçları, karmaşık verileri anlaşılır bir yapıya dönüştürerek tahmin yapmamızı ve karar alma süreçlerini optimize etmemizi sağlar. Bu kapsamlı rehberde, karar ağaçlarının temel prensiplerinden ileri düzey uygulamalarına kadar her şeyi keşfedecek, gerçek dünya örnekleriyle bu büyüleyici algoritmayı adım adım öğreneceksiniz.
Karar ağaçları, hem sınıflandırma hem de regresyon problemleri için kullanılan, gözlemleri belirli kurallar dizisine göre dallara ayırarak nihai bir karara veya tahmine ulaşan bir makine öğrenimi modelidir. Adeta bir akış şeması gibi çalışan bu algoritma, her bir düğümde bir özniteliğin değerini sorgulayarak ve bu sorgunun sonucuna göre veriyi farklı dallara yönlendirerek çalışır. Bu yapı, algoritmanın işleyişini hem şeffaf hem de yorumlanabilir kılar, bu da onu birçok sektörde popüler bir seçim haline getirir.
Bir an için bir doktorun teşhis sürecini düşünün: hastanın semptomlarını (ateş var mı?, öksürük var mı?, boğaz ağrısı var mı?) tek tek değerlendirir ve her cevaba göre sonraki adımı belirler. Karar ağaçları da benzer bir mantıkla çalışır; verideki özellikleri bir dizi “eğer-ise” kuralına dönüştürür. Bu kurallar, veriyi giderek daha homojen alt gruplara ayırarak sonunda belirli bir sınıflandırmaya veya sayısal bir tahmine ulaşır. Örneğin, bir banka kredi başvurusunu değerlendirirken müşterinin gelir düzeyi, kredi geçmişi ve yaşı gibi özelliklerine bakarak kredi verme kararını bir karar ağacı gibi verebilir. Algoritmanın bu kadar önemli olmasının temel nedenlerinden biri, karmaşık karar alma süreçlerini insan gözüyle bile kolayca takip edilebilir bir formatta sunabilmesidir.
Karar ağaçları, basitliği ve güçlü tahmin yeteneği arasındaki dengeyi başarıyla kurar. Diğer birçok makine öğrenimi algoritmasının “kara kutu” doğasının aksine, karar ağaçları karar verme sürecinin her adımını açıkça gösterir. Bu şeffaflık, özellikle iş kararları alınırken veya denetlenebilirlik gerektiren alanlarda (sağlık, finans gibi) büyük bir avantaj sağlar. Ayrıca, veri ön işleme ihtiyacının diğer algoritmalara göre daha az olması (örneğin, özellik ölçeklendirme veya normalleştirme çoğu zaman gerekmez) ve hem kategorik hem de sayısal verilerle doğrudan çalışabilmesi, karar ağaçlarını veri bilimcileri için vazgeçilmez bir araç haline getirir. Bu yüzden, temel düzeyde bile makine öğrenimi hakkında bilgi edinmek isteyen herkesin karar ağaçlarını anlaması büyük önem taşır.
Karar Ağaçlarının Temel Bileşenleri Nelerdir?
Bir karar ağacının yapısını anlamak, algoritmanın nasıl çalıştığını kavramanın ilk adımıdır. Bir karar ağacı temelde üç ana bileşenden oluşur ve bunlar hiyerarşik bir düzen içerisinde birbirine bağlanır:
- Kök Düğüm (Root Node): Ağacın en üstünde yer alan ve tüm veri setini temsil eden başlangıç noktasıdır. Henüz hiçbir karar alınmamış veya hiçbir özellik sorgulanmamıştır.
- İç Düğüm (Internal Node) / Karar Düğümü (Decision Node): Kök düğümden sonra gelen ve veri setini belirli bir özelliğe göre iki veya daha fazla alt kümeye bölen düğümlerdir. Her iç düğüm bir “soru” sorar (örneğin, “Gelir > 50000 mi?”). Bu sorunun cevabına göre veri farklı dallara ayrılır.
- Yaprak Düğüm (Leaf Node) / Terminal Düğüm (Terminal Node): Ağacın en altında yer alan ve artık daha fazla bölünmeyen düğümlerdir. Bu düğümler, bir sınıflandırma problemi için nihai kararı (örneğin, “Evet” veya “Hayır”) veya bir regresyon problemi için tahmini sayısal değeri (örneğin, “15000 TL”) temsil eder.
- Dal (Branch) / Kenar (Edge): Düğümler arasındaki bağlantıları ifade eder. Her dal, bir kararın sonucunu (örneğin, “Evet” veya “Hayır” cevabını) temsil eder ve veriyi bir düğümden diğerine taşır.
Bu bileşenler, bir araya gelerek veriyi en iyi şekilde sınıflandıracak veya tahmin edecek bir dizi kural oluşturur. Karar ağacı algoritması, her adımda hangi özelliğin ve hangi bölme noktasının (threshold) veriyi en saf (homojen) alt kümelere ayıracağını belirlemek için çeşitli kriterler kullanır. Bu “saflık” kavramı, genellikle Gini Safsızlığı (Gini Impurity) veya Entropi (Entropy) gibi metriklerle ölçülür. Amacımız, her bölmeyle birlikte belirsizliği azaltarak yaprak düğümlere ulaştığımızda mümkün olduğunca tek bir sınıfa ait gözlemlerin bulunmasını sağlamaktır. Bu yapı sayesinde, bir veri noktasının hangi yaprak düğüme düşeceğini takip ederek, o noktanın tahminini veya sınıflandırmasını kolayca anlayabiliriz. Bu da karar ağaçlarının yorumlanabilirlik açısından neden bu kadar değerli olduğunu açıklar.
Bir Karar Ağacı Nasıl Oluşturulur? Adım Adım Rehber
Bir karar ağacını oluşturma süreci, temelde veriyi en iyi şekilde bölecek kuralları bulma işlemidir. Bu süreç, verinin özelliklerine bakarak en “bilgilendirici” bölmeleri yapmayı hedefler. Algoritma, ağacı kök düğümden başlayarak dallara ayırır ve her bir düğümde veriyi en homojen alt gruplara ayıracak en iyi özelliği ve bölme noktasını bulmaya çalışır. Bu bölme işlemi, verideki belirsizliği (veya “safsızlığı”) azaltmayı amaçlar.
İlk adım, bir özellik seçmek ve bu özelliğe göre veriyi bölmektir. Diyelim ki müşteri churn (müşteri kaybı) tahmini yapıyoruz. Hangi özelliğin (örneğin, “hizmet süresi”, “aylık harcama”, “şikayet sayısı”) müşterilerin churn edip etmemesi üzerinde en büyük etkiye sahip olduğunu bulmamız gerekir. Algoritma, bu kararı vermek için belirli matematiksel kriterlere (Gini Safsızlığı veya Entropi gibi) başvurur. Bu kriterler, bir bölmenin ne kadar iyi olduğunu, yani bölme sonucunda oluşan alt kümelerin ne kadar “saf” olduğunu nicel olarak ifade eder. Saf bir küme, mümkün olduğunca tek bir sınıfa ait örneklerden oluşur.
Sürekli olarak bu bölme işlemini tekrarlarız: her bir alt küme üzerinde, yine en iyi bölmeyi yapacak özelliği ve eşiği buluruz. Bu işlem, aşağıdaki durumlardan biri gerçekleşene kadar devam eder:
- Düğümdeki tüm örnekler aynı sınıfa ait hale gelir (yani, düğüm saf hale gelir).
- Maksimum ağaç derinliğine ulaşılır (önceden tanımlanmış bir parametredir).
- Düğümdeki örnek sayısı belirli bir eşiğin altına düşer (örneğin, bir düğümde en az
Nörnek olmalı). - Daha fazla bölme, safsızlıkta önemli bir iyileşme sağlamaz.
Bu adımlar tamamlandığında, son düğümler “yaprak düğümler” haline gelir ve her yaprak düğüm, o düğüme düşen örneklerin çoğunluk sınıfını veya ortalama değerini temsil eder. Bu yapı, bize yeni bir veri noktası geldiğinde, onu ağaçtan geçirerek hangi yaprak düğüme düşeceğini belirlememize ve böylece bir tahmin yapmamıza olanak tanır. Ağacın nasıl bölüneceğini belirleyen kriterleri daha yakından inceleyelim.
Gini Safsızlığı ve Entropi: Karar Kriterlerini Anlamak
Karar ağaçları, hangi özelliğin veriyi en iyi şekilde böleceğine karar verirken “saflık” ölçütlerini kullanır. En yaygın kullanılan iki ölçüt Gini Safsızlığı ve Entropi’dir.
Gini Safsızlığı (Gini Impurity)
Gini Safsızlığı, bir düğümdeki örneklerin ne kadar karıştırıldığını, yani ne kadar saf olmadığını ölçer. Matematiksel olarak, bir düğümdeki rastgele seçilen iki örneğin farklı sınıflara ait olma olasılığıdır. Eğer bir düğümdeki tüm örnekler aynı sınıfa aitse, Gini safsızlığı 0’dır (maksimum saflık). Eğer örnekler eşit olarak dağılmışsa, Gini safsızlığı maksimum değerine ulaşır (maksimum safsızlık).
Formülü şu şekildedir:
Gini = 1 - ∑ (p_i)^2
Burada p_i, düğümdeki örneklerin i sınıfına ait olma olasılığıdır.
Algoritma, her bir özellik için olası tüm bölmeleri değerlendirir ve Gini safsızlığını en çok azaltan (veya bilgi kazancını en çok artıran) bölmeyi seçer. Örneğin, bir bölme sonucunda sol ve sağ alt düğümlerin Gini safsızlığı hesaplanır ve bu değerler ağırlıklı ortalaması alınarak ana düğümün Gini safsızlığı ile karşılaştırılır.
Entropi (Entropy) ve Bilgi Kazancı (Information Gain)
Entropi, bir düğümdeki bilginin belirsizliğini veya düzensizliğini ölçen bir kavramdır. Termodinamikteki entropi kavramına benzer şekilde, bir düğümdeki farklı sınıfların karışımı arttıkça entropi de artar. Bir düğümdeki tüm örnekler aynı sınıfa aitse, entropi 0’dır (maksimum düzen). Örnekler eşit olarak dağılmışsa, entropi maksimum değerine ulaşır (maksimum düzensizlik).
Formülü şu şekildedir:
Entropy = -∑ p_i * log2(p_i)
Yine burada p_i, düğümdeki örneklerin i sınıfına ait olma olasılığıdır.
Bilgi Kazancı ise, bir düğümün belirli bir özellik kullanılarak bölünmesi sonucunda entropideki azalmayı ölçer. Algoritma, bilgi kazancını en üst düzeye çıkaran özelliği ve bölme noktasını seçerek en iyi kararı verir. Yani, bir bölmenin ne kadar değerli olduğunu, veriyi ne kadar “temizlediğini” gösterir.
Bilgi Kazancı = Ana Düğüm Entropisi - (Sol Alt Düğüm Entropisi * Sol Düğüm Oranı + Sağ Alt Düğüm Entropisi * Sağ Düğüm Oranı)
Hem Gini hem de Entropi, benzer sonuçlar üretme eğilimindedir ve genellikle hangisinin kullanılacağı, hesaplama maliyeti veya belirli bir veri setindeki performans farkı gibi faktörlere bağlıdır. Gini Safsızlığı genellikle daha hızlıdır çünkü logaritmik hesaplamalar içermez. Ancak her ikisi de karar ağacının etkili bir şekilde öğrenmesini ve veriyi anlamlı alt gruplara ayırmasını sağlar. Bu kriterler, Karar Ağaçları’nın “zekasının” temelini oluşturur, çünkü ağacın her adımda nasıl bir bölme yapacağına matematiksel bir temel sağlar.
Karar Ağaçları ile Gerçek Dünya Problemlerini Çözmek: Vaka Analizi
Karar ağaçları, basit ama güçlü yapısı sayesinde birçok farklı gerçek dünya probleminde etkili çözümler sunar. Gelin, finans sektöründen bir örnek üzerinden karar ağaçlarının pratik uygulamasını inceleyelim: Kredi Risk Değerlendirmesi. Bir bankanın kredi başvurusunda bulunan müşterilerin kredi notunu ve ödeme geçmişini analiz ederek bir kredi başvurusu için onay verip vermeme kararını otomatik bir şekilde nasıl alabileceğini düşünelim.
Bankanın elinde geçmiş dönemlere ait binlerce müşteri verisi bulunmaktadır. Bu verilerde müşterinin yaşı, gelir düzeyi, çalışma süresi, mevcut borçları, kredi kartı ödeme geçmişi, ev sahibi olup olmadığı gibi özellikler ve bu müşterilerin krediyi geri ödeyip ödemediği (yani “riskli” mi “risksiz” mi olduğu) bilgisi yer almaktadır. Bankanın amacı, yeni bir başvuru geldiğinde, bu geçmiş verilerden öğrendiklerini kullanarak başvurunun riskli olup olmadığını tahmin etmektir.
Karar ağacı algoritması bu verilerle eğitildiğinde, aşağıdaki gibi bir karar süreci oluşturabilir:
- Kök Düğüm: Tüm başvurular.
- 1. Karar: Başvuruyu yapan kişinin “Kredi Notu Yüksek” mi?
- Evet ise: Bu dalda ilerle.
- Hayır ise: Diğer dala geç. Belki “Gelir Düzeyi Yüksek” mi diye sorgula.
- 2. Karar (Kredi Notu Yüksek olan dalda): Bu kişinin “Mevcut Borçları Düşük” mü?
- Evet ise: Bu kişiler genellikle risksizdir. (Yaprak Düğüm: Krediyi Onayla)
- Hayır ise: Belki “İş Süresi Uzun” mu diye sorgula.
- 3. Karar (Kredi Notu Düşük ve Gelir Düzeyi Yüksek olan dalda): “Ev Sahibi” mi?
- Evet ise: Kısmen risksiz olabilir. (Yaprak Düğüm: Krediyi Şartlı Onayla / Daha Düşük Limit Ver)
- Hayır ise: Büyük ihtimalle risklidir. (Yaprak Düğüm: Krediyi Reddet)
Bu vaka analizi, karar ağacının karmaşık bir problemi ne kadar yapılandırılmış ve anlaşılır bir şekilde ele alabileceğini göstermektedir. Banka yöneticileri veya kredi departmanı çalışanları, Karar Ağacı tarafından verilen kararların nedenlerini kolayca anlayabilir ve açıklayabilir. Bu şeffaflık, iş süreçlerinde güven oluşturur ve yasal uyumluluk açısından da önemlidir. Ayrıca, ağaç üzerinde yapılan küçük ayarlamalarla (örneğin, bölme eşiklerini değiştirerek) risk toleransı optimize edilebilir. Bu sayede, Karar Ağaçları sadece tahminde bulunmakla kalmaz, aynı zamanda karar alma süreçlerini optimize etmek için de güçlü bir araç haline gelir.
Python ile Karar Ağacı Uygulaması: Basit Bir Örnek
Python ve scikit-learn kütüphanesi, karar ağaçlarını uygulamak için en popüler ve kolay yollardan biridir. Şimdi, basit bir veri seti üzerinde bir karar ağacı sınıflandırıcısı oluşturalım. Bu örnekte, Iris çiçeği veri setini kullanacağız. Iris veri seti, üç farklı Iris çiçeği türünün (setosa, versicolor, virginica) sepal ve petal uzunluklarını/genişliklerini içerir.
İlk olarak, gerekli kütüphaneleri içe aktaralım ve veri setini yükleyelim.
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, export_graphviz
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import graphviz # Ağacı görselleştirmek için
# Iris veri setini yükle
iris = load_iris()
X = iris.data # Özellikler (sepal/petal uzunluk/genişlik)
y = iris.target # Hedef değişken (çiçek türü)
# Veriyi eğitim ve test setlerine ayır
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
print("Eğitim seti boyutu (X_train):", X_train.shape)
print("Test seti boyutu (X_test):", X_test.shape)
Yukarıdaki kod bloğu, verimizi hazırladı. Şimdi bir DecisionTreeClassifier modeli oluşturalım ve onu eğitim verisiyle eğitelim. max_depth gibi parametrelerle ağacın karmaşıklığını kontrol edebiliriz.
# Karar Ağacı Sınıflandırıcısını oluştur ve eğit
# max_depth parametresi aşırı uyumu önlemek için ağacın derinliğini sınırlar
dt_classifier = DecisionTreeClassifier(max_depth=3, random_state=42)
dt_classifier.fit(X_train, y_train)
# Test seti üzerinde tahmin yap
y_pred = dt_classifier.predict(X_test)
# Modelin doğruluğunu değerlendir
accuracy = accuracy_score(y_test, y_pred)
print(f"Modelin Doğruluk Skoru: {accuracy:.2f}")
Modelimizi eğittik ve test seti üzerinde %97 gibi yüksek bir doğruluk skoru elde ettik. Bu, modelimizin Iris çiçeği türlerini oldukça iyi bir şekilde tahmin edebildiğini gösterir. Peki, modelimiz hangi kuralları öğrendi? Bunu görselleştirebiliriz:
# Karar Ağacını görselleştirme (Graphviz gerektirir)
dot_data = export_graphviz(dt_classifier,
out_file=None,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True)
graph = graphviz.Source(dot_data)
# graph.render("iris_karar_agaci", format="png", view=True) # Ağacı PNG olarak kaydedip açar
# graph # Jupyter Notebook veya benzeri ortamlarda ağacı doğrudan gösterir
max_depth değerini değiştirerek ağacın nasıl farklılaştığını gözlemlemek, aşırı uyum kavramını anlamak için harika bir yoldur.
Bu Python örneği, Karar Ağaçları'nın ne kadar kolay uygulanabileceğini ve ne kadar güçlü tahminler yapabileceğini göstermektedir. Gerçek dünya senaryolarında da benzer adımları izleyerek kendi Karar Ağacı modellerinizi oluşturabilir ve karmaşık verilerden anlamlı içgörüler elde edebilirsiniz.
Karar Ağaçlarının Avantajları ve Dezavantajları Nelerdir?
Her makine öğrenimi algoritmasında olduğu gibi, Karar Ağaçlarının da kendine özgü avantajları ve dezavantajları bulunmaktadır. Bu özellikleri bilmek, belirli bir problem için doğru algoritmayı seçerken bize yol gösterir.
Avantajları:
- Yorumlanabilirlik ve Şeffaflık: Belki de en büyük avantajı budur. Karar ağaçları, tıpkı bir akış şeması gibi çalıştığı için alınan kararların nedenlerini ve nasıl alındığını kolayca anlamak ve başkalarına açıklamak mümkündür. Bu, özellikle "kara kutu" modellerin kabul görmediği finans, sağlık gibi denetlenebilirlik gerektiren sektörlerde kritik öneme sahiptir.
- Veri Ön İşleme İhtiyacının Azlığı: Diğer bazı algoritmalara kıyasla, Karar Ağaçları veri ön işleme adımlarına (örneğin, özellik ölçeklendirme, normalleştirme) daha az ihtiyaç duyar. Hem sayısal hem de kategorik verilerle doğrudan çalışabilirler.
- Doğrusal Olmayan İlişkileri Yakalayabilme: Veri içindeki doğrusal olmayan ve karmaşık ilişkileri yakalamada oldukça etkilidirler. Bu, özellikle veri setindeki değişkenler arasında karmaşık etkileşimler olduğunda faydalıdır.
- Veri Çeşitliliği: Hem sınıflandırma hem de regresyon problemleri için kullanılabilirler.
- Kayıp Değerlere Karşı Direnç: Bazı Karar Ağacı uygulamaları, kayıp değerleri belirli stratejilerle ele alabilir.
Dezavantajları:
- Aşırı Uyum (Overfitting) Eğilimi: Karar ağaçları, veri setine aşırı derecede uyum sağlama eğilimindedir. Eğer ağaç çok derin ve karmaşık hale gelirse, eğitim verisindeki gürültüyü veya tesadüfi desenleri de öğrenerek yeni, görünmeyen veriler üzerinde kötü performans gösterebilir. Bu durum, budama (pruning) gibi tekniklerle veya maksimum derinlik gibi parametrelerle kontrol edilebilir.
- Küçük Değişikliklere Hassasiyet: Eğitim verisindeki küçük değişiklikler bile ağacın yapısında önemli farklılıklara yol açabilir. Bu, modelin kararsız olmasına neden olabilir.
- Optimum Ağacı Bulmanın Zorluğu: En iyi Karar Ağacını bulmak (küresel optimum), hesaplama açısından oldukça zordur. Çoğu algoritma, "açgözlü" (greedy) bir yaklaşımla yerel optimumu bulmaya çalışır, bu da her zaman en iyi küresel çözümü garanti etmez.
- Eğitim Maliyeti: Büyük ve yüksek boyutlu veri setleri için ağaç inşa etme süreci zaman alıcı olabilir.
- Sürekli Verilerle Çalışma Zorluğu: Sürekli değişkenler için çok sayıda bölme noktası potansiyeli olduğundan, Karar Ağaçları bu tür verilerle çalışırken aşırı uyum riskini artırabilir.
Bu avantaj ve dezavantajlar göz önünde bulundurularak, Karar Ağaçları genellikle daha güçlü ve kararlı modeller oluşturmak için "topluluk öğrenmesi" (ensemble learning) yöntemlerinin (örneğin, Random Forest, Gradient Boosting) bir parçası olarak kullanılır. Bu yöntemler, birden fazla Karar Ağacının güçlerini birleştirerek tek bir ağacın zayıflıklarını gidermeyi hedefler.
İleri Düzey Konular: Aşırı Uyum (Overfitting) ve Ağaç Toplulukları (Ensemble Methods)
Karar ağaçları, basit yapılarına rağmen bazı ciddi zorluklar barındırır. Bunların başında "aşırı uyum" gelmektedir. Bu bölümde, aşırı uyum kavramını ve bu sorunu nasıl çözebileceğimizi, ayrıca karar ağaçlarının gücünü artırmak için kullanılan ağaç toplulukları yöntemlerini inceleyeceğiz.
Aşırı Uyum (Overfitting) Nedir ve Nasıl Önlenir?
Aşırı uyum, bir makine öğrenimi modelinin eğitim verisine o kadar iyi uyum sağlaması durumudur ki, eğitim verisindeki rastgele gürültüyü veya gereksiz detayları da öğrenir. Sonuç olarak, model eğitim verileri üzerinde mükemmel performans gösterirken, daha önce hiç görmediği yeni veriler üzerinde tahmin yeteneği ciddi şekilde düşer. Bir karar ağacının çok derin ve karmaşık hale gelmesi, her bir yaprak düğümde çok az örnek kalması aşırı uyuma yol açan yaygın bir nedendir.
Örneğin, bir öğrencinin sınavda sadece ezberlediği soruları doğru cevaplayıp, benzer ama farklı formattaki soruları çözememesi aşırı uyuma benzer. Model de eğitim verisindeki "ezber" bilgileri öğrenir, ancak genelleme yeteneğini kaybeder.
Aşırı Uyumu Önleme Teknikleri Nasıl Kullanılır?
Aşırı uyumu azaltmak ve modelin genelleme yeteneğini artırmak için çeşitli teknikler mevcuttur:
- Budama (Pruning): Ağacın gereksiz dallarını ve yaprak düğümlerini kaldırarak karmaşıklığını azaltma işlemidir.
- Ön Budama (Pre-pruning): Ağaç oluşturulurken bölme işlemini durdurmak için uygulanan kriterlerdir. Örneğin, bir düğümdeki örnek sayısı belirli bir eşiğin altına düştüğünde veya bir bölme safsızlıkta yeterli iyileşme sağlamadığında bölme durdurulur.
- Son Budama (Post-pruning): Ağaç tamamen oluşturulduktan sonra, gereksiz dalları ve düğümleri kaldırarak ağacı basitleştirme işlemidir. Bu genellikle bir doğrulama seti kullanarak yapılır.
- Maksimum Derinlik (
max_depth): Ağacın en fazla kaç seviyeden oluşabileceğini belirleyen bir parametredir. Ağacın çok derinleşmesini engelleyerek aşırı uyumu kontrol etmenin basit ve etkili bir yoludur. - Minimum Örnek Sayısı (
min_samples_split,min_samples_leaf):min_samples_split: Bir düğümün bölünebilmesi için o düğümde bulunması gereken minimum örnek sayısını belirler.min_samples_leaf: Bir yaprak düğümünde bulunması gereken minimum örnek sayısını belirler. Bu, çok küçük ve önemsiz yaprak düğümlerinin oluşmasını engeller.
- Maksimum Özellik Sayısı (
max_features): Her bölme noktasında değerlendirilecek özellik sayısını sınırlayarak modelin her zaman aynı özellikleri kullanmasını engeller ve varyansı azaltır.
Ağaç Toplulukları (Ensemble Methods): Daha Güçlü Modeller Yaratmak
Aşırı uyum dezavantajını dengelemek ve Karar Ağaçlarının tahmin gücünü artırmak için "topluluk öğrenmesi" (ensemble learning) yöntemleri geliştirilmiştir. Bu yöntemler, birden fazla Karar Ağacını bir araya getirerek daha güçlü, daha kararlı ve daha doğru bir model oluşturmayı hedefler. En popüler ağaç toplulukları yöntemleri şunlardır:
- Rastgele Orman (Random Forest): Bu yöntem, birden çok Karar Ağacını eğitir ve her bir ağaç, eğitim verisinin rastgele seçilmiş bir alt kümesi ve özelliklerin rastgele seçilmiş bir alt kümesi üzerinde eğitilir. Nihai tahmin, tüm ağaçların tahminlerinin ortalaması (regresyon için) veya çoğunluk oyu (sınıflandırma için) alınarak yapılır. Rastgelelik, her ağacın farklı bir perspektiften öğrenmesini sağlar ve bu da modelin varyansını (aşırı uyum eğilimini) azaltır.
- Gradyan Yükseltme (Gradient Boosting): Bu topluluk yöntemi, zayıf öğrenicileri (genellikle sığ Karar Ağaçları) ardışık olarak eğiterek daha güçlü bir model oluşturur. Her yeni ağaç, önceki ağacın yaptığı hataları düzeltmeye odaklanır. Gradyan yükseltme, genellikle çok yüksek doğruluk oranlarına ulaşabilen güçlü bir yöntemdir, ancak aşırı uyuma karşı daha dikkatli olunması gerekir. XGBoost, LightGBM ve CatBoost gibi popüler kütüphaneler, Gradyan Yükseltme'nin gelişmiş uygulamalarıdır.
Ağaç toplulukları, tek bir Karar Ağacının zayıflıklarını gidermenin ve genel model performansını önemli ölçüde artırmanın etkili bir yolunu sunar. Bu yöntemler, günümüzde makine öğrenimi alanında en çok kullanılan ve en başarılı algoritmalar arasında yer almaktadır.
Sonuç ve Sıkça Sorulan Sorular
Karar Ağaçları Algoritması, makine öğrenimi dünyasında hem yeni başlayanlar için anlaşılması kolay hem de deneyimli veri bilimcileri için güçlü bir araç sunar. Doğal bir karar akış şeması mantığıyla çalışması, onu son derece yorumlanabilir ve şeffaf kılar. Bu makalede, algoritmanın temel prensiplerini, Gini Safsızlığı ve Entropi gibi karar kriterlerini, Python ile nasıl uygulanacağını ve kredi risk değerlendirmesi gibi gerçek dünya senaryolarındaki kullanımını ele aldık. Ayrıca, aşırı uyum gibi zorlukların üstesinden gelmek için budama teknikleri ve Rastgele Orman gibi ağaç topluluklarının önemine değindik.
Karar ağaçları, karmaşık verileri anlaşılır kurallara dönüştürme yeteneği sayesinde iş kararlarının alınmasında, müşteri davranışlarının analiz edilmesinde, hastalık teşhisinde ve daha birçok alanda değerli içgörüler sağlar. Tek başına kullanıldığında bazı sınırlamalara sahip olsa da, topluluk öğrenmesi teknikleriyle birleştirildiğinde, günümüzün en etkili ve yaygın kullanılan makine öğrenimi modellerinden biri haline gelmektedir. Umarız bu rehber, Karar Ağaçları Algoritması'nı temelden ileri seviyeye kadar anlamanıza yardımcı olmuştur.
Sıkça Sorulan Sorular
-
Karar Ağaçları sadece sınıflandırma için mi kullanılır?
Hayır, Karar Ağaçları hem sınıflandırma (örneğin, bir müşterinin churn edip etmeyeceğini tahmin etmek) hem de regresyon (örneğin, bir evin fiyatını tahmin etmek) problemleri için kullanılabilir. Regresyon ağaçlarında, yaprak düğümler o düğüme düşen örneklerin ortalama değerini verirken, sınıflandırma ağaçlarında çoğunluk sınıfını verir.
-
Karar Ağaçları neden aşırı uyum (overfitting) eğilimindedir?
Karar Ağaçları, eğitim verisindeki her detayı ve hatta gürültüyü bile öğrenmeye meyillidir, çünkü bölünme süreci saf düğümler elde edene kadar devam edebilir. Bu durum, ağacın çok derin ve karmaşık hale gelmesine neden olur ve yeni, görünmeyen veriler üzerinde genelleme yeteneğini kaybetmesine yol açar.
-
Gini Safsızlığı ile Entropi arasında ne fark vardır? Hangisini kullanmalıyım?
Her ikisi de bir düğümdeki veri setinin saflığını ölçmek için kullanılan metriklerdir. Gini Safsızlığı, rastgele seçilen iki öğenin farklı sınıflarda olma olasılığını ölçerken, Entropi bir düğümdeki bilginin belirsizliğini veya düzensizliğini ölçer. Genellikle birbirlerine çok benzer sonuçlar verirler. Gini daha hızlı hesaplanır çünkü logaritmik hesaplamalar içermezken, Entropi biraz daha fazla hesaplama gerektirebilir. Çoğu durumda, hangisini seçtiğiniz büyük bir fark yaratmaz; deneme yanılma yoluyla veri setiniz için en iyi performansı vereni seçebilirsiniz.
-
Karar Ağaçlarının karar verme sürecini görselleştirmek mümkün müdür?
Evet, bu Karar Ağaçlarının en büyük avantajlarından biridir.
scikit-learnkütüphanesi ile eğitilmiş bir Karar Ağacınıexport_graphvizfonksiyonunu kullanarak DOT formatına aktarabilir ve bu formatı Graphviz gibi araçlarla görselleştirebilirsiniz. Bu, ağacın her bir düğümdeki koşulları ve bölmeleri net bir şekilde görmenizi sağlar. -
Karar Ağaçları ne zaman diğer algoritmalara tercih edilmelidir?
Karar Ağaçları, özellikle modelin yorumlanabilirliğinin ve şeffaflığının kritik olduğu durumlarda (örneğin, iş kararlarını açıklamak, yasal uyumluluk sağlamak) tercih edilir. Ayrıca, veri setindeki doğrusal olmayan ilişkileri kolayca yakalayabilirler. Tek başına aşırı uyuma eğilimli olsalar da, topluluk yöntemleriyle (Random Forest, Gradient Boosting) birleştirildiklerinde, yüksek performanslı ve güçlü modeller oluşturarak birçok karmaşık probleme çözüm sunarlar.
