ComenzarEmpieza gratis

Búsqueda en malla 2D

El inconveniente de ajustar cada hiperparámetro por separado es que puede haber dependencia entre ellos. La mejor opción es probar todas las combinaciones posibles de hiperparámetros. Sin embargo, en estos casos, el espacio de búsqueda en malla crece rápidamente. Por ejemplo, si tenemos 2 parámetros con 10 valores posibles cada uno, esto dará lugar a 100 ejecuciones de experimentos.

Tu objetivo es encontrar la mejor pareja de hiperparámetros max_depth y subsample para el modelo de Gradient Boosting. subsample es la fracción de observaciones que se usará para ajustar los árboles individuales.

Se te proporciona la función get_cv_score(), que recibe el conjunto de entrenamiento y un diccionario con los parámetros del modelo como argumentos y devuelve la puntuación global de RMSE de validación mediante validación cruzada de 3 particiones.

Este ejercicio forma parte del curso

Cómo ganar una competición de Kaggle con Python

Ver curso

Instrucciones del ejercicio

  • Especifica las rejillas de posibles valores para max_depth y subsample. Para max_depth: 3, 5 y 7. Para subsample: 0.8, 0.9 y 1.0.
  • Aplica la función product() del paquete itertools a las rejillas de hiperparámetros. Devuelve todas las combinaciones posibles para estas dos rejillas.
  • Pasa cada pareja candidata de hiperparámetros al diccionario params del modelo.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

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)
Editar y ejecutar código