Examinar as avaliações do Hyperopt
Quando você usa o Hyperopt para experimentar várias combinações de hiper parâmetros, é possível analisar os detalhes de cada avaliação. Você pode examinar esses detalhes de duas maneiras:
- Exiba a execução do MLflow para cada avaliação.
- Use a classe Trials para capturar detalhes da execução.
Exibir a execução do MLflow para cada avaliação
No Azure Databricks, as chamadas da função fmin do Hyperopt geram automaticamente execuções de experimento do MLflow que você pode ver no portal do Azure Databricks; fornecendo uma forma fácil de exibir o conjunto completo de hiperparâmetros e métricas para cada avaliação, conforme mostrado aqui:
Usar a classe Trials
O Hyperopt inclui uma classe Trials que registra detalhes de cada avaliação executada durante uma chamada da função fmin. O exemplo de código a seguir mostra como usar a classe Trials.
from hyperopt import Trials
# Create a Trials object to track each run
trial_runs = Trials()
argmin = fmin(
fn=objective,
space=search_space,
algo=algo,
max_evals=100,
trials=trial_runs)
print("Best param values: ", argmin)
# Get details from each trial run
print ("trials:")
for trial in trial_runs.trials:
print ("\n", trial)
A saída completa de detalhes para uma coleção de avaliações é semelhante a este exemplo:
{'state': 2, 'tid': 0, 'spec': None, 'result': {'loss': -0.8571428571428571, 'status': 'ok'}, 'misc': {'tid': 0, 'cmd': ('domain_attachment', 'FMinIter_Domain'), 'workdir': None, 'idxs': {'Iterations': [0], 'Regularization': [0]}, 'vals': {'Iterations': [1], 'Regularization': [0.4965634473237057]}}, 'exp_key': None, 'owner': None, 'version': 0, 'book_time': datetime.datetime(2023, 3, 17, 22, 45, 24, 993000), 'refresh_time': datetime.datetime(2023, 3, 17, 22, 46, 30, 374000)}
{'state': 2, 'tid': 1, 'spec': None, 'result': {'loss': -0.8857142857142857, 'status': 'ok'}, 'misc': {'tid': 1, 'cmd': ('domain_attachment', 'FMinIter_Domain'), 'workdir': None, 'idxs': {'Iterations': [1], 'Regularization': [1]}, 'vals': {'Iterations': [9], 'Regularization': [0.8446551490616772]}}, 'exp_key': None, 'owner': None, 'version': 0, 'book_time': datetime.datetime(2023, 3, 17, 22, 46, 30, 379000), 'refresh_time': datetime.datetime(2023, 3, 17, 22, 47, 34, 155000)}
{'state': 2, 'tid': 2, 'spec': None, 'result': {'loss': -0.9523809523809523, 'status': 'ok'}, 'misc': {'tid': 2, 'cmd': ('domain_attachment', 'FMinIter_Domain'), 'workdir': None, 'idxs': {'Iterations': [2], 'Regularization': [2]}, 'vals': {'Iterations': [9], 'Regularization': [0.3931915704555482]}}, 'exp_key': None, 'owner': None, 'version': 0, 'book_time': datetime.datetime(2023, 3, 17, 22, 47, 34, 160000), 'refresh_time': datetime.datetime(2023, 3, 17, 22, 48, 45, 986000)}
...
Dica
Para obter mais informações sobre os detalhes registrados pela classe Trials, confira a documentação do Hyperopt.