Decision Tree Regression: Nedir?
Decision tree regression, sürekli bir hedef değişkeni tahmin etmek için kullanılan bir makine öğrenimi tekniğidir. Bu yöntem, karar ağaçlarını kullanarak veriyi bölmekte ve her bir alt küme için ödüllendirilmiş bir tahmin sağlamaktadır. Karar ağaçları, bir ağaç yapısı şeklinde görsel olarak temsil edilen bir modeldir; üstte kök düğümü, altta ise yaprak düğümleri yer alır. Ağaç yapısı, çeşitli özellikler kullanarak verileri sınıflandırır veya tahminlerde bulunur.
Bu yöntemin genel amacı, hedef değişkenin tahmininde bulunurken veri setindeki ilişkileri anlamaktır. Decision tree regressor, basit biri yapısıyla hem yorumlanması kolay hem de etkili bir sonuç sunar. Modelin anlaşılması, diğer karmaşık makine öğrenimi modellerine kıyasla oldukça sezgiseldir. Bu, kullanıcıların modelin nasıl çalıştığını ve hangi özelliklerin tahmine nasıl katkı sağladığını hızlı bir şekilde anlamalarına olanak tanır.
Özellikle veri setleri, çok sayıda özellik içerdiğinde ve çok sayıda gözlem verisi olduğunda karar ağaçları son derece faydalı olabilir. Ancak, aşırı uyum (overfitting) gibi problemler de ortaya çıkabilir. Aşırı uyum, modelin eğitim verisine çok iyi uyum sağlaması fakat yeni verilere karşı zayıf performans sergilemesi anlamına gelir. Bu nedenle, ağaç derinliği gibi model parametrelerinin dikkatle ayarlanması önemlidir.
Python ile Decision Tree Regressor Kullanımı
Decision tree regression ile çalışmak için Python’da popüler kütüphanelerden biri olan `scikit-learn` kütüphanesini kullanabiliriz. `scikit-learn`, makine öğrenimi modellerini hızlı bir şekilde geliştirmek için kullanışlı ve etkili bir araçtır. İşte basit bir karar ağaçlı regresyon modelinin oluşturulmasında izlenecek adımlar:
İlk olarak, gerekli kütüphaneleri yükleyelim ve veri setimizi hazırlayalım:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import mean_squared_error
# Örnek veri seti üretimi
dataset = pd.DataFrame({
'X': np.arange(1, 101),
'y': np.random.rand(100) * 100
})
Bu kod, 100 gözlemden oluşan basit bir veri seti üretmektedir. X ve y değerleri oluşturulduktan sonra, eğitim ve test setlerine ayırma işlemini gerçekleştirelim.
X = dataset[['X']].values
y = dataset['y'].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Sonra, karar ağaçlı regresyon modelimizi tanımlayacağız ve eğitim verisi üzerinde eğiteceğiz:
Modelimizi eğittikten sonra, test verisi üzerinde tahminlerde bulunalım ve sonuçları değerlendirelim:
Bu kod, modelin doğruluğunu ölçmek için ortalama kare hata (Mean Squared Error – MSE) hesaplamaktadır. Daha düşük MSE değerleri, daha iyi bir model performansını ifade eder.
Karar Ağaçlarını Görselleştirme
Modelimizi oluşturduktan sonra, karar ağaçlarının görselleştirilmesi, modelin iç işleyişini anlamak açısından oldukça yararlıdır. `sklearn.tree` modülünden `plot_tree` fonksiyonunu kullanarak ağacımızı görselleştirebiliriz:
from sklearn.tree import plot_tree
plt.figure(figsize=(12, 8))
plot_tree(decision_tree, filled=True, feature_names=['X'], rounded=True)
plt.title('Decision Tree Regressor Visualization')
plt.show()
Bu görselleştirme, ağaç modelinin nasıl yapılandığını ve hangi kriterlere göre bölümler oluşturduğunu anlamamızda yardımcı olur. Her düğümde hangi özelliğin kullanıldığı, bu özelliğin değerleri ve o düğümdeki orta değer gibi bilgiler yer alır.
Modelin İyileştirilmesi
İlk modelimizi oluşturduktan sonra, çeşitli yöntemlerle modelin başarımını artırabiliriz. İlk olarak, modelin aşırı uyumunu önlemek amacıyla `max_depth` gibi hiperparametrelerle oynamak faydalı olabilir. Ayrıca, `min_samples_split` ve `min_samples_leaf` gibi diğer parametreleri ayarlamak da önem arz etmektedir. Bu parametreler, modelin ne kadar ayrıntılı olacağını ayarlamaktadır.
Ayrıca, karar ağaçlarının ensemble yöntemleri ile birleşimi de performansı artırabilir. Örneğin, Random Forest ve Gradient Boosting gibi modelleme yöntemleri, karar ağaçlarını bir araya getirerek daha sağlam ve genelleştirebilir modeller sağlar. `scikit-learn` kütüphanesi, bu tür yöntemlerin uygulanmasını oldukça kolaylaştırır.
Bir örnek vermek gerekirse:
from sklearn.ensemble import RandomForestRegressor
# Random Forest modeli
tree_forest = RandomForestRegressor(n_estimators=100)
tree_forest.fit(X_train, y_train)
y_forest_pred = tree_forest.predict(X_test)
mse_forest = mean_squared_error(y_test, y_forest_pred)
print('Random Forest Modeli Ortalama Kare Hata:', mse_forest)
Bu örnekte, Random Forest regresyon modeli oluşturduk ve karar ağaçları ensemble yönteminin nasıl çalıştığını gördük. Genellikle ensemble yöntemleri, tek bir karar ağacına göre daha iyi performans sergilemektedir.
Sonuç
Karar ağaçları, veri analizi ve modelleme süreçlerinde etkili bir araçtır ve Python ile kullanımı oldukça basittir. Bu yazıda, bir karar ağaçlı regresyon modelinin nasıl oluşturulacağını, nasıl değerlendirileceğini ve nasıl geliştirileceğine dair detaylı bir rehber sunduk. Karar ağaçları, özellikle verilere getirdikleri görselleştirme ve açıklanabilirlik özellikleri sayesinde kullanıcılar tarafından sıkça tercih edilmektedir.
Gelecekte, karmaşık verilerle çalışmak ve daha iyi sonuçlar almak için modelinizi düzenli olarak pratik yaparak ve yeni parametrelerle oynamaya devam ederek geliştirmelisiniz. Python ekosistemindeki bu ve benzeri yöntemleri öğrenmek ve uygulamak, yazılım geliştirici olarak kendinizi sürekli güncel tutmanızı sağlayacak, böylece daha başarılı projelere imza atmanıza yardımcı olacaktır.
Tamamen özelleştirilmiş makine öğrenimi uygulamaları oluşturmak ve karar ağaçlarınızın gücünden yararlanmak için buradan başlayabilir ve öğrendiklerinizi kendi projelerinizde uygulamak için motive olabilirsiniz.