Random Forest gehört zu den Ensemble-Methoden und basiert auf Entscheidungsbäumen. Viele kleine Entscheidungsbäume werden gemittelt, um ein leistungsfähiges Gesamtmodell zu erstellen.
Bagging
Das Konzept von Random Forests baut auf der Methode von Bagging auf. Bagging gehört zu den sogenannten Ensemble-Methoden. Ensemble-Methoden ist gemeinsam, dass sie viele schwache, wenig prognosekräftige Modelle (engl. weak learners) kombinieren und dadurch ein starkes, vorhersagekräftiges Modell erzeugen (eng. strong learner). Bagging steht dabei für bootstrap aggregating. Um der hohen Varianz eines einzelnen Entscheidungsbaumes entgegenzuwirken und die Prognosegenauigkeit zu erhöhen, würden optimalerweise viele Trainingsdatensätze aus der Population gezogen werden. Für jeden Trainingsdatensatz wird ein separates Modell geschätzt. Anschließend wird aus allen Modellen der Durchschnitt ermittelt, um ein Gesamtmodell zu erhalten.
Bootstrapping
Da ein solches Vorgehen aus praktischer Sicht nicht umsetzbar ist (nur ein Trainingsdatensatz steht zur Verfügung), wird Bootstrapping eingesetzt, um verschiedene Trainingsdatensätze zu simulieren. Bei der Methode des Bootstrapping wird ein neuer Datensatz mit gleicher Beobachtungsanzahl durch Ziehen mit Zurücklegen aus dem ursprünglichen Datensatz generiert. Dies hat zur Folge, dass Beobachtungen aus dem Ursprungsdatensatz mehrfach in einem Bootstrap-Sample vorkommen können.
Im Kontext von Klassifizierungsentscheidungsbäumen werden beim Bagging durch Bootstrapping B Bootstrapp-Sample (=Trainingsdatensätze) gezogen. Für jedes wird ein Entscheidungsbaum geschätzt. Das Mitteln zu einem Gesamtmodell erfolgt durch ein Mehrheitsvotum. Eine neue ungesehene, zu klassifizierende Beobachtung wird von allen B Entscheidungsbäumen klassifiziert, wobei diejenige Klasse als finale Entscheidung verwendet wird, welche mehrheitlich durch die B Entscheidungsbäume geschätzt wurde.
Der Methode des Bagging ist inhärent, dass alle geschätzten Entscheidungsbäume eine hohe Korrelation aufweisen. Pro Bootstrap-Sample werden im Durchschnitt zwei Drittel aller Beobachtungen verwendet. Das bedeutet wiederum, dass ein Feature, das einen starken Einfluss hat, in der Mehrheit der Entscheidungsbäume auftauchen wird (ggf. sogar im ersten Split). Damit korrelieren die Entscheidungsbäume beim Bagging stark. Der Ansatz des Random Forest setzt an dieser Schwäche an. Ziel ist es B Entscheidungsbäume zu erhalten, die möglichst unkorreliert sind. Gleichermaßen wie beim Bagging werden B Bootstrap-Trainings-Samples generiert.
Jedoch wird bei jedem Split in jedem Baum nur ein zufälliges Subset von m Features aus allen p Features betrachtet. Der Split darf nur die Features aus dem zufälligen Subset wählen. Ist nun ein extrem starkes Feature vorhanden, wird dieses im Durchschnitt nur in (p-m)/p Fällen betrachtet (James et al. 2013). Wird m gleich p gesetzt, so unterscheiden sich Bagging und Random Forest nicht voneinander. Die B geschätzten Bäume unterscheiden sich daher nun stark voneinander, sodass die Korrelation zwischen diesen sinkt.
import pandas as pd
from sklearn.metrics import confusion_matrix, classification_report, accuracy_score, recall_score
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier
randomforest = RandomForestClassifier(n_estimators = 1000, random_state = 42)
cv_scores = cross_val_score(randomforest, X_train, y_train, cv = 3, scoring = ‚recall‘)
print(cv_scores)
print(„Average 3-Fold CV recall score: {}“.format(np.mean(cv_scores)))
randomforest.fit(X_train, y_train)
y_pred = randomforest.predict(X_test)
y_pred_proba = randomforest.predict_proba(X_test)[:,1]
Der Code Snippet ist in der Programmiersprache Python geschrieben und basiert auf dem Modul scikit-learn.