Algoritmi di classificazione - Foresta casuale

introduzione

La foresta casuale è un algoritmo di apprendimento supervisionato che viene utilizzato sia per la classificazione che per la regressione. Tuttavia, viene utilizzato principalmente per problemi di classificazione. Come sappiamo che una foresta è composta da alberi e più alberi significa foresta più robusta. Allo stesso modo, l'algoritmo di foresta casuale crea alberi decisionali su campioni di dati e quindi ottiene la previsione da ciascuno di essi e infine seleziona la soluzione migliore mediante il voto. È un metodo di insieme che è migliore di un singolo albero decisionale perché riduce l'over-fitting calcolando la media del risultato.

Utilizzo dell'algoritmo Random Forest

Possiamo capire il funzionamento dell'algoritmo Random Forest con l'aiuto dei seguenti passaggi:

  • Step 1 - Innanzitutto, inizia con la selezione di campioni casuali da un dato set di dati.

  • Step 2- Successivamente, questo algoritmo costruirà un albero decisionale per ogni campione. Quindi otterrà il risultato della previsione da ogni albero decisionale.

  • Step 3 - In questa fase, verrà eseguita la votazione per ogni risultato previsto.

  • Step 4 - Infine, seleziona il risultato della previsione più votato come risultato della previsione finale.

Il diagramma seguente ne illustrerà il funzionamento:

Implementazione in Python

Innanzitutto, inizia con l'importazione dei pacchetti Python necessari -

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

Successivamente, scarica il set di dati iris dal suo collegamento web come segue:

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

Successivamente, dobbiamo assegnare i nomi delle colonne al set di dati come segue:

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

Ora, dobbiamo leggere il set di dati nel frame di dati dei panda come segue:

dataset = pd.read_csv(path, names=headernames)
dataset.head()
sepalo-lunghezza larghezza del sepalo lunghezza dei petali larghezza petalo 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

La pre-elaborazione dei dati verrà eseguita con l'aiuto delle seguenti righe di script:

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

Successivamente, divideremo i dati in train e test split. Il codice seguente suddividerà il set di dati in 70% di dati di addestramento e 30% di dati di test -

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)

Quindi, addestra il modello con l'aiuto della classe RandomForestClassifier di sklearn come segue:

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

Infine, dobbiamo fare previsioni. Può essere fatto con l'aiuto del seguente script:

y_pred = classifier.predict(X_test)

Quindi, stampa i risultati come segue:

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)

Produzione

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

Pro e contro di Random Forest

Professionisti

I seguenti sono i vantaggi dell'algoritmo Random Forest:

  • Supera il problema dell'overfitting calcolando la media o combinando i risultati di diversi alberi decisionali.

  • Le foreste casuali funzionano bene per una vasta gamma di elementi di dati rispetto a un singolo albero decisionale.

  • La foresta casuale ha una varianza inferiore rispetto a un singolo albero decisionale.

  • Le foreste casuali sono molto flessibili e possiedono una precisione molto elevata.

  • Il ridimensionamento dei dati non richiede un algoritmo di foresta casuale. Mantiene una buona precisione anche dopo aver fornito i dati senza ridimensionamento.

  • Il ridimensionamento dei dati non richiede un algoritmo di foresta casuale. Mantiene una buona precisione anche dopo aver fornito i dati senza ridimensionamento.

Contro

I seguenti sono gli svantaggi dell'algoritmo Random Forest:

  • La complessità è il principale svantaggio degli algoritmi di foresta casuale.

  • La costruzione di foreste casuali è molto più difficile e richiede tempo rispetto agli alberi decisionali.

  • Sono necessarie più risorse computazionali per implementare l'algoritmo Random Forest.

  • È meno intuitivo nel caso in cui disponiamo di un'ampia raccolta di alberi decisionali.

  • Il processo di previsione che utilizza foreste casuali richiede molto tempo rispetto ad altri algoritmi.