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
Övningsinstruktioner
- Ange rutnäten för möjliga värden för
max_depthochsubsample. Förmax_depth: 3, 5 och 7. Försubsample: 0,8, 0,9 och 1,0. - Tillämpa funktionen
product()från paketetitertoolspå 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)