Karar Ağaçları Nedir? Sınıflandırma ve Regresyon İçin Pratik Bir Python Örneği



Elbette, "Karar Ağaçları" (Decision Trees) konusunu baştan sona açıklayacağım ve örnek bir veri seti üzerinde Python kodu ile nasıl kullanıldığını göstereceğim.


Karar Ağaçları Nedir?

Karar Ağaçları, sınıflandırma ve regresyon görevleri için kullanılan, görsel olarak anlaşılması kolay ve uygulaması basit bir makine öğrenmesi algoritmasıdır. Bu algoritma, veri setini daha küçük alt kümelerine ayırarak çalışır ve bir ağaç yapısı oluşturur. Her "dal" bir karar noktasını (özellik ya da soru) temsil eder ve her "yaprak düğüm" ise bir sonuç (sınıf ya da tahmin) ile sonuçlanır.


Örnek Veri Seti ve Python Kullanımı

Örnek olarak, bir otomobilin özelliklerine (örneğin: marka, model, motor hacmi, kilometre) dayanarak ikinci el fiyatını tahmin eden bir regresyon modeli oluşturalım. İşte adım adım yapılacaklar:


Veri Setinin Yüklenmesi ve Hazırlanması: Öncelikle, uygun bir veri seti seçmeli ve ön işlemlerini yapmalıyız (boş değerlerin doldurulması, kategorik verilerin sayısal hale getirilmesi

Veri setimiz, otomobillerin markasını, yılını, kilometre bilgisini ve fiyatını içeriyor. Marka sütunu kategorik olduğu için sayısal bir formata dönüştürdük. Şimdi, veriyi eğitim ve test setlerine ayıracağız ve bir Karar Ağacı regresyon modeli eğiteceğiz:


Veri Setinin Eğitim ve Test Olarak Bölünmesi: Veri setini, modeli eğitmek için kullanılacak bir eğitim seti ve modelin performansını test etmek için kullanılacak bir test seti olmak üzere ikiye ayıracağız.

Modelin Eğitilmesi: Bir Karar Ağacı regresyon modeli oluşturacağız ve eğitim seti üzerinde eğiteceğiz.

Modelin Test Edilmesi ve Performansının Değerlendirilmesi: Eğitilmiş modeli, test seti üzerinde değerlendirip modelin performansını ölçeceğiz.

Bu adımları Python kodu ile gerçekleştirelim: 



# Importing necessary libraries
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import mean_squared_error
from sklearn.tree import plot_tree
import matplotlib.pyplot as plt

# Sample data
data = {
    'Brand': ['Toyota', 'Honda', 'Toyota', 'Honda', 'Toyota', 'Honda'],
    'Year': [2010, 2010, 2012, 2012, 2014, 2014],
    'Mileage': [50000, 30000, 60000, 40000, 70000, 20000],
    'Price': [9000, 10000, 8500, 12000, 7500, 13000]
}

# Creating a DataFrame
df = pd.DataFrame(data)

# Encoding the 'Brand' column as it is categorical
df['Brand'] = df['Brand'].astype('category').cat.codes

# Splitting the data into training and testing sets
X = df[['Brand', 'Year', 'Mileage']]  # Features
y = df['Price']                        # Target variable

# Splitting the dataset into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Creating and training the Decision Tree Regressor model
model = DecisionTreeRegressor()
model.fit(X_train, y_train)

# Predicting the prices for the test set
predictions = model.predict(X_test)

# Calculating the Mean Squared Error
mse = mean_squared_error(y_test, predictions)

# Plotting the decision tree
plt.figure(figsize=(12,8))
plot_tree(model, feature_names=['Brand', 'Year', 'Mileage'], filled=True)
plt.show()

Veri Seti
Kullandığımız örnek veri seti şu şekildedir:

Brand Year Mileage Price
Toyota 2010 50000 9000
Honda 2010 30000 10000
Toyota 2012 60000 8500
Honda 2012 40000 12000
Toyota 2014 70000 7500
Honda 2014 20000 13000
Bu örnek veri seti, farklı markalara, yıllara ve kilometre bilgilerine sahip otomobillerin fiyatlarını içerir. Veri seti, Karar Ağacı modelini eğitmek ve görselleştirmek için kullanıldı.

Karar ağacı modelinde, her düğümde yapılan seçimler ve bu seçimlerin sonuçlarına nasıl ulaştığımızı açıklayacağım. Karar ağaçları, verilen özellikler üzerinde bölünme kriterlerine dayanarak kararlar alır ve bu süreç, sonuç olarak belirli bir tahmini (bu örnekte otomobil fiyatı) üretir. İşte adım adım sürecin açıklaması:

Karar Ağacının Oluşturulması: Karar ağacı, veri setindeki özelliklerin (bu örnekte "Brand", "Year", "Mileage") en iyi bölünme noktalarını belirleyerek oluşturulur. Bu bölünme, verileri en iyi şekilde ayıracak şekilde seçilir.

Her Düğümdeki Kararlar: Model, her düğümde hangi özelliğin ve hangi değerin en iyi bölünmeyi sağladığını hesaplar. Örneğin, "Year > 2011" gibi bir karar, veriyi yıl bazında ikiye böler. Bu kararlar, verinin homojenliğini artırmak ve hedef değişken (fiyat) üzerindeki varyansı en aza indirmek için yapılır.

Yaprak Düğümlere Ulaşma: Karar ağacı, daha fazla bölünme yapmak mantıklı olmayana kadar dallanmaya devam eder. Bu noktada ulaşılan düğümler, "yaprak düğümler" olarak adlandırılır. Her yaprak düğüm, veri setindeki bir segmentin sonucunu (bu örnekte bir fiyat tahmini) temsil eder.

Sonuçların Belirlenmesi: Her yaprak düğümde, o düğüme düşen veri noktalarının hedef değişkenin (fiyat) ortalaması alınır. Bu ortalama, yaprak düğümün tahmini olarak kullanılır.

Tahmin Yapma: Yeni bir veri noktası geldiğinde, model, ağaçtaki karar noktalarını takip eder ve ilgili yaprak düğümüne ulaşır. Bu yaprak düğümün tahmini, yeni veri noktasının tahmini olarak sunulur.

Görselleştirdiğimiz karar ağacında, her düğümde yapılan seçimler ve bu seçimlerin sonuçları, modelin eğitim sırasında veri setinden öğrendiği bilgilere dayanır. Bu öğrenme süreci, veri setinin yapısına ve içeriğine bağlı olarak değişir. Her bir düğümde sorulan sorular ve ulaşılan sonuçlar, modelin veriyi nasıl anladığını ve tahminleri nasıl yaptığını gösterir.

Modelimizi eğittik ve test seti üzerinde tahminlerde bulunduk. Hesaplanan Ortalama Karesel Hata (Mean Squared Error - MSE) 4,625,000 olarak çıktı. Bu değer, modelimizin tahminlerinin ne kadar doğru olduğunu gösterir; MSE ne kadar düşükse, model o kadar iyi performans göstermiş demektir.

Ancak, bu basit örnekte veri setimiz çok küçük ve bu da modelin performansını doğru bir şekilde değerlendirmemizi zorlaştırır. Gerçek dünya veri setleri genellikle çok daha büyük ve karmaşıktır, bu yüzden daha güvenilir sonuçlar için daha büyük bir veri seti üzerinde çalışmak gerekir.

Karar ağaçlarının temel avantajlarından biri, oluşturduğu modelin insanlar tarafından kolayca anlaşılabilir olmasıdır. Bir karar ağacı modelini görselleştirmek, modelin nasıl kararlar aldığını ve hangi özelliklerin önemli olduğunu görmek için kullanışlı bir yöntemdir. Modelimizin karar ağacını çizdireli



İşte modelimizin oluşturduğu Karar Ağacı. Bu görsel, modelin hangi özelliklere (marka, yıl, kilometre) dayanarak ve hangi karar noktalarını kullanarak tahminler yaptığını gösteriyor. Her düğümde, belirli bir özelliğe göre yapılan bir karar veya soru ve bu karara göre dallanma görülmektedir. Son yaprak düğümler ise tahmin edilen fiyatları temsil eder.

Karar ağaçlarının bu görsel açıklaması, modelin neden ve nasıl belirli tahminler yaptığını anlamak için çok faydalıdır. Özellikle karmaşık olmayan veri setleri için, bu tür modellerin açıklanabilirliği, onları tercih edilen seçeneklerden biri yapar.


Örnek senaryolar ve veri setleri verir misin?


Tabii ki, farklı örnek senaryolar ve bunlara uygun veri setleri verebilirim. Karar ağaçları çok yönlü algoritmalardır ve birçok farklı veri seti üzerinde kullanılabilirler. İşte bazı örnek senaryolar ve bunlara uygun veri setleri:

1. Kredi Onayı Senaryosu
Senaryo: Bir banka, müşterilerinin kredi başvurularını değerlendirmek için bir model geliştirmek istiyor. Model, müşterilerin kredi geçmişi, gelir düzeyi, borç miktarı gibi faktörlere dayanarak, kredi başvurularının onaylanıp onaylanmayacağını tahmin etmelidir.

Veri Seti Özellikleri:

Kredi Skoru: Müşterinin kredi skoru.
Yıllık Gelir: Müşterinin yıllık geliri.
Borç Miktarı: Müşterinin toplam borç miktarı.
Eğitim Seviyesi: Müşterinin eğitim seviyesi.
Ev Sahibi: Müşterinin ev sahibi olup olmadığı.
Kredi Onayı: Kredi başvurusunun onaylanıp onaylanmadığı (Hedef Değişken).
2. Hastalık Teşhisi Senaryosu
Senaryo: Bir sağlık kuruluşu, hastaların klinik verilerine dayanarak belirli bir hastalığı teşhis etmek için bir model geliştirmek istiyor.

Veri Seti Özellikleri:

Yaş: Hastanın yaşı.
Cinsiyet: Hastanın cinsiyeti.
Kan Basıncı: Hastanın kan basıncı değerleri.
Kolesterol Seviyesi: Hastanın kolesterol seviyesi.
EKG Sonuçları: Hastanın EKG sonuçları.
Maksimum Kalp Hızı: Hastanın kaydedilen maksimum kalp hızı.
Hastalık Durumu: Hastada belirli hastalığın olup olmadığı (Hedef Değişken).
3. Müşteri Terk Tahmini Senaryosu
Senaryo: Bir telekomünikasyon şirketi, müşterilerinin hizmetlerini ne zaman sonlandırabileceğini tahmin etmek için bir model oluşturmak istiyor.

Veri Seti Özellikleri:

Müşteri Yaşı: Müşterinin yaşı.
Abonelik Süresi: Müşterinin şirketle ne kadar süredir abone olduğu.
Aylık Ücret: Müşterinin ödediği aylık ücret.
Toplam Arama Süresi: Müşterinin toplam arama süresi.
Online Hizmet Kullanımı: Müşterinin online hizmetleri kullanma durumu.
Terk Etme Durumu: Müşterinin hizmeti terk etme durumu (Hedef Değişken).

Bu senaryolar, karar ağaçlarının çeşitli alanlarda nasıl uygulanabileceğine dair örneklerdir. Her bir senaryo, belirli bir problemi çözmek için tasarlanmış ve bu problemleri çözmek için kullanılabilecek gerçekçi veri seti özelliklerini içerir. Gerçek veri setleri genellikle bu örneklerden daha karmaşık ve detaylı olabilir.

Please Select Embedded Mode To Show The Comment System.*

Daha yeni Daha eski

نموذج الاتصال