Kom igångKom igång gratis

Tvådimensionell grid-sökning

Nackdelen med att justera varje hyperparameter separat är att det kan finnas beroenden mellan olika hyperparametrar. Ett bättre tillvägagångssätt är att testa alla möjliga kombinationer av hyperparametrar. Sökutrymmet växer dock snabbt – har du till exempel 2 parametrar med 10 möjliga värden var, ger det 100 experimentkörningar.

Ditt mål är att hitta den bästa kombinationen av max_depth och subsample för Gradient Boosting-modellen. subsample är andelen observationer som används för att träna de enskilda beslutsträden.

Du får tillgång till funktionen get_cv_score(), som tar träningsdatamängden och en ordlista med modellparametrar som argument och returnerar det sammanlagda RMSE-valideringsresultatet över en 3-faldig korsvalidering.

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

Vinna en Kaggle-tävling i Python

Visa kurs

Övningsinstruktioner

  • Ange rutnäten för möjliga värden för max_depth och subsample. För max_depth: 3, 5 och 7. För subsample: 0,8, 0,9 och 1,0.
  • Tillämpa funktionen product() från paketet itertools på hyperparameterrutnäten. Den returnerar alla möjliga kombinationer av de två rutnäten.
  • Skicka varje kandidatpar av hyperparametrar till modellens ordlista params.

Interaktiv övning med praktiskt arbete

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

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