简单三步实现Python脚本超参数调优,构建最优机器学习模型!

百家 作者:大数据文摘 2020-05-09 17:57:14

大数据文摘授权转载自数据派THU

作者:Jakub Czakon, Neptune.ai

翻译:陈之炎

在编写完成一个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


我的公司是否需要独立的数据团队?
我该何时、怎么样建设自己的数据团队?
数据团队的价值如何衡量?
疫情之下,数据团队又受到哪些影响?

一起透析数据团队建设全景!
扫码填写问卷▼




实习/全职编辑记者招聘ing

加入我们,亲身体验一家专业科技媒体采写的每个细节,在最有前景的行业,和一群遍布全球最优秀的人一起成长。坐标北京·清华东门,在大数据文摘主页对话页回复“招聘”了解详情。简历请直接发送至zz@bigdatadigest.cn




点「在看」的人都变好看了哦!

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接