Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Zdefiniuj siatki możliwych wartości dla max_depth i subsample. Dla max_depth: 3, 5 i 7. Dla subsample: 0,8, 0,9 i 1,0.
  • Zastosuj funkcję product() z pakietu itertools do 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 params modelu.

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)
Edytuj i uruchom kod