Algoritmos de classificação - Floresta aleatória

Introdução

A floresta aleatória é um algoritmo de aprendizagem supervisionado que é usado tanto para classificação quanto para regressão. Porém, ele é usado principalmente para problemas de classificação. Como sabemos, uma floresta é composta por árvores e mais árvores significa floresta mais robusta. Da mesma forma, o algoritmo de floresta aleatório cria árvores de decisão em amostras de dados e, em seguida, obtém a previsão de cada uma delas e, finalmente, seleciona a melhor solução por meio de votação. É um método de conjunto melhor do que uma única árvore de decisão porque reduz o sobreajuste ao calcular a média do resultado.

Trabalho de algoritmo de floresta aleatória

Podemos entender o funcionamento do algoritmo Random Forest com a ajuda das seguintes etapas -

  • Step 1 - Primeiro, comece com a seleção de amostras aleatórias de um determinado conjunto de dados.

  • Step 2- A seguir, este algoritmo construirá uma árvore de decisão para cada amostra. Em seguida, obterá o resultado da previsão de cada árvore de decisão.

  • Step 3 - Nesta etapa, a votação será realizada para todos os resultados previstos.

  • Step 4 - Por fim, selecione o resultado da previsão mais votado como o resultado final da previsão.

O diagrama a seguir ilustrará seu funcionamento -

Implementação em Python

Primeiro, comece importando os pacotes Python necessários -

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

Em seguida, baixe o conjunto de dados iris de seu weblink da seguinte forma -

path = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"

Em seguida, precisamos atribuir nomes de coluna ao conjunto de dados da seguinte maneira -

headernames = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'Class']

Agora, precisamos ler o conjunto de dados para o dataframe do Pandas da seguinte maneira -

dataset = pd.read_csv(path, names=headernames)
dataset.head()
comprimento de sépala largura sépala comprimento de pétala largura da pétala Classe
0 5,1 3,5 1,4 0,2 Iris-setosa
1 4,9 3,0 1,4 0,2 Iris-setosa
2 4,7 3,2 1,3 0,2 Iris-setosa
3 4,6 3,1 1,5 0,2 Iris-setosa
4 5.0 3,6 1,4 0,2 Iris-setosa

O pré-processamento de dados será feito com a ajuda das seguintes linhas de script -

X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 4].values

A seguir, dividiremos os dados em treinamento e teste. O código a seguir dividirá o conjunto de dados em 70% dos dados de treinamento e 30% dos dados de teste -

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30)

Em seguida, treine o modelo com a ajuda da classe RandomForestClassifier do sklearn da seguinte maneira -

from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier(n_estimators=50)
classifier.fit(X_train, y_train)

Por fim, precisamos fazer previsões. Isso pode ser feito com a ajuda do seguinte script -

y_pred = classifier.predict(X_test)

A seguir, imprima os resultados da seguinte forma -

from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
result = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(result)
result1 = classification_report(y_test, y_pred)
print("Classification Report:",)
print (result1)
result2 = accuracy_score(y_test,y_pred)
print("Accuracy:",result2)

Resultado

Confusion Matrix:
[
   [14 0 0]
   [ 0 18 1]
   [ 0 0 12]
]
Classification Report:
               precision       recall     f1-score       support
Iris-setosa        1.00         1.00        1.00         14
Iris-versicolor    1.00         0.95        0.97         19
Iris-virginica     0.92         1.00        0.96         12
micro avg          0.98         0.98        0.98         45
macro avg          0.97         0.98        0.98         45
weighted avg       0.98         0.98        0.98         45

Accuracy: 0.9777777777777777

Prós e Contras da Random Forest

Prós

A seguir estão as vantagens do algoritmo Random Forest -

  • Ele supera o problema de sobreajuste pela média ou combinação dos resultados de diferentes árvores de decisão.

  • Florestas aleatórias funcionam bem para uma grande variedade de itens de dados do que uma única árvore de decisão.

  • A floresta aleatória tem menos variância do que a árvore de decisão única.

  • As florestas aleatórias são muito flexíveis e possuem uma precisão muito alta.

  • O escalonamento de dados não requer um algoritmo de floresta aleatório. Ele mantém uma boa precisão mesmo depois de fornecer dados sem escala.

  • O escalonamento de dados não requer um algoritmo de floresta aleatório. Ele mantém uma boa precisão mesmo depois de fornecer dados sem escala.

Contras

A seguir estão as desvantagens do algoritmo Random Forest -

  • A complexidade é a principal desvantagem dos algoritmos de floresta aleatória.

  • A construção de florestas aleatórias é muito mais difícil e demorada do que as árvores de decisão.

  • Mais recursos computacionais são necessários para implementar o algoritmo Random Forest.

  • É menos intuitivo no caso de termos uma grande coleção de árvores de decisão.

  • O processo de predição usando florestas aleatórias é muito demorado em comparação com outros algoritmos.