Začněte nyníZačněte zdarma

Ladění hyperparametrů náhodného lesa

Stejně jako u jiných modelů chceme optimalizovat výkon pomocí ladění hyperparametrů. Náhodné lesy mají mnoho hyperparametrů, ale nejdůležitější bývá počet příznaků, které vybereme při každém rozdělení – v RandomForestRegressor z knihovny sklearn je to parametr max_features. U modelů, jako jsou náhodné lesy, které mají zabudovanou náhodnost, chceme také nastavit random_state, aby byly naše výsledky reprodukovatelné.

Obvykle bychom mohli k prohledávání hyperparametrů použít metodu GridSearchCV() ze sklearn, ale v případě finančních časových řad nechceme provádět křížovou validaci, protože by docházelo k míchání dat. Modely chceme trénovat na starších datech a vyhodnocovat na novějších. Proto použijeme ParameterGrid ze sklearn, které nám vytvoří kombinace hyperparametrů k prohledání.

Toto cvičení je součástí kurzu

Machine Learning for Finance in Python

Zobrazit kurz

Pokyny k cvičení

  • Nastav hyperparametr n_estimators jako seznam s jednou hodnotou (200) ve slovníku grid.
  • Nastav hyperparametr max_features jako seznam obsahující hodnoty 4 a 8 ve slovníku grid.
  • Natrénuj model regresoru náhodného lesa (rfr, který je již připraven) na train_features a train_targets s každou kombinací hyperparametrů g v cyklu.
  • Vypočítej R\(^2\) pomocí rfr.score() na test_features a výsledek přidej do seznamu test_scores.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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])
Upravit a spustit kód