Random Forest Regression
Ein absoluter Anfänger auf dem Gebiet des maschinellen Lernens ist immer erstaunt und etwas verwirrt über seine unendlichen Möglichkeiten. Nach einigen frustrierenden Wochenenden und vielen Segnungen der Koffeingötter wird er dies schließlich in den Griff bekommen. Das Ziel dieses Artikels ist es, den anderen diesen Weg zu erleichtern, wobei ein Random Forest Regression-Modell behandelt wird. Wir fangen mit der Erklärung der Funktionsweise der Random Forests in einfachen Worten an und setzen dann mit einer einfachen Implementierung eines Random Forest Regression-Modells unter Verwendung von Scikit-learn fort, um den Neulingen den Start zu erleichtern.
Die Funktionsweise der Random Forests
Ein Random Forest ist ein Ensemble-Verfahren, das sowohl Regressions- als auch Klassifizierungsaufgaben unter Verwendung mehrerer Entscheidungsbäume und einer Methode mit dem Namen Bootstrap Aggregation (oft als Bagging bekannt) ausführen kann. Was versteht man unter Bagging? Beim Bagging im Random Forest-Verfahren umfasst das Training jedes Entscheidungsbaums auf eine andere Datenstichprobe, wobei das Stichprobenverfahren mit Ersetzen durchgeführt wird.

Die Grundidee dahinter besteht darin, dass man sich auf einzelne Entscheidungsbäume nicht verlässt, sondern mehrere Entscheidungsbäume kombiniert werden, um die endgültige Ausgabe zu ermitteln.
Fangen wir an!
Um zu zeigen, wie ein Random Forest Regression-Model anhand von Python implementiert wird, müssen als erstes einige Bibliotheken importiert werden.
from sklearn.model_selection import cross_val_score, GridSearchCV
from sklearn.ensemble import RandomForestRegressor
from sklearn.preprocessing import MinMaxScaler
Hier wird mit Scikit-Learn angefangen. Es handelt sich um eine freie Software-Bibliothek zum maschinellen Lernen, die verschiedene Klassifikations-, Regressions- und Clustering-Algorithmen bietet. Und dies ist eine rettende Gnade für Liebhaber des maschinellen Lernens.
Gehen wir also direkt in den Wald. So sieht es aus:
def rfr_model(X, y):
# Perform Grid-Search
gsc = GridSearchCV(
estimator=RandomForestRegressor(),
param_grid={
'max_depth': range(3,7),
'n_estimators': (10, 50, 100, 1000),
},
cv=5, scoring='neg_mean_squared_error', verbose=0,
n_jobs=-1)
grid_result = gsc.fit(X, y)
best_params = grid_result.best_params_
rfr = RandomForestRegressor(max_depth=best_params["max_depth"], n_estimators=best_params["n_estimators"],
random_state=False, verbose=False)
# Perform K-Fold CV
scores = cross_val_score(rfr, X, y, cv=10, scoring='neg_mean_absolute_error')
return scores
Zunächst werden die Features-Werte (X) und die abhängigen Variablenwerte (y) des Datensatzes (in diesem Fall sind dies Pandas DataFrames) an die vom Random Forest Regression-Modell erstellte Methode geliefert. Dann wird die Grid Search Cross Validation- Methode (etwa Kreuzvalidierungsmethode für die Rastersuche) aus der Sklearn-Bibliothek verwendet, um die optimalen Werte für die Hyperparameter aus einem angegebenen Wertebereich des Modells festzustellen. Hier wurden zwei Hyperparameter zur Optimierung gewählt: max_depth und n_estimators. Gemäß der Sklearn-Dokumentation gilt max_depth für die maximale Tiefe des Baums und n_estimators für die Anzahl der Bäume im Wald. Idealerweise kann vom Modell eine bessere Leistung erwartet werden, wenn mehr Bäume vorhanden sind. Man muss jedoch mit den angegebenen Wertebereichen sehr vorsichtig sein und mit verschiedenen Werten experimentieren, um zu sehen, wie das Modell funktioniert.
Nach der Erstellung des Random Forest Regressor-Objekts wird es an die Funktion cross_val_score () geliefert. Ihre Aufgabe besteht darin, die K-Fold-Kreuzvalidierung für die angegebenen Daten durchzuführen und als Ausgabe einen Fehlermetrikwert bereitzustellen, der zur Bestimmung der Modellleistung dienen kann.
scores = cross_val_score(rfr, X, y, cv=10, scoring='neg_mean_absolute_error')
Eine 10-fache Kreuzvalidierung (spezifiziert durch den cv-Parameter) wurde verwendet. Es sollte darauf hingewiesen werden, dass der negative mittlere absolute Fehler (MAE/Mean Absolute Error) als Fehlermetrik, die durch den Scoring-Parameter angegeben wird, verwendet wird, um die Modellleistung zu messen. Je niedriger der mittlere absolute Wert ist, desto besser. Mithilfe der Funktion cross_val_predict () kann die Liste der vom Modell vorhergesagten Werte abgerufen werden.
predictions = cross_val_predict(rfr, X, y, cv=10)
Das wäre alles! Hoffentlich haben Sie ein grundlegendes Verständnis zum Random Forest Regression erhalten.
Möchten Sie mehr über Random Forest Regression erfahren, so können Sie sich an das Team von AI-United.de per Mail oder Q&A wenden.