Makine Öğrenmesi - II. Doğrusal Olmayan İlişkiler (Non-Linear Relationships)

Karar ağaçları (Decision Tree)

Yayın tarihi :06-Oca-22
Bölüm kodlarını ve/veya veri setlerini indir.

Karar ağaçları (Decision Tree), hem sınıflandırma (classification) hem de regresyon (regression) için kullanılan parametrik olmayan bir makine öğrenmesi terimidir. En çok kullanılan denetimli öğrenme modellerinden biridir. Amacı veri setindeki verileri bir karar doğrultusunda yukardan aşağıya doğru küçük birimlere bölmektir. Küçültme işlemi ne kadar çok yapılırsa karar verme işlemi de daha doğru çalışacaktır.

Avantajları nelerdir?

  • Karar ağaçları görselleştirebildiğinden anlaması ve yorumlaması basit hale gelir.
  • Veri seti temizliğine fazla gerek kalmadan çalışma yapılabilir.
  • Hem sayısal hem de kategorik verileri işleyebilir.
  • Çoklu çıkış problemlerini çözebilir.
  • İstatistiksel testler kullanarak bir modeli doğrulamak mümkündür. Bu, modelin güvenilirliğini hesaba katmayı mümkün kılar.

Dezavantajları nelerdir?

  • Veri setindeki verileri iyi genellemeyen aşırı karmaşık ağaçlar oluşabilir.
  • Karar ağaçları kararsız olabilir çünkü verilerdeki küçük değişiklikler tamamen farklı bir ağacın üretilmesine neden olabilir.
  • Eğer bazı sınıflar baskınsa, önyargılı ağaçlar oluşturulabilir.

Ağaç Algoritmaları

  • ID3
  • C4.5
  • C5.0
  • CART

Kullanımı

Kullanabilmek için "tree" kütüphanesinin içe aktarılması gerekir.

from sklearn import tree

Tree kütüphanesi altında regresyon ile alakalı bazı modeller bulunmaktadır. Bunlar:

  • DecisionTreeRegressor
    from sklearn.tree import DecisionTreeRegressor
  • ExtraTreeRegressor
    from sklearn.tree import ExtraTreeRegressor

Örnek-1: İris veri setinde karar ağaçlarını regresyon modellerini(DecisionTreeRegressor ve ExtraTreeRegressor) uygulayalım.

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
import warnings
warnings.filterwarnings("ignore")

from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error,r2_score,mean_absolute_error

from sklearn.tree import ExtraTreeRegressor, DecisionTreeRegressor
df=sns.load_dataset("iris")
df.head()

Çıktı:

#tahmin edeceğimiz değer sepal_length olsun
#get_dummies işlemi yapalım
df=pd.get_dummies(df,drop_first=True)
x,y=df.drop("sepal_length",axis=1),df[["sepal_length"]]
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=13,test_size=.2)

Veri setine "DecisionTreeRegressor" regresyon modeli uygulanırsa; 

DT=DecisionTreeRegressor()
#Modeli eğitelim
DT.fit(x_train,y_train)
predict_DT=DT.predict(x_test)
(mean_squared_error(y_test,predict_DT))**.5

Çıktı:

0.37782270974625115
r2_score(y_test,predict_DT)*100

Çıktı:

76.32931682511608

Veri setine "ExtraTreeRegressor" regresyon modeli uygulanırsa; 

DT2=ExtraTreeRegressor()
#Modeli eğitelim
DT2.fit(x_train,y_train)
predict_DT2=DT2.predict(x_test)
(mean_squared_error(y_test,predict_DT))**.5

Çıktı:

0.37782270974625115
r2_score(y_test,predict_DT)*100

Çıktı:

76.32931682511608
Paylaş:

Yorum Yap (*Yorumunuza kod eklemek isterseniz Kod Parçacığı Ekle butonuna tıklayarak ekleyebilirsiniz.)

Yorumlar

Henüz hiç yorum yapılmamış, ilk yorum yapan sen ol.