ÎncepețiÎncepe gratuit

Ajustează hiperparametrii pădurii aleatoare

Ca pentru orice model, vrem să optimizăm performanța prin ajustarea hiperparametrilor. Pădurile aleatoare au mulți hiperparametri, dar cel mai important este adesea numărul de caracteristici eșantionate la fiecare diviziune – max_features în RandomForestRegressor din biblioteca sklearn. Pentru modelele precum pădurile aleatoare, care au aleatorietate încorporată, vrem să setăm și random_state, astfel încât rezultatele să fie reproductibile.

De obicei, putem folosi metoda GridSearchCV() din sklearn pentru a căuta hiperparametrii optimi, însă în cazul unei serii de timp financiare nu dorim validare încrucișată, deoarece datele s-ar amesteca. Vrem să antrenăm modelele pe datele mai vechi și să le evaluăm pe cele mai recente. Prin urmare, vom folosi ParameterGrid din sklearn pentru a genera combinații de hiperparametri pe care să le explorăm.

Acest exercițiu face parte din cursul

Machine Learning pentru finanțe în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Setează hiperparametrul n_estimators ca o listă cu o singură valoare (200) în dicționarul grid.
  • Setează hiperparametrul max_features ca o listă care conține valorile 4 și 8 în dicționarul grid.
  • Antrenează modelul de regresie cu pădure aleatoare (rfr, deja creat pentru tine) pe train_features și train_targets pentru fiecare combinație de hiperparametri g din buclă.
  • Calculează R\(^2\) folosind rfr.score() pe test_features și adaugă rezultatul în lista test_scores.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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])
Editează și rulează codul