Przeszukiwanie siatki 2D
Wadą strojenia każdego hiperparametru z osobna jest potencjalna zależność między różnymi hiperparametrami. Lepszym podejściem jest wypróbowanie wszystkich możliwych kombinacji hiperparametrów. W takich przypadkach przestrzeń przeszukiwania siatki szybko jednak rośnie. Na przykład, jeśli mamy 2 parametry z 10 możliwymi wartościami, otrzymujemy 100 eksperymentów do uruchomienia.
Twoim celem jest znalezienie najlepszej pary hiperparametrów max_depth i subsample dla modelu Gradient Boosting. subsample to ułamek obserwacji używanych do dopasowania poszczególnych drzew.
Do dyspozycji masz funkcję get_cv_score(), która przyjmuje zbiór treningowy oraz słownik parametrów modelu jako argumenty i zwraca ogólny wynik RMSE walidacji po 3-krotnej walidacji krzyżowej.
To ćwiczenie jest częścią kursu
Zwycięstwo w konkursie Kaggle w Pythonie
Instrukcje do ćwiczenia
- Zdefiniuj siatki możliwych wartości dla
max_depthisubsample. Dlamax_depth: 3, 5 i 7. Dlasubsample: 0,8, 0,9 i 1,0. - Zastosuj funkcję
product()z pakietuitertoolsdo siatek hiperparametrów. Zwraca ona wszystkie możliwe kombinacje dla tych dwóch siatek. - Przekaż każdą parę kandydatów hiperparametrów do słownika
paramsmodelu.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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)