Random Forest-Makine Öğrenmesi-

M. Fatih Türkoğlu
3 min readJul 9, 2021

--

Önceki yazımda bahsetmiş olduğum Decision Tree (DT), makine öğrenme modellerinden biri olup Classification kavramı altında gelişen bir algoritmadır.

Photo by Mila Tovar on Unsplash

Fakat DT den farklı olarak hem Classification hem de Regression kavramları altında gelişen bir algoritmadır RF algoritması. Bu algoritmanın birden fazla karar ağacı üreterek sınıflandırma değerini yükseltmeyi hedefleyen bir algoritmadır. Burada oluşturulan karar ağaçları bir araya gelerek karar ormanı oluşturur. Şimdi Random Forest algoritmasının nasıl çalıştığını görelim.

Random Forest yani Rastgele Orman (RO) algoritması anlaması oldukça basit olan, büyük işlerde kullanılan ve kullanımı basit olan bir algoritmadır. RO algoritması çoğunlukla ‘begging’ yöntemiyle eğitilen karar ağaçları toplulukları ile bir orman oluşturur. Bu ormanın oluşturulmasının nedeni ise daha istikrarlı bir tahmin edilmesi içindir.

RO algoritmasının çalışmasını bir örnekle gösterelim. Örneğin binlerce insana kompleks bir soru sordunuz ve bu cevapları topladınız. Binlerce insandan toplanan bu cevaplar bir uzmanın cevabından veya görüşünden daha iyi olabilir. Buna kalabalığın zekası denir. Aynı bunun gibi birden çok kestirici toplanır ve bir araya getirilir ise en iyi kestiriciden bile daha iyi bir tahmin ortaya çıkabilir. Buradaki toplanan bir araya getirilen bu gruba ‘ensemble’ da denir. Buradaki gösterdiğim örnekte gibi bir karar ağaçları (DT) sınıflandırıcıları alalım ve bir araya getirelim (yani bir ensemble oluşturalım).

Oluşturduğumuz ensemble daki tüm ağaçları eğitelim. Böylece her bir ağacın tahminini bulabiliriz. Buradaki tahminlerden en başarılı olanı ana tahminimiz olarak alabiliriz. Böylelikle bir Random Forest algoritması oluşturmuş oluruz.

Üstteki görselde tahmin algoritmalarının DT lerden oluştuğu düşünüldüğünde karşımıza RF algoritması çıkar. Fakat örneğin lojistik regresyon, destek vektör makineleri, RF sınıflandırıcısı ve KNN sınıflandırıcısını bir araya getirerek tahmin yapabiliriz ki ensemble metotları tahminci algoritmalarının birbirinden farklı olması ile çok daha iyi çalışır ve daha doğru tahminler elde edilebilir.

Şimdi bu konuştuğumuz RF algoritmasını bir python kodlaması üzerinde görelim.

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import os
from sklearn.model_selection import train_test_split
os.chdir('\Games\PyCharm\PyCharm_Projects') #Çalışılan dosya konumu
dataset = pd.read_csv('SosyalMedyaReklamKampanyasi.csv') #Veri seti
#Veri setini bağımlı ve bağımsız niteliklere ayırma işlemi
X = dataset.iloc[:, [2,3]].values
y = dataset.iloc[:, 4].values
#Veriyi eğitim ve test olarak ayırma işlemi
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)
#Normalizasyon işlemi
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)
#RF modeli oluşturma ve eğitilme işlemleri
from sklearn.ensemble import RandomForestClassifier

classifier = RandomForestClassifier(n_estimators=10, criterion='entropy', random_state=0)
classifier.fit(X_train, y_train)
#Oluşturulan test seti ile tahmin yapmak
y_pred = classifier.predict(X_test)
#Hata matrisi oluşturma işlemi
from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_test, y_pred)
#Grafik oluşturulma işlemleri
from matplotlib.colors import ListedColormap

X_set, y_set = X_train, y_train
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(('black', 'blue')))
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(('black', 'blue'))(i), label=j)
plt.title('Random Forest(Rastgele Orman)')
plt.xlabel('Yaş')
plt.ylabel('Maaş')
plt.legend()
plt.show()
Çıktı Grafiği

Yardımcı Kaynaklar:

https://www.youtube.com/watch?v=KaBxQFJZTVQ

https://devhunteryz.wordpress.com/2018/09/20/rastgele-ormanrandom-forest-algoritmasi/

https://www.veribilimiokulu.com/siniflandirma-notlari-19-random-forest-r-uygulama/

https://medium.com/data-science-tr/makine-%C3%B6%C4%9Frenmesi-dersleri-5-bagging-ve-random-forest-2f803cf21e07

--

--