python超参数优化的具体方法

作者:小妮浅浅 时间:2022-01-04 22:28:31 

1、手动调参,但这种方法依赖于大量的经验,而且比较费时。

许多情况下,工程师依靠试错法手工调整超参数进行优化,有经验的工程师可以在很大程度上判断如何设置超参数,从而提高模型的准确性。

2、网格化寻优,是最基本的超参数优化方法。

利用这种技术,我们只需要为所有超参数的可能性建立一个独立的模型,评估每个模型的性能,选择产生最佳结果的模型和超参数。


from sklearn.datasets import load_iris
from sklearn.svm import SVC
iris = load_iris()
svc = SVR()
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVR
grid = GridSearchCV(
       estimator=SVR(kernel='rbf'),
       param_grid={
           'C': [0.1, 1, 100, 1000],
           'epsilon': [0.0001, 0.0005, 0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10],
           'gamma': [0.0001, 0.001, 0.005, 0.1, 1, 3, 5]
       },
       cv=5, scoring='neg_mean_squared_error', verbose=0, n_jobs=-1)

3、随机寻优,可以更准确地确定某些重要超参数的最佳值。

并非所有的超参数都有同样的重要性,有些超参数的作用更加明显。

知识点扩充:

贝叶斯优化方法

简单地说,贝叶斯优化通过基于过去对目标的评估结果建立一个代理函数(概率模型)找到使得目标函数最小的值。代理函数比目标函数更易于优化,因此下一个待评估的输入值是通过对代理函数应用某种标准(通常为预期提升)来选择的。贝叶斯方法不同于随机搜索或网格搜索,后两者都使用了过去的评估结果来选择接下来待评估的值。它们的思想是:通过根据过去表现良好的值选择下一个输入值来限制评价目标函数的高昂开销。

对于超参数优化来说,其目标函数为使用一组超参数的机器学习模型的验证误差。它的目标是找出在验证集上产生最小误差的超参数,并希望将这些结果泛化到测试集上去。对目标函数评估的开销是巨大的,因为它需要训练带有一组特定超参数的机器学习模型。理想情况下,我们希望找到这样一方法,它既能探索搜索空间,又能限制耗时的超参数评估。贝叶斯超参数调优使用一个不断更新的概率模型,通过从过去的结果中进行推理,使搜索过程「专注」于有可能达到最优的超参数。

Python 环境下有一些贝叶斯优化程序库,它们目标函数的代理算法有所区别。在本文中,我们将使用「Hyperopt」库,它使用树形 Parzen 评估器(TPE,https://papers.nips.cc/paper/4443-algorithms-for-hyper-parameter-optimization.pdf)作为搜索算法,其他的 Python 库还包含「Spearmint」(高斯过程代理)和「SMAC」(随即森林回归)。目前在这个领域有大量有趣的研究,所以如果你对某一个库不是很满意,你可以试试其他的选项!针对某个问题的通用结构(本文将使用的结构)可以在各个库间进行转换,其句法差异非常小。

来源:https://www.py.cn/jishu/jichu/32602.html

标签:python,超参数优化
0
投稿

猜你喜欢

  • Swin Transformer模块集成到YOLOv5目标检测算法中实现

    2021-09-10 21:09:49
  • python编程学习使用管道Pipe编写优化代码

    2023-08-20 04:08:45
  • Python 队列Queue和PriorityQueue解析

    2023-07-15 20:31:11
  • PHP异步调用socket实现代码

    2023-06-26 09:23:09
  • python实现二分查找算法

    2023-04-04 12:34:40
  • python 中关于pycharm选择运行环境的问题

    2021-09-01 21:56:10
  • Python import与from import使用及区别介绍

    2022-05-17 12:09:19
  • ASP连接MySQL数据库代码示例

    2010-03-14 11:24:00
  • 实例讲解Python脚本成为Windows中运行的exe文件

    2023-07-15 02:14:31
  • php实现文件下载更能介绍

    2023-08-18 14:30:21
  • vitrualBox+ubuntu16.04安装python3.6最新教程及详细步骤

    2021-06-26 05:34:38
  • ASP检测服务器相关的一些代码

    2008-01-25 19:20:00
  • 网页的栅格设计思考

    2007-11-09 10:33:00
  • python数据类型可变不可变知识点总结

    2021-10-29 13:26:11
  • 微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解

    2023-11-22 19:29:44
  • 基于python3监控服务器状态进行邮件报警

    2022-05-05 05:25:39
  • Pytorch Tensor基本数学运算详解

    2022-12-09 03:26:50
  • IIS+PHP添加对webp格式图像的支持配置方法

    2023-05-28 11:20:11
  • Python实现Matplotlib,Seaborn动态数据图的示例代码

    2023-02-03 23:47:22
  • python 产生token及token验证的方法

    2023-05-19 17:25:13
  • asp之家 网络编程 m.aspxhome.com