Random Forests

Aprendizado de máquina com modelos baseados em árvores em Python

Elie Kawerk

Data Scientist

Bagging

  • Estimador base: Decision Tree, Logistic Regression, Neural Net, ...

  • Cada estimador é treinado em um bootstrap sample diferente do treino

  • Estimadores usam todas as features para treinar e prever

Aprendizado de máquina com modelos baseados em árvores em Python

Mais Diversidade com Random Forests

  • Estimador base: Decision Tree

  • Cada estimador treina em um bootstrap sample do mesmo tamanho do treino

  • RF adiciona mais aleatoriedade no treino das árvores

  • Amostram-se d features em cada nó sem reposição
    ( d < total de features )

Aprendizado de máquina com modelos baseados em árvores em Python

Random Forests: Treino

Treino_RF

Aprendizado de máquina com modelos baseados em árvores em Python

Random Forests: Previsão

Previsão_RF

Aprendizado de máquina com modelos baseados em árvores em Python

Random Forests: Classificação e Regressão

Classificação:

  • Agrega previsões por voto da maioria
  • RandomForestClassifier no scikit-learn

Regressão:

  • Agrega previsões por média
  • RandomForestRegressor no scikit-learn
Aprendizado de máquina com modelos baseados em árvores em Python

RandomForestRegressor no sklearn (auto dataset)

# 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)
Aprendizado de máquina com modelos baseados em árvores em Python
# Instancia um RandomForestRegressor 'rf' com 400 estimators
rf = RandomForestRegressor(n_estimators=400, 
                                   min_samples_leaf=0.12,  
                                   random_state=SEED)

# Treina o 'rf' rf.fit(X_train, y_train) # Prediz os rótulos de teste 'y_pred' y_pred = rf.predict(X_test)
# Avalia o RMSE no teste
rmse_test = MSE(y_test, y_pred)**(1/2)

# Imprime o RMSE de teste
print('Test set RMSE of rf: {:.2f}'.format(rmse_test))
Test set RMSE of rf: 3.98
Aprendizado de máquina com modelos baseados em árvores em Python

Importância das Features

Métodos baseados em árvore: permitem medir a importância de cada feature na predição.

No sklearn:

  • quanto os nós usam uma feature (média ponderada) para reduzir impureza
  • acessado pelo atributo feature_importance_
Aprendizado de máquina com modelos baseados em árvores em Python

Importância das Features no sklearn

import pandas as pd
import matplotlib.pyplot as plt

# Cria uma pd.Series com as importâncias das features
importances_rf = pd.Series(rf.feature_importances_, index = X.columns)

# Ordena importances_rf                                   
sorted_importances_rf = importances_rf.sort_values()   

# Faz um gráfico de barras horizontal
sorted_importances_rf.plot(kind='barh', color='lightgreen'); plt.show()
Aprendizado de máquina com modelos baseados em árvores em Python

Importância das Features no sklearn

importâncias_rf

Aprendizado de máquina com modelos baseados em árvores em Python

Vamos praticar!

Aprendizado de máquina com modelos baseados em árvores em Python

Preparing Video For Download...