在2017年的圣诞节前,我翻译了有关HyperOpt的中文文档,这也时填补了空白,以此作为献给所有中国程序员,以及所有其他机器学习相关行业人员的圣诞礼物。圣诞快乐,各位。
Hyperopt官方文档确实比较晦涩难懂,于是我最近补齐了原来挖的坑,Hyperopt的中文教程,同时还包括如何同时使用XGB,lightgbm与Hyperopt.很高兴看到也有其他人写过类似的东西.不过似乎写的都有点问题,最起码都没有Hyperopt与XGB,LGB中的自带交叉验证进行结合的方法,其实这个很简单,有个小技巧.详细请参考以下文章
个人测试,使用xgb或者lgb自带的交叉验证与hyperopt结合,性能要比与sklearn中的交叉验证结合速度快四到五倍(测试较少,具体差异需视情况而定).
扩展阅读:
翻译的文档已经发布于github(官方授权翻译),请在我的项目Hyperopt_CN中的wiki查看相应文档.CSDN,知乎同步更新中.
HyperOpt中文版wiki文档内容包括以下内容:
下面是hyperopt的官网首页,作为对其的简单介绍
在Python中进行分布式异步超参数优化
Font Tian translated this article on 22 December 2017
hyperopt 是一个Python库,可以用来寻找实数,离散值,条件维度等搜索空间的最佳值。
# define an objective function
def objective(args):
case, val = args
if case == 'case 1':
return val
else:
return val ** 2
# define a search space
from hyperopt import hp
space = hp.choice('a',
[
('case 1', 1 + hp.lognormal('c1', 0, 1)),
('case 2', hp.uniform('c2', -10, 10))
])
# minimize the objective over the space
from hyperopt import fmin, tpe
best = fmin(objective, space, algo=tpe.suggest, max_evals=100)
print best
# -> {'a': 1, 'c2': 0.01420615366247227}
print hyperopt.space_eval(space, best)
# -> {'case 2', 0.01420615366247227}
目前两种算法的实现:
Hyperopt 设计伊始,是包括基于高斯过程与回归树的贝叶斯优化算法的,但是现在这些都还没有被实现.
同时,Hyperopt所有的算法都可以通过MongoDB进行串行或者并行计算.
用户安装
pip install hyperopt
开发版安装
git clone https://github.com/hyperopt/hyperopt.git
(cd hyperopt && python setup.py develop)
(cd hyperopt && nosetests)
更多信息,请参见安装说明。
文档现在托管在wiki上,但这里有一些相关页面的链接:
在wiki中打开Hyperot