关于Hyperopt的使用可以参考以下几篇文章,本文不做解释:
(4条消息) Hyperopt入门_浅笑古今的博客-CSDN博客_hyperopt
使用 Hyperopt 进行参数调优(译) - 简书 (jianshu.com)
本文主要说明一下返回值的坑!
调LightGBM的时候:
fmin函数↓
搜索空间↓
坑来了!最终返回结果是这样(仅做示例):
{'bagging_fraction': 4, 'feature_fraction': 2, 'max_depth': 2, 'min_child_samples': 84, 'num_leaves': 2, 'reg_alpha': 156.09791414363687, 'reg_lambda': 0.01845081695764928}
问题来了,bagging_fraction为什么会是4?feature_fraction为什么会是2?我的搜索空间里,最小的max_depth是3,返回的字典里为什么会是2?同理,trials(我转成DF保存到本地了)也奇奇怪怪,num_leaves和max_depth会显示0↓
最终我恍然大悟,如果你在搜索空间里设置的是枚举类型(hp.choice),那么返回的是索引而不是真实值!比如上图的'num_leaves': [0]就是我搜索空间里的【10】!bagging_fraction 返回4代表我搜索空间里的【0.9】!
其他类型也要引起注意!
所以这个返回的字典params_best是不能直接去训练后面的LightGBM模型的!
版权归原作者 totobey 所有, 如有侵权,请联系我们删除。