Random-Forest-Algorithmus im Machine Learning: Funktionsweise und Bedeutung

Zu den am häufigsten eingesetzten Algorithmen im Machine Learning zählt der Random Forest. Dieses Verfahren wird sowohl für Klassifikation als auch für Regression genutzt. Häufig erzielt es eine hohe Treffgenauigkeit, weshalb es besonders bei Klassifikationsaufgaben sehr beliebt ist. Ein Random Forest entsteht durch die Kombination vieler Entscheidungsbäume. In der Regel gilt: Je mehr Bäume enthalten sind, desto leistungsfähiger und ausgereifter wird das Modell. Jeder Baum liefert eine eigene Vorhersage, und das Endergebnis ergibt sich aus einer Mehrheitsentscheidung – ein Ansatz, der Stabilität und Widerstandsfähigkeit verbessert. In diesem Beitrag schauen wir uns an, was im Inneren eines Random Forest passiert, und setzen ihn anschließend in Python um, um die Arbeitsweise praktisch nachzuvollziehen.

Warum Random Forest?

Random Forest ist ein Algorithmus des überwachten Lernens, der besonders häufig für Klassifikationsaufgaben verwendet wird. Beim überwachten Lernen trainiert das Modell mit gelabelten Beispielen, wodurch der Lernprozess gezielt gesteuert wird. Eine zentrale Stärke von Random Forest ist seine Vielseitigkeit: Er eignet sich sowohl für Klassifikation als auch für Regression. Das Verfahren kombiniert die Ergebnisse mehrerer Entscheidungsbäume, um präzise Vorhersagen zu erzeugen. Obwohl viele Bäume zunächst nach Overfitting klingen könnten, tritt dieses Problem in der Praxis meist nicht auf. Stattdessen wird das Ergebnis gewählt, das am häufigsten von den einzelnen Bäumen vorhergesagt wird (Mehrheitsvotum). Dadurch entsteht eine robuste, zuverlässige und anpassungsfähige Leistung. In den folgenden Abschnitten betrachten wir, wie Random Forests aufgebaut sind und wie sie Schwächen einzelner Entscheidungsbäume verringern.

Nachteile von Entscheidungsbäumen

Ein Entscheidungsbaum ist ein Klassifikationsmodell, das ein festes Regelwerk erstellt, um Beziehungen zwischen Datenpunkten zu beschreiben. Beobachtungen (Datenpunkte) werden anhand eines Attributs so aufgeteilt, dass die entstehenden Gruppen möglichst deutlich voneinander abweichen, während die Elemente innerhalb einer Gruppe möglichst ähnlich sind. Anders ausgedrückt: Der Abstand zwischen den Klassen soll klein sein, und der Abstand innerhalb der Klassen soll groß sein. Das wird mithilfe verschiedener Methoden wie Information Gain, Gini Index und weiteren umgesetzt.

Es gibt mehrere Einschränkungen, die den reibungslosen Einsatz von Entscheidungsbäumen erschweren können, darunter:

  • Overfitting-Gefahr bei sehr tiefen Bäumen: Entscheidungsbäume können überanpassen, wenn sie zu tief wachsen. Mit jeder weiteren Aufteilung werden mehr Attribute berücksichtigt. Der Baum versucht, das Trainingsset möglichst perfekt abzubilden, lernt dadurch zu viele Details der Trainingsdaten und verliert an Generalisierungsfähigkeit.
  • Gieriges, lokal optimales Splitting: Entscheidungsbäume arbeiten gierig und neigen dazu, lokal optimale Entscheidungen zu finden, statt die global beste Lösung zu betrachten. In jedem Schritt wird eine Methode genutzt, um die beste Aufteilung zu bestimmen. Der lokal beste Knoten ist jedoch nicht zwingend der global beste. Genau hier hilft Random Forest, diese Probleme abzufedern.

Von Entscheidungsbäumen zu Random Forests

Das Problem mit einzelnen Entscheidungsbäumen

Entscheidungsbäume sind leicht anzuwenden, stoßen jedoch häufig auf Overfitting, hohe Varianz oder Bias – vor allem dann, wenn der Baum zu tief oder zu flach ist. Ein einzelner Baum kann zudem falsche Vorhersagen liefern, wenn er mit verrauschten oder verzerrten Daten trainiert wird.

Die Idee: Viele Bäume kombinieren

Um diese Probleme zu lösen, wurde vorgeschlagen, viele Bäume zu einem stärkeren Modell zusammenzuführen – einem Ensemble. Dieses Konzept wurde 1995 von Tin Kam Ho bei Bell Laboratories vorgestellt und bildete die Grundlage für den Random-Forest-Algorithmus.

Die Stärke des Waldes

Eine Gruppe von Bäumen (ein Wald) kann Fehler einzelner Bäume ausgleichen. Trifft ein Baum eine falsche Entscheidung, können andere Bäume richtig liegen. Durch die Kombination entsteht insgesamt eine genauere und stabilere Vorhersage. Für Klassifikation gilt: Jeder Baum gibt eine „Stimme“ für ein Klassenlabel ab. Das Label mit den meisten Stimmen wird als Endergebnis ausgegeben. Bei Regressionsaufgaben liefert jeder Baum eine numerische Vorhersage, und das finale Ergebnis ergibt sich als Durchschnitt aller Werte.

Zufälligkeit macht stärker

Während ein Entscheidungsbaum bei jeder Aufteilung stets die besten Merkmale auswählen möchte, wählt Random Forest Merkmale zufällig aus. Dadurch unterscheiden sich die Bäume stärker voneinander, was Overfitting entgegenwirkt.

Die Rolle von Bagging (Bootstrap Aggregating)

Random Forest basiert auf einer Technik namens Bagging (Bootstrap Aggregation). Dabei werden mehrere Datensätze erzeugt, indem zufällig aus dem Originaldatensatz gezogen wird – mit Zurücklegen. Jeder dieser Stichprobendatensätze trainiert einen eigenen Entscheidungsbaum. So wird die Varianz reduziert und die Gesamtgenauigkeit verbessert, indem die Vorhersagen aller Bäume zusammengeführt werden.

Feature Bagging – der Random-Forest-Kniff

Random Forest geht noch einen Schritt weiter und randomisiert nicht nur die Datenstichproben, sondern auch die verwendeten Features. Jeder Baum erhält eine eigene Feature-Teilmenge – das nennt man Feature Bagging. Dadurch sehen die Bäume nicht alle gleich aus, und die Vielfalt im Wald steigt.

Warum das so gut funktioniert

Die Kombination aus zufälligen Daten, zufälligen Features und vielen Bäumen erzeugt ein Modell, das weniger anfällig für Rauschen ist, seltener überanpasst und meist genauer ist als ein einzelner Entscheidungsbaum.

Unterschied zwischen Entscheidungsbäumen und Random Forests

Merkmal Entscheidungsbaum Random Forest
Grundkonzept Erstellt eine einzelne Baumstruktur, indem Entscheidungsregeln auf Basis der Eingabemerkmale aufgebaut werden. Erstellt mehrere Entscheidungsbäume mithilfe zufälliger Teilmengen von Daten und Features im Rahmen eines Ensemble-Learning-Ansatzes.
Feature-Auswahl Wählt für jeden Split das optimale Merkmal anhand von Metriken wie Gini-Impurity oder Entropie aus. Nutzt bei jedem Split eine zufällige Teilmenge von Features, um die Vielfalt zwischen den Bäumen zu erhöhen.
Vorhersagemethode Erzeugt Vorhersagen mithilfe eines einzelnen Entscheidungsbaums. Kombiniert Vorhersagen vieler Bäume durch Mehrheitsabstimmung (Klassifikation) oder Mittelwertbildung (Regression).
Overfitting-Risiko Anfälliger für Overfitting, insbesondere bei tiefen Bäumen oder kleinen Datensätzen. Weniger anfällig für Overfitting durch Zufälligkeit und Ensemble-Mittelung.
Genauigkeit Häufig geringere Genauigkeit aufgrund höherer Varianz und starker Abhängigkeit von den Trainingsdaten. Erreicht meist eine höhere Genauigkeit durch aggregierte Vorhersagen aus mehreren Bäumen.
Interpretierbarkeit Leicht verständlich und gut visualisierbar, mit transparenten Entscheidungsregeln. Schwieriger zu interpretieren, da Vorhersagen aus vielen kombinierten Bäumen entstehen.
Rechenaufwand Rechenleicht, da nur ein einzelner Baum trainiert wird. Rechenintensiver, da mehrere Bäume trainiert und ausgewertet werden müssen.
Trainingszeit Schnellere Trainingszeit, da weniger Berechnungen erforderlich sind. Langsameres Training aufgrund der Erstellung vieler Bäume.
Umgang mit Rauschen und Varianz Sensibel gegenüber verrauschten Daten und kleinen Änderungen im Datensatz, die die Baumstruktur stark beeinflussen können. Besonders leistungsfähig bei großen Datensätzen mit vielen Features.
Eignung für Datensätze Funktioniert gut bei kleinen bis mittelgroßen Datensätzen. Funktioniert besser bei großen Datensätzen mit vielen Features.
Typische Anwendungsfälle Geeignet für interpretierbare Modelle und einfache Entscheidungsunterstützungssysteme. Häufig eingesetzt für hochgenaue Anwendungen wie Betrugserkennung, Risikoanalysen und medizinische Diagnostik.

Anwendungen von Random Forests

Der Random-Forest-Classifier wird in vielen Bereichen wie Banking, Medizin und E-Commerce eingesetzt, da er eine starke Klassifikationsleistung bietet und dadurch über die Jahre zunehmend verbreitet wurde. Er wird verwendet, um Muster im Kundenverhalten zu erkennen, Remote-Sensing-Aufgaben zu unterstützen und Trends an Aktienmärkten zu analysieren. Im Gesundheitswesen hilft er beim Erkennen von Pathologien, indem häufige Muster identifiziert werden, und im Finanzbereich unterstützt er maßgeblich dabei, betrügerische von nicht betrügerischen Aktivitäten zu unterscheiden.

Random Forest von innen verstehen: Training, Vorhersage & Bewertung

Wie die meisten Machine-Learning-Algorithmen umfasst Random Forest zwei zentrale Phasen: Training und Testing. In der einen Phase wird der Wald aufgebaut, in der anderen werden Vorhersagen aus Testdaten erzeugt, die dem Modell übergeben werden. Zusätzlich betrachten wir die mathematische Logik, die das Pseudocode-Grundgerüst trägt.

Während des Trainings beginnt das Verfahren für jede Iteration b in 1, 2, … B (wobei B die Gesamtzahl der Entscheidungsbäume darstellt) damit, Bagging anzuwenden, um zufällige Daten-Teilmengen zu erzeugen. Aus einem Trainingsdatensatz X und Y werden n Trainingsbeispiele mit Zurücklegen gezogen, um Xb und Yb zu bilden. Aus den verfügbaren Features werden zufällig N Features ausgewählt, und aus dieser Teilmenge wird der beste Split-Knoten n berechnet. Mithilfe des gewählten Split-Punkts wird der Knoten entsprechend aufgeteilt. Dieser Ablauf – Features auswählen, besten Split finden und Knoten teilen – wird wiederholt, bis l Knoten entstanden sind. Das gesamte Verfahren läuft weiter, bis B Bäume gebaut wurden. In der Testphase werden Vorhersagen für unbekannte Samples x’ erzeugt, indem die Ausgaben aller einzelnen Regressionsbäume aggregiert (gemittelt) werden.

Im Fall der Klassifikation werden die Stimmen aller Bäume gesammelt, und die Klasse mit den meisten Stimmen wird als finale Vorhersage verwendet.

Die optimale Anzahl an Bäumen in einem Random Forest (B) lässt sich anhand der Datensatzgröße, Cross-Validation oder Out-of-Bag-Error bestimmen. Schauen wir uns diese Begriffe an.

Cross-Validation wird häufig genutzt, um Overfitting in Machine-Learning-Modellen zu reduzieren. Dabei wird mit Trainingsdaten trainiert und über mehrere Durchläufe auf unterschiedlichen Test-Splits geprüft. Diese Durchläufe werden durch k beschrieben, daher der Begriff k-fold cross-validation. Das kann helfen, die Anzahl an Bäumen anhand des k-Werts abzuleiten. Out-of-bag error ist der durchschnittliche Vorhersagefehler für jedes Trainingssample xi, berechnet nur mit den Bäumen, die xi nicht in ihrer Bootstrap-Stichprobe enthalten. Das ähnelt einer Leave-one-out-Cross-Validation.

Feature-Wichtigkeit berechnen (Feature Engineering)

Als Nächstes sehen wir uns an, wie Random Forest in Python mit der scikit-learn-Bibliothek umgesetzt werden kann. Ein sinnvoller erster Schritt ist die Bewertung der Feature-Wichtigkeit, weil sie verdeutlicht, welche Merkmale Vorhersagen am stärksten beeinflussen. Scikit-learn bietet dafür einen Feature-Importance-Indikator, der die relative Bedeutung aller Features abbildet. Dieser Wert wird über den Gini Index oder den Mean decrease in impurity (MDI) berechnet und beschreibt, wie stark die Unreinheit durch Splits mit diesem Feature über alle Bäume hinweg reduziert wird.

Der Score zeigt den Beitrag jedes Features während des Trainings und normalisiert die Werte so, dass ihre Summe 1 ergibt. Dadurch lassen sich wichtige Features leichter auswählen und solche entfernen, die keinen oder nur geringen Einfluss auf den Modellaufbau haben. Weniger Features zu verwenden ist sinnvoll, weil es Overfitting reduziert – ein Effekt, der häufig auftritt, wenn sehr viele Attribute vorhanden sind.

Random Forest für Regression: Kontinuierliche Werte vorhersagen

Obwohl Random Forest oft mit Klassifikation verknüpft wird, eignet er sich ebenso hervorragend für Regressionsaufgaben, bei denen ein kontinuierlicher numerischer Wert geschätzt werden soll (zum Beispiel Hauspreise, Temperaturwerte oder Umsätze).

So funktioniert es

Statt – wie bei der Klassifikation – per Abstimmung ein Klassenlabel zu bestimmen, gibt jeder Entscheidungsbaum im Wald eine numerische Schätzung aus. Das Modell bildet daraus das Endergebnis, indem es die Vorhersagen aller Bäume mittelt. Diese Mittelung senkt die Varianz und führt meist zu Vorhersagen, die sowohl genauer als auch stabiler sind.

Schritt-für-Schritt-Logik

  • Mehrere Entscheidungsbäume werden auf zufälligen Teilmengen des Datensatzes trainiert (einschließlich Zeilen und Spalten).
  • Jeder Baum liefert für den gegebenen Eingabepunkt eine numerische Vorhersage.
  • Das Modell mittelt alle Vorhersagen der Bäume und erzeugt daraus das finale Ergebnis.

Wenn ein Random Forest B Bäume enthält und jeder Baum eine Vorhersage hb(x) liefert, ergibt sich die finale Prognose ŷ für eine Eingabe x wie folgt:

Formel zur Berechnung der finalen Vorhersage eines Random-Forest-Modells für eine Eingabe x.

Wobei:

  • hb(x) = Vorhersage des b-ten Baums
  • B = Gesamtzahl der Bäume im Wald
  • ŷ​ = finaler vorhergesagter Wert (Durchschnitt aller Bäume)

RF kann nichtlineare Zusammenhänge gut abbilden und reduziert Overfitting durch Mittelung. Außerdem sind Random-Forest-Modelle für Regression häufig robust gegenüber Ausreißern und kommen mit fehlenden Daten gut zurecht.

Random-Forest-Hyperparameter in Scikit-learn

Scikit-learns RandomForestClassifier bietet mehrere einstellbare Hyperparameter, mit denen sich Komplexität, Geschwindigkeit und Genauigkeit beeinflussen lassen. Im Folgenden die wichtigsten:

1. n_estimators – Anzahl der Bäume im Wald

Dieser Parameter legt fest, wie viele Entscheidungsbäume gebaut und im Random Forest zusammengeführt werden. In vielen Fällen steigt Genauigkeit und Stabilität mit einer höheren Baumanzahl, weil mehr Vorhersagen gemittelt werden und dadurch die Varianz sinkt. Gleichzeitig steigen jedoch Rechenzeit und Speicherbedarf. In scikit-learn lag der Default in Version 0.20 bei 10, wurde aber ab Version 0.22 auf 100 erhöht, was einen praxisnahen Kompromiss zwischen Modellleistung und Trainingseffizienz darstellt.

2. criterion – Funktion zur Split-Bewertung

Dieses Setting bestimmt, nach welchem Kriterium die Qualität eines Splits an einem Knoten bewertet wird. Am häufigsten werden ‚gini‘ und ‚entropy‘ verwendet. Der ‚gini‘-Index misst die Unreinheit über die Wahrscheinlichkeit, dass ein zufällig gewähltes Element falsch klassifiziert würde, wenn es anhand der Klassenverteilung im Knoten zufällig gelabelt wird. ‚entropy‘ basiert dagegen auf Information Gain und beschreibt, wie stark die Unsicherheit nach dem Split sinkt. Während ‚gini‘ standardmäßig gesetzt ist und meist schneller berechnet wird, kann ‚entropy‘ je nach Datensatz gelegentlich etwas bessere Ergebnisse liefern.

3. max_depth – Maximale Baumtiefe

max_depth begrenzt, wie tief ein Baum im Random Forest wachsen darf. Ist der Wert auf None gesetzt, wird so lange gesplittet, bis alle Blätter rein sind, also keine weitere Verbesserung möglich ist. Tiefe Bäume können komplexe Muster erfassen, erhöhen aber das Overfitting-Risiko. Eine feste maximale Tiefe hilft, Overfitting zu begrenzen und kann außerdem die Rechenzeit senken, wodurch ein effizienteres und besser generalisierendes Modell entsteht.

4. max_features – Features pro Split

Dieser Parameter steuert, wie viele Features beim Suchen nach dem besten Split an einem Knoten betrachtet werden. Für Klassifikation ist der Standard meist ‚auto‘ oder ’sqrt‘, was der Quadratwurzel der Gesamtanzahl an Features entspricht. Eine weitere Option ist ‚log2‘, basierend auf dem Logarithmus zur Basis 2. Alternativ kann eine ganze Zahl angegeben werden, um eine exakte Feature-Anzahl zu setzen, oder ein Float (z. B. 0.5), um einen Anteil aller Features zu definieren. Das Tuning dieses Parameters hilft, Vorhersagequalität und Rechenaufwand auszubalancieren. Die Randomisierung der Features pro Split steigert die Vielfalt der Bäume, reduziert Korrelation und wirkt Overfitting entgegen.

5. min_samples_leaf – Mindestanzahl Samples pro Blatt

min_samples_leaf definiert, wie viele Samples mindestens in einem Blattknoten (Endknoten) enthalten sein müssen. Höhere Werte führen zu konservativeren Bäumen, weil Splits vermieden werden, die extrem kleine Blätter erzeugen. Dadurch sinkt die Overfitting-Gefahr, und die Generalisierung verbessert sich oft – besonders bei verrauschten oder unausgeglichenen Datensätzen. Standardmäßig ist der Wert 1, was maximale Flexibilität erlaubt, aber auch das Overfitting-Risiko erhöhen kann.

6. n_jobs – Anzahl paralleler Jobs

Dieser Parameter legt fest, wie viele CPU-Kerne parallel für das Training genutzt werden dürfen. Mit None oder 1 läuft das Training auf einem Kern. n_jobs=-1 sorgt dafür, dass alle verfügbaren Kerne genutzt werden, was Training und Vorhersagen deutlich beschleunigen kann – insbesondere bei großen Datensätzen oder vielen Bäumen.

7. oob_score – Out-of-Bag-Bewertung

Dieser Boolean bestimmt, ob Out-of-bag-(OOB)-Samples zur Bewertung der Modellleistung genutzt werden sollen. OOB-Samples sind Datenpunkte, die nicht in der Bootstrap-Stichprobe eines bestimmten Baums enthalten waren. Wenn oob_score True ist, nutzt das Modell diese ausgeschlossenen Daten wie ein integriertes Validierungsset, um den Generalisierungsfehler zu schätzen. Das spart Zeit, weil separate Cross-Validation entfallen kann, und ist besonders bei großen Datensätzen nützlich. Standardmäßig steht dieser Parameter auf False.

Den Algorithmus programmieren

Schritt 1: Daten erkunden

Importiere zunächst die MNIST-Daten aus der datasets-Bibliothek im sklearn-Paket.

from sklearn import datasets
mnist = datasets.load_digits()
X = mnist.data
Y = mnist.target

Als Nächstes untersuchst du die Daten, indem du sowohl die Eingabewerte (data) als auch die Ausgabelabel (target) ausgibst.


[[ 0.  0.  5. 13.  9.  1.  0.  0.  0.  0. 13. 15. 10. 15.  5.  0.  0.  3.
  15.  2.  0. 11.  8.  0.  0.  4. 12.  0.  0.  8.  8.  0.  0.  5.  8.  0.
   0.  9.  8.  0.  0.  4. 11.  0.  1. 12.  7.  0.  0.  2. 14.  5. 10. 12.
   0.  0.  0.  0.  6. 13. 10.  0.  0.  0.]]
[0]
Die Eingabe enthält 64 Werte. Das zeigt, dass es 64 Attribute im Datensatz gibt, und das ausgegebene Klassenlabel ist 0. Um das zu bestätigen, überprüfst du die Shapes von X und y, in denen Daten und Zielwerte gespeichert sind.

 

print(mnist.data.shape)
print(mnist.target.shape)

Output:

(1797, 64)
(1797,)

Damit gibt es 1797 Datenzeilen und 64 Attribute im Datensatz.

Schritt 2: Daten vorverarbeiten

In diesem Schritt wird mit Pandas ein DataFrame erstellt. Die Zielwerte liegen in y und die Eingabedaten in X. pd.Series wird genutzt, um ein 1D-Array mit int-Datentyp zu erzeugen, das auf Kategorienwerte begrenzt ist. pd.DataFrame wandelt die Eingabedaten in eine tabellarische Form um. head() liefert die ersten fünf Zeilen des DataFrames. Gib sie wie folgt aus.

import pandas as pd

y = pd.Series(mnist.target).astype('int').astype('category')
X = pd.DataFrame(mnist.data)

print(X.head())
print(y.head())
Output:

   0    1    2     3     4     5    6    7    8    9  ...    54   55   56  \
0  0.0  0.0  5.0  13.0   9.0   1.0  0.0  0.0  0.0  0.0 ...   0.0  0.0  0.0   
1  0.0  0.0  0.0  12.0  13.0   5.0  0.0  0.0  0.0  0.0 ...   0.0  0.0  0.0   
2  0.0  0.0  0.0   4.0  15.0  12.0  0.0  0.0  0.0  0.0 ...   5.0  0.0  0.0   
3  0.0  0.0  7.0  15.0  13.0   1.0  0.0  0.0  0.0  8.0 ...   9.0  0.0  0.0   
4  0.0  0.0  0.0   1.0  11.0   0.0  0.0  0.0  0.0  0.0 ...   0.0  0.0  0.0   

    57   58    59    60    61   62   63  
0  0.0  6.0  13.0  10.0   0.0  0.0  0.0  
1  0.0  0.0  11.0  16.0  10.0  0.0  0.0  
2  0.0  0.0   3.0  11.0  16.0  9.0  0.0  
3  0.0  7.0  13.0  13.0   9.0  0.0  0.0  
4  0.0  0.0   2.0  16.0   4.0  0.0  0.0  

[5 rows x 64 columns]
0    0
1    1
2    2
3    3
4    4
dtype: category
Categories (10, int64): [0, 1, 2, 3, ..., 6, 7, 8, 9]

Teile die Eingabe (X) und Ausgabe (y) in Trainings- und Testdaten auf, indem du train_test_split aus sklearn.model_selection verwendest. test_size gibt an, dass 70% der Datenpunkte im Training und 30% im Testing liegen.

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

X_train ist die Eingabe in den Trainingsdaten.

X_test ist die Eingabe in den Testdaten.

y_train ist die Ausgabe in den Trainingsdaten.y_test ist die Ausgabe in den Testdaten.

Schritt 3: Classifier erstellen

Trainiere das Modell mit den Trainingsdaten, indem du RandomForestClassifier aus sklearn.ensemble nutzt. Der Parameter n_estimators bedeutet, dass 100 Bäume im Random Forest enthalten sind. Die Methode fit() trainiert das Modell mit X_train und y_train.

from sklearn.ensemble import RandomForestClassifier

clf=RandomForestClassifier(n_estimators=100)
clf.fit(X_train,y_train)

Erzeuge Vorhersagen, indem du predict() auf X_test anwendest. Die prognostizierten Werte werden in y_pred gespeichert.

y_pred=clf.predict(X_test)

Prüfe die Genauigkeit mit accuracy_score aus sklearn.metrics. Die Accuracy wird anhand der tatsächlichen Werte (y_test) und der vorhergesagten Werte (y_pred) berechnet.

from sklearn.metrics import accuracy_score

print("Accuracy: ", accuracy_score(y_test, y_pred))

 

Output:
Accuracy:  0.9796296296296

Das entspricht einer geschätzten Genauigkeit von 97,96% für den trainierten Random-Forest-Classifier – ein sehr gutes Ergebnis.

Schritt 4: Feature-Wichtigkeit schätzen

In den vorherigen Abschnitten wurde Feature Importance als wichtiges Merkmal des Random-Forest-Classifiers genannt. Jetzt berechnen wir das.

feature_importances_ ist in sklearn als Teil von RandomForestClassifier verfügbar. Extrahiere die Werte und sortiere sie absteigend, damit die wichtigsten zuerst erscheinen.

feature_imp=pd.Series(clf.feature_importances_).sort_values(ascending=False)
print(feature_imp[:10])

 

Output:
21    0.049284
43    0.044338
26    0.042334
36    0.038272
33    0.034299
dtype: float64

Die linke Spalte steht für das Attribut-Label (zum Beispiel das 26. Attribut, das 43. Attribut usw.), und die rechte Spalte zeigt den Wert der Feature-Wichtigkeit.

Schritt 5: Feature-Wichtigkeit visualisieren

Importiere matplotlib, pyplot und seaborn, um die Feature-Importance-Ergebnisse zu visualisieren. Gib die Input- und Output-Werte so an, dass x durch die Feature-Importance-Werte definiert ist und y die 10 wichtigsten Features aus den 64 Attributen darstellt.

import matplotlib.pyplot as plt
import seaborn as sns

%matplotlib inline
sns.barplot(x=feature_imp, y=feature_imp[:10].index)
plt.xlabel('Feature Importance Score')
plt.ylabel('Features')
plt.title("Visualizing Important Features")
plt.legend()
plt.show()

Vorteile von Random Forest

  • Random Forest ist ein äußerst vielseitiger und zuverlässiger Algorithmus, der bei einer breiten Palette von Machine-Learning-Problemen sehr gute Ergebnisse liefert.
  • Fehlende Werte können effektiv verarbeitet werden, wodurch häufig keine explizite Datenimputation erforderlich ist.
  • Neben überwachten Lernverfahren kann Random Forest auch für unüberwachte Aufgaben wie Clustering angepasst werden, indem proximitätsbasierte Ähnlichkeitsmaße genutzt werden.
  • Der Algorithmus ist vergleichsweise leicht zu verstehen und zu implementieren, insbesondere mit Machine-Learning-Bibliotheken wie scikit-learn.
  • Selbst mit minimalem Hyperparameter-Tuning erzielt Random Forest häufig bereits sehr starke Baseline-Ergebnisse.
  • Durch die Aggregation von Vorhersagen aus mehreren unabhängigen Entscheidungsbäumen wird das Risiko von Overfitting deutlich reduziert.
  • Random Forest unterstützt außerdem die Analyse der Feature-Wichtigkeit und eignet sich daher gut zur Identifikation der einflussreichsten Variablen in einem Datensatz.
  • Besonders bei hochdimensionalen Datensätzen mit vielen Eingabemerkmalen zeigt Random Forest eine sehr starke Performance.

Nachteile von Random Forest

  • Training und Inferenz mit Random Forest können rechenintensiv werden, insbesondere bei großen Datensätzen oder einer hohen Anzahl an Bäumen.
  • Das Modell ist weniger interpretierbar als ein einzelner Entscheidungsbaum, da die Entscheidungslogik auf zahlreiche Bäume innerhalb des Ensembles verteilt ist.
  • Eine größere Anzahl an Bäumen verbessert häufig die Genauigkeit, kann jedoch die Trainingszeit erheblich verlängern.
  • Auch die Vorhersagelatenz kann ansteigen, was in Anwendungen mit schnellen oder Echtzeit-Antwortanforderungen problematisch sein kann.

Zusammenfassung und Fazit

Random Forest ist ein leistungsstarker, einsteigerfreundlicher Machine-Learning-Algorithmus, der Einfachheit und Performance gut ausbalanciert. Indem er die Stärken vieler Entscheidungsbäume kombiniert, begrenzt er Overfitting und liefert starke Ergebnisse für Klassifikation und Regression. Ob du mit strukturierten Datensätzen arbeitest oder reale Business-Probleme löst: Random Forest ist ein zuverlässiges Werkzeug im ML-Toolkit.

Quelle: digitalocean.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: