Klassifizierungsalgorithmen - Random Forest

Einführung

Random Forest ist ein überwachter Lernalgorithmus, der sowohl für die Klassifizierung als auch für die Regression verwendet wird. Es wird jedoch hauptsächlich für Klassifizierungsprobleme verwendet. Wie wir wissen, besteht ein Wald aus Bäumen und mehr Bäume bedeuten robusteren Wald. In ähnlicher Weise erstellt der Zufallswaldalgorithmus Entscheidungsbäume für Datenproben und erhält dann die Vorhersage von jedem von ihnen und wählt schließlich die beste Lösung durch Abstimmung aus. Es handelt sich um eine Ensemble-Methode, die besser ist als ein einzelner Entscheidungsbaum, da sie die Überanpassung durch Mittelung des Ergebnisses verringert.

Arbeiten mit dem Random Forest-Algorithmus

Wir können die Funktionsweise des Random Forest-Algorithmus anhand der folgenden Schritte verstehen:

  • Step 1 - Beginnen Sie zunächst mit der Auswahl von Zufallsstichproben aus einem bestimmten Datensatz.

  • Step 2- Als nächstes erstellt dieser Algorithmus für jede Stichprobe einen Entscheidungsbaum. Dann erhält es das Vorhersageergebnis von jedem Entscheidungsbaum.

  • Step 3 - In diesem Schritt wird für jedes vorhergesagte Ergebnis abgestimmt.

  • Step 4 - Wählen Sie zuletzt das am häufigsten gewählte Vorhersageergebnis als endgültiges Vorhersageergebnis aus.

Das folgende Diagramm zeigt die Funktionsweise -

Implementierung in Python

Beginnen Sie zunächst mit dem Importieren der erforderlichen Python-Pakete.

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

Laden Sie als Nächstes den Iris-Datensatz wie folgt von seinem Weblink herunter:

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

Als Nächstes müssen wir dem Datensatz Spaltennamen wie folgt zuweisen:

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

Jetzt müssen wir den Datensatz des Pandas-Datenrahmens wie folgt lesen:

dataset = pd.read_csv(path, names=headernames)
dataset.head()
Kelchblattlänge Kelchblattbreite Blütenblattlänge Blütenblattbreite Klasse
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

Die Datenvorverarbeitung erfolgt mit Hilfe der folgenden Skriptzeilen:

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

Als nächstes werden wir die Daten in Zug- und Testaufteilung aufteilen. Der folgende Code teilt den Datensatz in 70% Trainingsdaten und 30% Testdaten auf -

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)

Als nächstes trainieren Sie das Modell mit Hilfe der RandomForestClassifier-Klasse von sklearn wie folgt:

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

Endlich müssen wir Vorhersagen treffen. Dies kann mit Hilfe des folgenden Skripts erfolgen:

y_pred = classifier.predict(X_test)

Drucken Sie als Nächstes die Ergebnisse wie folgt aus:

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)

Ausgabe

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

Vor- und Nachteile von Random Forest

Vorteile

Das Folgende sind die Vorteile des Random Forest-Algorithmus:

  • Es überwindet das Problem der Überanpassung, indem die Ergebnisse verschiedener Entscheidungsbäume gemittelt oder kombiniert werden.

  • Zufällige Gesamtstrukturen eignen sich für eine Vielzahl von Datenelementen besser als ein einzelner Entscheidungsbaum.

  • Zufällige Gesamtstrukturen weisen eine geringere Varianz auf als einzelne Entscheidungsbäume.

  • Zufällige Wälder sind sehr flexibel und besitzen eine sehr hohe Genauigkeit.

  • Die Skalierung von Daten erfordert keinen zufälligen Gesamtstrukturalgorithmus. Die Genauigkeit bleibt auch nach der Bereitstellung von Daten ohne Skalierung erhalten.

  • Die Skalierung von Daten erfordert keinen zufälligen Gesamtstrukturalgorithmus. Die Genauigkeit bleibt auch nach der Bereitstellung von Daten ohne Skalierung erhalten.

Nachteile

Das Folgende sind die Nachteile des Random Forest-Algorithmus:

  • Komplexität ist der Hauptnachteil von Random Forest-Algorithmen.

  • Der Bau zufälliger Wälder ist viel schwieriger und zeitaufwändiger als der von Entscheidungsbäumen.

  • Für die Implementierung des Random Forest-Algorithmus sind mehr Rechenressourcen erforderlich.

  • Es ist weniger intuitiv, wenn wir eine große Sammlung von Entscheidungsbäumen haben.

  • Der Vorhersageprozess unter Verwendung zufälliger Gesamtstrukturen ist im Vergleich zu anderen Algorithmen sehr zeitaufwändig.