Căutare în grilă 2D
Dezavantajul ajustării fiecărui hiperparametru independent este o potențială dependență între diferiți hiperparametri. O abordare mai bună este să încerci toate combinațiile posibile de hiperparametri. Totuși, în astfel de cazuri, spațiul de căutare în grilă se extinde rapid. De exemplu, dacă avem 2 parametri cu câte 10 valori posibile, rezultă 100 de rulări de experiment.
Scopul tău este să găsești cea mai bună pereche de hiperparametri max_depth și subsample pentru modelul Gradient Boosting. subsample reprezintă fracția de observații utilizată pentru antrenarea arborilor individuali.
Îți este pusă la dispoziție funcția get_cv_score(), care primește setul de antrenament și un dicționar de parametri ai modelului ca argumente și returnează scorul global RMSE de validare pe validare încrucișată cu 3 iterații.
Acest exercițiu face parte din cursul
Câștigarea unei competiții Kaggle în Python
Instrucțiuni pentru exercițiu
- Specifică grilele pentru valorile posibile ale
max_depthșisubsample. Pentrumax_depth: 3, 5 și 7. Pentrusubsample: 0,8, 0,9 și 1,0. - Aplică funcția
product()din pachetulitertoolsgrilelor de hiperparametri. Aceasta returnează toate combinațiile posibile pentru cele două grile. - Transmite fiecare pereche de candidați de hiperparametri în dicționarul
paramsal modelului.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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)