IniziaInizia gratis

Grid search 2D

Lo svantaggio di ottimizzare ogni iperparametro in modo indipendente è la possibile dipendenza tra iperparametri diversi. Un approccio migliore è provare tutte le combinazioni possibili di iperparametri. Tuttavia, in questi casi, lo spazio di ricerca della grid cresce rapidamente. Per esempio, se abbiamo 2 parametri con 10 valori possibili ciascuno, otterremo 100 esecuzioni di esperimenti.

Il tuo obiettivo è trovare la migliore coppia di iperparametri max_depth e subsample per il modello di Gradient Boosting. subsample è la frazione di osservazioni da utilizzare per addestrare i singoli alberi.

Ti viene fornita una funzione get_cv_score(), che prende come argomenti il dataset di train e un dizionario dei parametri del modello e restituisce l'RMSE di validazione complessivo su una cross-validation a 3 fold.

Questo esercizio fa parte del corso

Vincere una competizione Kaggle con Python

Visualizza il corso

Istruzioni dell'esercizio

  • Specifica le griglie dei possibili valori di max_depth e subsample. Per max_depth: 3, 5 e 7. Per subsample: 0.8, 0.9 e 1.0.
  • Applica la funzione product() dal package itertools alle griglie di iperparametri. Restituisce tutte le combinazioni possibili per queste due griglie.
  • Passa ogni coppia candidata di iperparametri al dizionario params del modello.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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)
Modifica ed esegui il codice