Machine Learning|7- Random Forest algoritması

Samet Can Unç
4 min readJul 11, 2021

--

Herkese merhabalar bu yazımda random forest algoritmasından bahsederek basit bir uygulamasını sizlerle paylaşacağım.

photo on doğrula

Random Forest nedir?

Rastgele Orman, hiperparametre ayarı yapmadan bile, çoğu zaman büyük bir sonuç üreten, esnek, kullanımı kolay bir makine öğrenmesi algoritmasıdır. Aynı zamanda en çok kullanılan algoritmalardan biridir, çünkü hem basitlik hem de sınıflandırma ve regresyon görevleri için kullanılabilir.

Random forest algoritması nasıl çalışır?

Rastgele Orman denetimli bir öğrenme algoritmasıdır. Zaten adından da anlaşılacağı gibi, bir orman oluşturur ve bunu bir şekilde rastgele yapar. Kurduğu “orman”, çoğu zaman “bagging” yöntemiyle eğitilen karar ağaçları topluluğudur. Bagging yönteminin genel fikri, öğrenme modellerinin bir kombinasyonunun genel sonucu arttırmasıdır.

Basit kelimelerle söylemek gerekirse: Rastgele orman, birden fazla karar ağacını oluşturur ve daha doğru ve istikrarlı bir tahmin elde etmek için onları birleştirir.

Rastgele ormanın büyük bir avantajı, mevcut makine öğrenmesi sistemlerinin çoğunu oluşturan hem sınıflandırma hem de regresyon problemleri için kullanılabilmesidir. Sınıflandırma bazen makine öğreniminin yapı taşı olarak kabul edildiğinden, sınıflandırmada rastgele orman hakkında konuşacağım. Aşağıda rastgele bir ormanın iki ağaç gibi nasıl görüneceğini görebilirsiniz:

Rastgele Orman neredeyse bir karar ağacı veya bir bagging(torbalama) sınıflandırıcısı olarak aynı hiperparametreye sahiptir. Neyse ki, bir karar ağacını bir bagging sınıflandırıcısıyla birleştirmek zorunda kalmazsınız ve sadece Rastgele Orman’ın sınıflandırıcısını kolayca kullanabilirsiniz. Daha önce söylediğim gibi, bu yöntemde Rastgele Orman regresörünü kullanarak regresyon görevleriyle de ilgilenebilirsiniz.

Rastgele Orman, ağaçları büyütürken, modele ek rastgelelik katıyor. Bir düğümü parçalara ayırırken en önemli özelliği aramak yerine, rastgele bir özellik alt kümesi arasında en iyi özelliği arar. Bu, genellikle daha iyi bir modelle sonuçlanan geniş bir çeşitlilikle sonuçlanır.

Bu nedenle, Rastgele Ormanda, bir düğümün bölünmesi için algoritma tarafından özelliklerin sadece rastgele bir alt kümesi dikkate alınır. Hatta mümkün olan en iyi eşikleri (normal bir karar ağacı gibi) aramak yerine, her özellik için rastgele eşikleri kullanarak ağaçları daha rastgele yapabilirsiniz.

Random Forest için basit bir uygulama örneği:

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.metrics import confusion_matrix
from matplotlib.colors import ListedColormap
#veri setini alıyoruz
datasets = pd.read_csv('D:/python dataset/decision_tree.csv')
X = datasets.iloc[:, [2,3]].values
Y = datasets.iloc[:, 4].values
# Veri setini eğitim ve test seti olarak ayırmaX_Train, X_Test, Y_Train, Y_Test = train_test_split(X, Y, test_size = 0.25, random_state = 0)# Nitelikleri Ölçeklendirmesc_X = StandardScaler()
X_Train = sc_X.fit_transform(X_Train)
X_Test = sc_X.transform(X_Test)
# Eğitim setine karar ağacı uygulanmasıfrom sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier(n_estimators = 200, criterion = 'entropy', random_state = 0)
classifier.fit(X_Train,Y_Train)
# Denemeyi tahmin etme aşamasıY_Pred = classifier.predict(X_Test)# Confusion Matrisi oluşturulurcm = confusion_matrix(Y_Test, Y_Pred)# Oluşturulan eğitim seti görsellenirX_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(('grey', '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(('green', 'purple'))(i), label = j)
plt.title('Random Forest (Eğitim seti)')
plt.xlabel('Yaş')
plt.ylabel('Tahmini maaş')
plt.legend()
plt.show()
# Oluşturulan test seti görsellenirfrom matplotlib.colors import ListedColormap
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(('grey', '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(('orange', 'purple'))(i), label = j)
plt.title('Random Forest (Deneme seti)')
plt.xlabel('Yaş')
plt.ylabel('Tahmini maaş')
plt.legend()
plt.show()

Alınan sonuçlar:

Kaynakça

[1] [2] [3]

Hesaplarım ve İletişim için :

Gmail: sametcanunceee@gmail.com

Linkedin

Bir sonraki yazımızda Naive Bayes yöntemine değineceğim herkese iyi günler, iyi okumalar.

--

--

No responses yet