0

我使用 Hyperopt 在 Python 3.7 中选择 XGBoost 模型的参数。

作为目标,我使用返回多个值的函数,包括损失:

def objective(params, n_folds = nfold):
...
    return {'loss': loss, 'params': params, 'iteration': ITERATION,
            'estimators': n_estimators, 
            'train_time': run_time, 'status': STATUS_OK}

在我的情况下,'loss' - 不是交叉验证中的包容性参数(例如'auc'),但它是自制的指标。我希望,这将通过迭代减少,但它会继续变化,就像随机方法一样。

此外,当我看到 fmin 计算状态时(示例 - 下面)。我看到完全不同的指标正在下降。

XGB CV model report                                                                                                    
    Best test-auc-mean 98.51% (std: 0.21%)
 83%|███████████████████████████████████████▏       | 25/30 [08:26<07:23, 88.64s/trial, best loss: 0.22099999999999997] 

我怎么知道,Hyperopt 降低的实际指标是什么?

4

1 回答 1

0

下面的最佳损失 - 是我的指标。我很困惑,因为它显示的不是当前的度量值,而是最好的。此外,该算法正在尝试改进它。然而,在 30 次迭代之后,可能会看到指标的改进,而是数百次迭代。

XGB CV 模型报告
Best test-auc-mean 98.51% (std: 0.21%) 83%|█████████████████████████████ ██████████▏ | 25/30 [08:26<07:23, 88.64s/试验,最佳损失:0.22099999999999997]

于 2020-06-23T06:15:18.593 回答