ComeçarComece de graça

Busca em grade 2D

A desvantagem de ajustar cada hiperparâmetro de forma independente é a possível dependência entre eles. A melhor abordagem é testar todas as combinações de hiperparâmetros. Porém, nesses casos, o espaço da busca em grade cresce rapidamente. Por exemplo, se temos 2 parâmetros com 10 valores possíveis, isso resulta em 100 execuções de experimento.

Seu objetivo é encontrar o melhor par de hiperparâmetros max_depth e subsample para o modelo de Gradient Boosting. subsample é a fração de observações usada para ajustar as árvores individuais.

Você recebe a função get_cv_score(), que recebe o conjunto de dados de treino e um dicionário com os parâmetros do modelo como argumentos e retorna o RMSE de validação geral em uma validação cruzada de 3 folds.

Este exercício faz parte do curso

Vencendo uma competição do Kaggle em Python

Ver curso

Instruções do exercício

  • Especifique as grades para os possíveis valores de max_depth e subsample. Para max_depth: 3, 5 e 7. Para subsample: 0.8, 0.9 e 1.0.
  • Aplique a função product() do pacote itertools às grades de hiperparâmetros. Ela retorna todas as combinações possíveis para essas duas grades.
  • Passe cada par candidato de hiperparâmetros para o dicionário params do modelo.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

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 e executar o código