Aan de slagBegin gratis

2D grid search

Het nadeel van het afzonderlijk afstemmen van elke hyperparameter is dat er een afhankelijkheid kan bestaan tussen verschillende hyperparameters. Een betere aanpak is om alle mogelijke hyperparametercombinaties te proberen. Maar in zulke gevallen groeit de zoekruimte van de grid search snel. Als we bijvoorbeeld 2 parameters met elk 10 mogelijke waarden hebben, levert dat 100 experimenten op.

Jouw doel is om het beste hyperparameterkoppel van max_depth en subsample voor het Gradient Boosting-model te vinden. subsample is het deel van de observaties dat wordt gebruikt om de individuele bomen te trainen.

Je krijgt een functie get_cv_score() die de trainingsgegevens en een dictionary met modelparameters als argumenten neemt en de totale validatie-RMSE-score retourneert over 3-voudige cross-validatie.

Deze oefening maakt deel uit van de cursus

Een Kaggle-competitie winnen met Python

Bekijk cursus

Oefeninstructies

  • Geef de grids op met mogelijke waarden voor max_depth en subsample. Voor max_depth: 3, 5 en 7. Voor subsample: 0.8, 0.9 en 1.0.
  • Pas de functie product() uit het pakket itertools toe op de hyperparametergrids. Die retourneert alle mogelijke combinaties van deze twee grids.
  • Geef elk kandidaatkoppel van hyperparameters door aan de params-dictionary van het model.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

import itertools

# Hyperparameter grids
max_depth_grid = [____]
subsample_grid = [____]
results = {}

# For each couple in the grid
for max_depth_candidate, subsample_candidate in itertools.____(max_depth_grid, subsample_grid):
    params = {'max_depth': ____,
              'subsample': ____}
    validation_score = get_cv_score(train, params)
    # Save the results for each couple
    results[(max_depth_candidate, subsample_candidate)] = validation_score   
print(results)
Code bewerken en uitvoeren