LoslegenKostenlos starten

Random-Forest-Hyperparameter abstimmen

Wie bei allen Modellen wollen wir die Performance optimieren, indem wir die Hyperparameter abstimmen. Random Forests haben viele Hyperparameter, aber besonders wichtig ist oft die Anzahl der Features, die wir bei jedem Split sampeln, also max_features im RandomForestRegressor aus der sklearn-Bibliothek. Für Modelle wie Random Forests, die Zufälligkeit eingebaut haben, sollten wir außerdem den random_state setzen. So stellen wir sicher, dass unsere Ergebnisse reproduzierbar sind.

Normalerweise können wir die GridSearchCV()-Methode von sklearn verwenden, um Hyperparameter zu durchsuchen. Bei einer finanziellen Zeitreihe möchten wir jedoch wegen möglicher Datenvermischung kein Cross-Validation durchführen. Wir wollen unsere Modelle auf den ältesten Daten trainieren und auf den neuesten Daten evaluieren. Deshalb verwenden wir sklearns ParameterGrid, um Kombinationen von Hyperparametern zum Durchsuchen zu erzeugen.

Diese Übung ist Teil des Kurses

<Kurs>Maschinelles Lernen für Finanzen in Python</Kurs>
Kurs ansehen

Übungsanweisungen

  • Setze den Hyperparameter n_estimators im Dictionary grid auf eine Liste mit einem Wert (200).
  • Setze den Hyperparameter max_features im Dictionary grid auf eine Liste mit 4 und 8.
  • Fitte das Random-Forest-Regressionsmodell (rfr, bereits für dich erstellt) für jede Hyperparameter-Kombination g in der Schleife auf train_features und train_targets.
  • Berechne R\(^2\), indem du rfr.score() auf test_features anwendest, und hänge das Ergebnis an die Liste test_scores an.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

from sklearn.model_selection import ParameterGrid

# Create a dictionary of hyperparameters to search
grid = {____, 'max_depth': [3], 'max_features': ____, 'random_state': [42]}
test_scores = []

# Loop through the parameter grid, set the hyperparameters, and save the scores
for g in ParameterGrid(grid):
    rfr.set_params(**g)  # ** is "unpacking" the dictionary
    rfr.fit(____, ____)
    test_scores.append(rfr.score(____, ____))

# Find best hyperparameters from the test score and print
best_idx = np.argmax(test_scores)
print(test_scores[best_idx], ParameterGrid(grid)[best_idx])
Code bearbeiten und ausführen