Kom igångKom igång gratis

Finjustera hyperparametrar för random forest

Precis som med alla modeller vill vi optimera prestandan genom att finjustera hyperparametrar. Random forests har många hyperparametrar, men den viktigaste är ofta antalet särdrag vi samplar vid varje uppdelning – det vill säga max_features i RandomForestRegressor från sklearn-biblioteket. För modeller som random forests, där slumpmässighet är inbyggd, vill vi även ange random_state så att resultaten blir reproducerbara.

Vanligtvis kan vi använda sklearn:s GridSearchCV() för att söka bland hyperparametrar, men med en finansiell tidsserie vill vi undvika korsvalidering eftersom det kan blanda data. Vi vill träna modellerna på de äldsta data och utvärdera på de nyaste. Därför använder vi sklearn:s ParameterGrid för att skapa kombinationer av hyperparametrar att söka igenom.

Den här övningen är en del av kursen

Maskininlärning för finans i Python

Visa kurs

Övningsinstruktioner

  • Sätt hyperparametern n_estimators till en lista med ett värde (200) i grid-ordlistan.
  • Sätt hyperparametern max_features till en lista med värdena 4 och 8 i grid-ordlistan.
  • Anpassa random forest-regressionsmodellen (rfr, redan skapad åt dig) till train_features och train_targets med varje hyperparameterkombination, g, i loopen.
  • Beräkna R\(^2\) med hjälp av rfr.score()test_features och lägg till resultatet i listan test_scores.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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])
Redigera och kör kod