Rastgele Ormanlar

Python ile Ağaç Tabanlı Modellerle Machine Learning

Elie Kawerk

Data Scientist

Bagging

  • Taban tahminleyici: Karar Ağacı, Lojistik Regresyon, Sinir Ağı, ...

  • Her tahminleyici, eğitim setinden farklı bir önyineleme (bootstrap) örneğiyle eğitilir

  • Tahminleyiciler eğitim ve tahmin için tüm özellikleri kullanır

Python ile Ağaç Tabanlı Modellerle Machine Learning

Rastgele Ormanlarla Daha Fazla Çeşitlilik

  • Taban tahminleyici: Karar Ağacı

  • Her tahminleyici, eğitim setiyle aynı boyutta farklı bir önyineleme örneğiyle eğitilir

  • RF, bireysel ağaçların eğitimine ek rastgelelik katar

  • Her düğümde değişkensiz örnekleme ile d özellik seçilir
    ( d < toplam özellik sayısı )

Python ile Ağaç Tabanlı Modellerle Machine Learning

Rastgele Ormanlar: Eğitim

RFtrain

Python ile Ağaç Tabanlı Modellerle Machine Learning

Rastgele Ormanlar: Tahmin

RFpredict

Python ile Ağaç Tabanlı Modellerle Machine Learning

Rastgele Ormanlar: Sınıflandırma ve Regresyon

Sınıflandırma:

  • Tahminleri çoğunluk oylamasıyla birleştirir
  • scikit-learn'de RandomForestClassifier

Regresyon:

  • Tahminleri ortalama alarak birleştirir
  • scikit-learn'de RandomForestRegressor
Python ile Ağaç Tabanlı Modellerle Machine Learning

sklearn'de Random Forests Regressor (auto veri seti)

# Basic imports
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error as MSE
# Set seed for reproducibility
SEED = 1

# Split dataset into 70% train and 30% test
X_train, X_test, y_train, y_test = train_test_split(X, y, 
                                                    test_size=0.3,
                                                    random_state=SEED)
Python ile Ağaç Tabanlı Modellerle Machine Learning
# 400 tahminleyicili bir rastgele orman regresörü 'rf' oluşturun
rf = RandomForestRegressor(n_estimators=400, 
                                   min_samples_leaf=0.12,  
                                   random_state=SEED)

# 'rf' modelini eğitim setine uydurun rf.fit(X_train, y_train) # Test etiketlerini 'y_pred' olarak tahmin edin y_pred = rf.predict(X_test)
# Test seti RMSE'yi değerlendirin
rmse_test = MSE(y_test, y_pred)**(1/2)

# Test seti RMSE'yi yazdırın
print('Test set RMSE of rf: {:.2f}'.format(rmse_test))
Test set RMSE of rf: 3.98
Python ile Ağaç Tabanlı Modellerle Machine Learning

Özellik Önemi

Ağaç tabanlı yöntemler: her özelliğin tahmindeki önemini ölçmeye imkân tanır.

sklearn'de:

  • belirli bir özelliğin düğümlerde safsızlığı ne kadar azalttığına (ağırlıklı ortalama) bakılır
  • feature_importance_ özniteliğiyle erişilir
Python ile Ağaç Tabanlı Modellerle Machine Learning

sklearn'de Özellik Önemi

import pandas as pd
import matplotlib.pyplot as plt

# Özellik önemlerini içeren bir pd.Series oluşturun
importances_rf = pd.Series(rf.feature_importances_, index = X.columns)

# importances_rf'yi sırala                                   
sorted_importances_rf = importances_rf.sort_values()   

# Yatay çubuk grafiği oluşturun
sorted_importances_rf.plot(kind='barh', color='lightgreen'); plt.show()
Python ile Ağaç Tabanlı Modellerle Machine Learning

sklearn'de Özellik Önemi

fimp_rf

Python ile Ağaç Tabanlı Modellerle Machine Learning

¡Vamos a practicar!

Python ile Ağaç Tabanlı Modellerle Machine Learning

Preparing Video For Download...