简单三步实现Python脚本超参数调优(附代码)

2020 年 5 月 9 日 THU数据派

作者: Jakub Czakon , Neptune.ai
翻译: 陈之炎

本文约1500字,建议阅读5分钟。

Python机器学习模型建立起来之后,如何对它的性能进行优化?按照本指南中的三个步骤可以对任意优化库设置自动调优。



在编写完成一个Python脚本之后,便可以用它训练和评估机器学习模型了,现在,问题来了,是否能对它自动调整超参数以提高其性能呢?

自有办法!

在本文中,将展示如何将脚本转换为可以用任何超参数优化库优化的目标函数。


只需要三个步骤,便可实现模型的参数调整。

准备好了?

那就开始吧!

假设main.py 脚本如下所示:


第1步:从代码中解耦出搜索参数


提取想要调整的参数,将它们放在脚本顶部的字典中,这样做之后,便可以有效地将搜索参数与代码的其余部分解耦。



第2步:将训练和评估打包为一个函数


现在,可以将整个训练和评估逻辑放在 train_evaluate函数的内部。此函数以参数为输入,输出验证分数。


第3步:运行超参数调整脚本


快要实现了。


现在,利用train_evaluate函数作为选定的黑盒优化库的目标。


本例采用Scikit Optimize实现优化,我在另一篇文章中,对此作了详细描述,同时,你也可以使用其它超参数优化库。

Scikit Optimize

https://neptune.ai/blog/scikit-optimize


总之:

  • 定义搜索空间,

  • 创建目标函数以对它最小化,

  • 通过forest_minimize函数运行优化。

 
在这个例子中,我随机选定了10个参数集,尝试了100种不同的配置下的调优。


这就是全部过程。

result对象包含有关最佳分数和对应参数的信息。

注:如果想在训练结束后进行可视化,并保存诊断图表,那么可以向Neptune中添加一个回调函数和一个记录每次超参数搜索的函数。只需调用库中 helper function from neptune-contrib。


helper function from neptune-contrib

https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2&action=edit&isNew=1&type=10&token=832229466&lang=zh_CN#NeptuneMonitor



现在,运行参数扫描时,可以看到以下内容:


查看代码、图表和结果中的skopt hyperparameter sweep experiment。

skopt hyperparameter sweep experiment

https://ui.neptune.ai/jakub-czakon/blog-hpo/e/BLOG-369/charts


结语

 
在本文中,我们学习了如何通过3个步骤对 Python脚本的超参数进行优化。

希望有了这些知识,你能更便捷地建立更优的机器学习模型。
 

相关文献:

超参数优化实战

如何自动实现超参数优化

用Google Colab的Hyperas实现 Keras超参数调优


原文标题:

How to Do Hyperparameter Tuning on Any Python Script in 3 Easy Steps

原文链接:

https://www.kdnuggets.com/2020/04/hyperparameter-tuning-python.html




您想与我们保持交流探讨、持续获得数据科学领域相关动态,包括大数据技术类、行业前沿应用、讲座论坛活动信息、各种活动福利等内容,敬请扫码加入数据派THU粉丝交流群,红数点恭候各位。





译者简介




陈之炎,北京交通大学通信与控制工程专业毕业,获得工学硕士学位,历任长城计算机软件与系统公司工程师,大唐微电子公司工程师,现任北京吾译超群科技有限公司技术支持。目前从事智能化翻译教学系统的运营和维护,在人工智能深度学习和自然语言处理(NLP)方面积累有一定的经验。业余时间喜爱翻译创作,翻译作品主要有:IEC-ISO 7816、伊拉克石油工程项目、新财税主义宣言等等,其中中译英作品“新财税主义宣言”在GLOBAL TIMES正式发表。能够利用业余时间加入到THU 数据派平台的翻译志愿者小组,希望能和大家一起交流分享,共同进步。

——END——


登录查看更多
0

相关内容

在贝叶斯统计中,超参数是先验分布的参数; 该术语用于将它们与所分析的基础系统的模型参数区分开。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
专知会员服务
171+阅读 · 2020年6月4日
【干货】用BRET进行多标签文本分类(附代码)
专知会员服务
84+阅读 · 2019年12月27日
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
介绍高维超参数调整 - 优化ML模型的最佳实践
AI研习社
7+阅读 · 2019年4月17日
用Python实现流行机器学习算法
Python程序员
20+阅读 · 2018年12月31日
卷积神经网络概述及Python实现
云栖社区
4+阅读 · 2018年9月1日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
免费|机器学习算法Python实现
全球人工智能
5+阅读 · 2018年1月2日
Talking-Heads Attention
Arxiv
15+阅读 · 2020年3月5日
Arxiv
7+阅读 · 2020年3月1日
Arxiv
3+阅读 · 2019年3月1日
Arxiv
8+阅读 · 2018年1月25日
VIP会员
相关资讯
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
介绍高维超参数调整 - 优化ML模型的最佳实践
AI研习社
7+阅读 · 2019年4月17日
用Python实现流行机器学习算法
Python程序员
20+阅读 · 2018年12月31日
卷积神经网络概述及Python实现
云栖社区
4+阅读 · 2018年9月1日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
免费|机器学习算法Python实现
全球人工智能
5+阅读 · 2018年1月2日
Top
微信扫码咨询专知VIP会员