python训练模型调参神器hyperopt

2018 年 5 月 13 日 数据挖掘入门与实战

 向AI转型的程序员都关注了这个号👇👇👇


大数据挖掘DT数据分析  公众号: datadw


一、安装

pip install hyperopt

二、说明

Hyperopt提供了一个优化接口,这个接口接受一个评估函数和参数空间,能计算出参数空间内的一个点的损失函数值。用户还要指定空间内参数的分布情况。 
Hyheropt四个重要的因素:指定需要最小化的函数,搜索的空间,采样的数据集(trails database)(可选),搜索的算法(可选)。 


首先,定义一个目标函数,接受一个变量,计算后返回一个函数的损失值,比如要最小化函数q(x,y) = x**2 + y**2


指定搜索的算法,算法也就是hyperopt的fmin函数的algo参数的取值。当前支持的算法由随机搜索(对应是hyperopt.rand.suggest),模拟退火(对应是hyperopt.anneal.suggest),TPE算法。


关于参数空间的设置,比如优化函数q,输入fmin(q,space=hp.uniform(‘a’,0,1)).hp.uniform函数的第一个参数是标签,每个超参数在参数空间内必须具有独一无二的标签。hp.uniform指定了参数的分布。其他的参数分布比如 


hp.choice返回一个选项,选项可以是list或者tuple.options可以是嵌套的表达式,用于组成条件参数。 


hp.pchoice(label,p_options)以一定的概率返回一个p_options的一个选项。这个选项使得函数在搜索过程中对每个选项的可能性不均匀。 


hp.uniform(label,low,high)参数在low和high之间均匀分布。 


hp.quniform(label,low,high,q),参数的取值是

round(uniform(low,high)/q)*q,适用于那些离散的取值。 


hp.loguniform(label,low,high)绘制exp(uniform(low,high)),变量的取值范围是[exp(low),exp(high)] 


hp.randint(label,upper) 返回一个在[0,upper)前闭后开的区间内的随机整数。 

 

搜索空间可以含有list和dictionary.

 

from hyperopt import hp list_space = [ hp.uniform(’a’, 0, 1), hp.loguniform(’b’, 0, 1)] tuple_space = ( hp.uniform(’a’, 0, 1), hp.loguniform(’b’, 0, 1)) dict_space = { ’a’: hp.uniform(’a’, 0, 1), ’b’: hp.loguniform(’b’, 0, 1)}




三、简单例子

from hyperopt import  hp,fmin, rand, tpe, space_eval


def q (args) :

    x, y = args

    return x**2-2*x+1 + y**2


space = [hp.randint('x', 5), hp.randint('y', 5)]


best = fmin(q,space,algo=rand.suggest,max_evals=10)


print(best)


输出:

{'x': 2, 'y': 0}


四、xgboost举例

xgboost具有很多的参数,把xgboost的代码写成一个函数,然后传入fmin中进行参数优化,将交叉验证的auc作为优化目标。auc越大越好,由于fmin是求最小值,因此求-auc的最小值。所用的数据集是202列的数据集,第一列样本id,最后一列是label,中间200列是属性。


详细参考:http://blog.csdn.net/qq_34139222/article/details/60322995


人工智能大数据与深度学习

搜索添加微信公众号:datayx

长按图片,识别二维码,点关注



大数据挖掘DT数据分析

搜索添加微信公众号:datadw


教你机器学习,教你数据挖掘

长按图片,识别二维码,点关注


登录查看更多
2

相关内容

【Amazon】使用预先训练的Transformer模型进行数据增强
专知会员服务
56+阅读 · 2020年3月6日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
【新书】Python数据科学食谱(Python Data Science Cookbook)
专知会员服务
114+阅读 · 2020年1月1日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
151+阅读 · 2019年10月12日
使用 Keras Tuner 调节超参数
TensorFlow
15+阅读 · 2020年2月6日
机器学习领域必知必会的12种概率分布(附Python代码实现)
算法与数学之美
21+阅读 · 2019年10月18日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
【干货】基于Keras的注意力机制实战
专知
59+阅读 · 2018年5月4日
比xgboost强大的LightGBM:调参指南(带贝叶斯优化代码)
数据挖掘入门与实战
23+阅读 · 2018年4月9日
Arxiv
3+阅读 · 2018年10月18日
Angular-Based Word Meta-Embedding Learning
Arxiv
3+阅读 · 2018年8月13日
Arxiv
3+阅读 · 2018年3月2日
VIP会员
相关VIP内容
相关资讯
使用 Keras Tuner 调节超参数
TensorFlow
15+阅读 · 2020年2月6日
机器学习领域必知必会的12种概率分布(附Python代码实现)
算法与数学之美
21+阅读 · 2019年10月18日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
【干货】基于Keras的注意力机制实战
专知
59+阅读 · 2018年5月4日
比xgboost强大的LightGBM:调参指南(带贝叶斯优化代码)
数据挖掘入门与实战
23+阅读 · 2018年4月9日
Top
微信扫码咨询专知VIP会员