Machine Learning|6-Decision Tree(Karar ağacı) algoritması



Original Source Here

Machine Learning|6-Decision Tree(Karar ağacı) algoritması

Herkese merhabalar bu yazımda sizlere “decision tree” yani “karar ağacı” algoritmasına kısaca değinip konu hakkında basit bir uygalama yapacağız.

Karar ağacı nedir?

Karar ağaçları, geçmişte yaşanmış ve sınıfı belirlenmiş verilerden hareketle hangi sınıfa ait olduğu belli olmayan verilerin sınıflarının belirlenmesini sağlayan bir tekniktir. Karar ağaçları, veri madenciliğinde tahminleyici ve tanımlayıcı niteliklere sahip olması, uygulamasının ve değerlendirilmesinin kolay oluşu, güvenilirlik düzeylerinin yüksek olması ve bilgisayar sistemlerindeki depolama ünitelerinde kolay entegre edilebilmeleri sebebiyle sıklıkla tercih edilmektedir. Karar ağaçları, doğrusal olmayan ilişkilerin, karma veri türlerinin ve aykırı değerlerin olduğu veri setlerinde sınıflandırma modelinin çıkarılmasına imkân verir. Karar ağaçları karar teorisi, sınıflama, tahmin ve kümeleme hallerinde kullanılmaktadır. Hedef değişkenin sürekli olması durumunda karar ağaçları regresyon ağaçları olarak, kategorik ise sınıflama ağaçları olarak adlandırılmaktadır. Bu farklı duruma karşın karar ağaçlarının kurulma biçimleri benzerlik göstermektedir.

Karar Ağaçları Nasıl Oluşturulur?

İstatistiksel bir yöntem olarak karar ağaçları yönteminin ilk aşaması bir ağaç yapısı oluşturmak ve veri setindeki verileri bu ağaca işlemektir. Karar ağaçlarının yapısı kök düğüm, düğüm ve dallardan oluşmaktadır. Kurallar oluşturulurken sorular sorulmakta ve cevaplara göre hareket edilmektedir. Cevaplar bir araya getirilerek, yeni kurallar oluşturulmaktadır. Sorunun sorulacağı ilk değişkene karar verildikten sonra ağaç yapısının ilk aşaması olan kök düğüm oluşturulmaktadır. Kök düğüm bağımlı değişkeni temsil etmektedir. Kök düğüm ile başlayan ağaç yapısında aşağı doğru gidildikçe veri kümeleri küçük parçalara ayrılarak dallar ve yeni düğümler oluşturulmaktadır. Her bir düğüm bir soruyu temsil etmekte ve soruya verilecek cevap sayısı kadar dala ayrılmaktadır. Dalların her birinde ‘eğer-ise’ kuralları oluşmakta ve seçilen karara göre bir sonraki düğüme geçiş yapılır. Yeni bir soru oluşana kadar ağaç yapısı bu şekilde işlenmektedir. Sonunda bir sınıfı temsil eden son düğüme ulaşılmaktadır.

Karar ağacı oluşumunu basit bir örnek üzerinden anlatmak için Şekil 2’de gösterilen veriyi inceleyebilirsiniz. Veri setinde değişken olarak müşterilerin cinsiyet, çevrim içi geçirilen süreleri ve satın aldıkları ürün bulunmaktadır. Bu örnekte, cinsiyet ve çevrim içi geçirilen süreye dayanılarak satın alınabilecek ürünü tahmin edebilen bir karar ağacı oluşturulacaktır.

şimdi ise sizlerle karar ağacı algoritmasının bir örneğini paylaşacağım:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.tree import DecisionTreeClassifier
from sklearn import metrics
from sklearn.metrics import confusion_matrix
from matplotlib.colors import ListedColormap
#veri setini alıyoruz
data = pd.read_csv('D:/python dataset/decision_tree.csv')
#başlıkları bastırıyoruz
print(data.head())
#ilk 4 veri setini ve verinin parametrelerini aldık
X = data.iloc[:,[2,3]].values
y = data.iloc[:,4].values
#eğitim ve test veri setlerini oluşturduk
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size = 0.25, random_state= 0)
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)
#kara ağacı fonksiyonumuzu çağıralım
classifier = DecisionTreeClassifier()
classifier = classifier.fit(X_train,y_train)
#doğruluk payımızın ne kadar olduğunu kontrol edelim
y_pred = classifier.predict(X_test)
print('Doğruluk payı', metrics.accuracy_score(y_test,y_pred))
cm = confusion_matrix(y_test, y_pred)
print(cm)
#Veri setlerimiziden oluşturulan modeli görselleştirelim
X_set, y_set = X_test, y_test
X1, X2 = np.meshgrid(np.arange(start = X_set[:,0].min()-1, stop= X_set[:,0].max()+1, step = 0.01),np.arange(start = X_set[:,1].min()-1, stop= X_set[:,1].max()+1, step = 0.01))
plt.contourf(X1,X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha=0.75, cmap = ListedColormap(("gray","black")))
plt.xlim(X1.min(), X1.max())
plt.ylim(X2.min(), X2.max())
for i,j in enumerate(np.unique(y_set)):
plt.scatter(X_set[y_set==j,0],X_set[y_set==j,1], c = ListedColormap(("blue","red"))(i),label = j)
plt.title("Karar Ağacı")
plt.xlabel("Tahmini Yaş")
plt.ylabel("Maaş")
plt.legend()
plt.show()

yukarıdaki kod ile alınan sonuç:

Kaynakça

[1] [2] [3]

AI/ML

Trending AI/ML Article Identified & Digested via Granola by Ramsey Elbasheer; a Machine-Driven RSS Bot

%d bloggers like this: