ComeçarComece de graça

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_depth com distribuição quniform (entre 2 e 10, incrementando de 2 em 2)
  • learning_rate com 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

Ver curso

Instruções do exercício

  • Configure um dicionário space usando 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(____)
Editar e executar o código