Karar Ağaçları Nedir?
Karar ağaçları, makine öğrenmesi ve istatistikte sıkça kullanılan, gözlemlere dayalı karar verme süreçlerini modelleyen grafiksel temsil biçimleridir. Bir ağaç yapısına benzeyen karar ağaçları, verileri düğümlere ayırarak sınıflandırma veya regresyon amacıyla kullanılabilir. Her bir düğüm, bir özellik üzerinde bir karar verirken, yaprak düğümler sonuçları temsil eder. Bu yapılar, veriyi görsel olarak anlamayı kolaylaştırır ve karmaşık karar alma mekanizmalarının basitleştirilmesine yardımcı olur.
Karar ağaçları özellikle sınıflandırma problemlerinde etkili olup, birçok veri noktası üzerinden yapılan analizlerde sezgisel bir yaklaşım sunar. Örneğin, bir müşteri veri setinde, belirli demografik bilgileri kullanarak müşterilerin ürünleri satın alıp almayacağını tahmin edebiliriz. Her biri, belirli bir özelliğe göre bölünen alt gruplar olarak ağaç yapımızı oluşturur.
Bu ağaç yapılarının avantajlarından biri, karmaşık işlemleri basit ve anlaşılır hale getirmeleridir. Karar ağaçları, verileri incelemek için kullanılabilecek farklı yöntemler ve teknikler sunar. Bunun yanı sıra, sonuçları yorumlamak, görselleştirmek ve açıklamak oldukça kolaydır.
Python’da Karar Ağaçları ile Çalışmaya Başlamak
Bu bölümde, Python programlama dilinde karar ağaçlarının nasıl oluşturulacağına dair adımları inceleyeceğiz. Python’un popüler kütüphanelerinden biri olan scikit-learn, bu tür algoritmaları uygulamak için mükemmel bir temel sağlar. Öncelikle, gerekli kütüphaneleri yükleyerek başlayalım. Bu örnekte, panda ve matplotlib kütüphanesini veri işleme ve görselleştirme için kullanacağız.
İlk adım olarak, gerekli kütüphaneleri yüklemeliyiz. Aşağıdaki kod parçacığını kullanarak gereken kütüphaneleri hızlıca içe aktarabilirsiniz:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn import metrics
Bu kütüphaneleri yükledikten sonra, kullanmak istediğimiz veri setini tanımlamamız gerekiyor. Örneğin, İris çiçeği veri seti, sınıflandırma problemlerini incelemek için yaygın olarak kullanılır. Bu veri seti, farklı İris çiçeği türlerinin özelliklerini içermektedir. Pandas kütüphanesi aracılığıyla bu veri setini, .csv uzantılı bir dosyadan okuyabiliriz:
iris_data = pd.read_csv('iris.csv')
print(iris_data.head())
Veri Setinin Ön İşlemesi ve Eğitim/ Test Setlerine Ayırma
Veri setini okuduktan sonra, veri analizi ve görselleştirme yaparak veri dağılımını incelememiz önemlidir. İlk olarak, veri kümesinin temel istatistiklerine bir göz atabiliriz. Aşağıdaki kod, veri kümesinin özet bilgilerini sağlar:
print(iris_data.describe())
Bu aşamada, özellikle öz nitelikler ve hedef değeri arasındaki ilişkileri daha iyi anlayabilmek için görselleştirme yapmalıyız. Bunun için matplotlib kütüphanesini kullanarak verilerin dağılımını görselleştirebiliriz. Bu, özelliklerin oluşturduğu örüntüleri ve sınıflar arasındaki ayrımları görmek için faydalıdır:
plt.scatter(iris_data['sepal_length'], iris_data['sepal_width'], c=iris_data['species'])
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.title('Iris Dataset Visualization')
plt.show()
Bu grafikte, çiçek türlerini temsil eden renkler sayesinde, farklı türler arasında belirgin ayrımlar görselleştirilecektir. Sonraki adım, veri setini eğitim ve test setlerine ayırmaktır. Bu, modelimizin doğruluğunu kontrol etmek için gereklidir. Aşağıdaki kod ile veri setimizi %80 eğitim ve %20 test olacak şekilde bölebiliriz:
X = iris_data[['sepal_length', 'sepal_width', 'petal_length', 'petal_width']]
y = iris_data['species']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Karar Ağacı Modelini Oluşturma ve Eğitme
Artık eğitim verilerimiz hazır olduğuna göre, karar ağaç modelimizi oluşturup eğitmeye başlayabiliriz. Scikit-learn ile karar ağaçları oluşturmak oldukça basittir. Aşağıdaki kod, modelimizi oluşturmak için DecisionTreeClassifier sınıfını kullanır:
dt_model = DecisionTreeClassifier(random_state=42)
dt_model.fit(X_train, y_train)
Bu adımda eğitim setimiz üzerindeki karar ağacı modelimizi eğittik. Modelin başarı oranını değerlendirmek için test veri setimizi kullanacağız:
y_pred = dt_model.predict(X_test)
Burada, modelimiz tarafından tahmin edilen değerleri y_pred değişkenine atadık. Sonuçların doğruluğunu belirlemek için accuracy_score metodunu kullanabiliriz:
accuracy = metrics.accuracy_score(y_test, y_pred)
print(f'Model Doğruluğu: {accuracy}')
Modelin doğruluk oranı, modelin ne kadar iyi bir performans sergilediğini gösterir. Bu aşamada, modelimizin başarısını görselleştirmek için bir hata matrisi oluşturarak, tahminlerimizin hangi türlerde hangi başarı oranında olduğunu inceleyebiliriz.
Sonuçların Görselleştirilmesi ve Model İyileştirme
Model sonuçlarımızı daha iyi analiz edebilmek için, sklearn kütüphanesi ile hata matrisimizi oluşturabilir ve görselleştirebiliriz. Bu, modelin hangi tür tahminleri doğru yaptığını ve hangi sınıflarda zorlandığını anlamamıza yardımcı olur:
from sklearn.metrics import confusion_matrix
import seaborn as sns
cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot=True, fmt='d')
plt.ylabel('Gerçek Değer')
plt.xlabel('Tahmin Edilen Değer')
plt.title('Hata Matrisi')
plt.show()
Ayrıca, modelin daha iyi sonuçlar vermesi için model üzerinde çeşitli iyileştirmeler yapabiliriz. Örneğin, ağaçların derinliğini sınırlamak, minimum örnek sayısını değiştirmek veya farklı parametre ayarlamaları ile modelin overfitting (aşırı öğrenme) yapmasını önleyebiliriz:
dt_model = DecisionTreeClassifier(max_depth=3, min_samples_split=5, random_state=42)
dt_model.fit(X_train, y_train)
Bu tür ayarlar ile modelin genel performansını artırabiliriz. Karar ağaçları, görselleştirme kolaylığı ve yorumlanabilirliği sayesinde, veri bilimciler için vazgeçilmez araçlardır. Verilerinizi analiz ederken ve karar verme süreçlerinizde, karar ağaçlarını etkin bir şekilde kullanmaya başlayabilirsiniz.
Sonuç
Karar ağaçları, veri analizi ve sınıflandırma işlemlerinde oldukça etkili bir modelleme aracıdır. Python ve scikit-learn kütüphanesi ile kolayca uygulanabilir. Bu yazıda, karar ağaçlarının temellerini, model oluşturma ve değerlendirme süreçlerini adım adım inceledik. Bilgi birikimini artırarak, karar ağaçlari ile ilgili daha derin çalışmalara gidebilir, kendi projelerinizde bu yöntemleri uygulayabilirsiniz.
Görselleştirme teknikleri ve model iyileştirme adımları ile desteklediğimiz bu süreçte, Python ile karar ağaçlarının potansiyelini keşfetmiş olduk. Unutmayın ki, her veri seti farklıdır ve modellemeler yaparken farklı yaklaşımlar denemek her zaman fayda sağlayacaktır. Denemekten çekinmeyin!
Karar ağaçları ile ilgili daha fazla öğrenmek ve yeni teknikler denemek için kaynaklar arayışını sürdürün. Python ve makine öğrenmesi dünyasında yapacağınız keşifler, sizi yeni fırsatlarla buluşturacaktır.