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.