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
Instruções do exercício
- Especifique as grades para os possíveis valores de
max_depthesubsample. Paramax_depth: 3, 5 e 7. Parasubsample: 0.8, 0.9 e 1.0. - Aplique a função
product()do pacoteitertoolsà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
paramsdo 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)