Ajuste Bayesiano de hiperparâmetros com Hyperopt
Neste exemplo, você vai configurar e executar um processo Bayesiano de otimização de hiperparâmetros usando o pacote Hyperopt (já importado como hp). Você vai definir o domínio (semelhante a montar a grade de uma busca em grade), em seguida criar a função objetivo. Por fim, vai executar o otimizador por 20 iterações.
Você precisará configurar o domínio usando os valores:
max_depthcom distribuição quniform (entre 2 e 10, incrementando de 2 em 2)learning_ratecom distribuição uniform (de 0.001 a 0.9)
Observe que, para este exercício, reduzimos o tamanho da amostra de dados e as iterações do hyperopt e do GBM. Se for testar este método por conta própria na sua máquina, experimente um espaço de busca maior, mais execuções (trials), mais folds de validação cruzada e um conjunto de dados maior para ver o método em ação!
Este exercício faz parte do curso
Ajuste de Hiperparâmetros em Python
Instruções do exercício
- Configure um dicionário
spaceusando o domínio descrito acima. - Defina a função objetivo usando um classificador de gradient boosting.
- Execute o algoritmo por 20 avaliações (use apenas o algoritmo sugerido por padrão nos slides).
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Set up space dictionary with specified hyperparameters
space = {'max_depth': hp.____('max_depth', ____, ____, ____),'learning_rate': hp.____('learning_rate', ____,____)}
# Set up objective function
def objective(params):
params = {'max_depth': int(params[____]),'learning_rate': params[____]}
gbm_clf = ____(n_estimators=100, **params)
best_score = cross_val_score(gbm_clf, X_train, y_train, scoring='accuracy', cv=2, n_jobs=4).mean()
loss = 1 - ____
return ____
# Run the algorithm
best = fmin(fn=____,space=space, max_evals=____, rstate=np.random.default_rng(42), algo=tpe.suggest)
print(____)