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.