2D grid search
Nevýhodou samostatného ladění každého hyperparametru je možná závislost mezi různými hyperparametry. Lepší přístup je vyzkoušet všechny možné kombinace hyperparametrů. V takovém případě ale prostor pro grid search rychle roste. Například při 2 parametrech s 10 možnými hodnotami to dá 100 experimentálních běhů.
Tvým cílem je najít nejlepší kombinaci hyperparametrů max_depth a subsample pro model Gradient Boosting. subsample je podíl pozorování použitých k trénování jednotlivých stromů.
Máš k dispozici funkci get_cv_score(), která přijímá trénovací datovou sadu a slovník parametrů modelu a vrací celkové RMSE skóre na validační sadě při 3-fold cross-validaci.
Toto cvičení je součástí kurzu
Jak vyhrát soutěž na Kaggle v Pythonu
Pokyny k cvičení
- Definuj mřížky možných hodnot pro
max_depthasubsample. Promax_depth: 3, 5 a 7. Prosubsample: 0,8, 0,9 a 1,0. - Na mřížky hyperparametrů použij funkci
product()z balíčkuitertools. Vrátí všechny možné kombinace těchto dvou mřížek. - Každou kandidátní dvojici hyperparametrů předej do slovníku
paramsmodelu.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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)