CommencezCommencez gratuitement

Ajuster les hyperparamètres d'une forêt aléatoire

Comme pour tous les modèles, nous voulons optimiser la performance en ajustant les hyperparamètres. Les forêts aléatoires en ont plusieurs, mais celui qui compte souvent le plus est le nombre de caractéristiques échantillonnées à chaque division, soit max_features dans RandomForestRegressor de la bibliothèque sklearn. Pour les modèles comme les forêts aléatoires qui intègrent du hasard, nous voulons aussi fixer random_state, afin que nos résultats soient reproductibles.

Habituellement, nous pouvons utiliser la méthode GridSearchCV() de sklearn pour explorer les hyperparamètres, mais avec une série chronologique financière, nous voulons éviter la validation croisée pour ne pas mélanger les données. Nous voulons entraîner nos modèles sur les données les plus anciennes et évaluer sur les plus récentes. Nous allons donc utiliser ParameterGrid de sklearn pour générer des combinaisons d'hyperparamètres à explorer.

Cette activité fait partie du cours

Machine Learning pour la finance en Python

Voir le cours

Instructions de l’exercice

  • Dans le dictionnaire grid, définissez l'hyperparamètre n_estimators comme une liste ne contenant qu'une valeur (200).
  • Dans le dictionnaire grid, définissez l'hyperparamètre max_features comme une liste contenant 4 et 8.
  • Ajustez le modèle de régression à forêt aléatoire (rfr, déjà créé pour vous) aux train_features et train_targets pour chaque combinaison d'hyperparamètres g dans la boucle.
  • Calculez R\(^2\) en utilisant rfr.score() sur test_features et ajoutez le résultat à la liste test_scores.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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])
Modifier et exécuter le code