使用 Hyperopt 的贝叶斯超参数调优
在本例中,您将使用 Hyperopt 包(已为您导入为 hp)设置并运行一次贝叶斯超参数优化。您将先设置搜索空间(类似于网格搜索时设置网格),再定义目标函数。最后,运行优化器共 20 次迭代。
您需要按以下取值设置搜索空间:
max_depth使用离散均匀分布 quniform(范围 2 到 10,步长为 2)learning_rate使用连续均匀分布 uniform(0.001 到 0.9)
请注意,为了完成本练习,我们缩小了数据样本规模,以及 hyperopt 与 GBM 的迭代次数。 如果您在本机上自行尝试该方法,建议增大搜索空间、增加试验次数与交叉验证折数,并使用更大的数据集,以更充分地观察其效果。
本练习是课程的一部分
Python 中的超参数调优
练习说明
- 按上述搜索空间设置创建
space字典。 - 使用梯度提升分类器定义目标函数。
- 运行算法进行 20 次评估(直接使用幻灯片中默认建议的算法)。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# 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(____)