python超参数优化的具体方法

 更新时间:2021年08月15日 11:05:21   作者:小妮浅浅  
在本篇文章里小编给大家整理了一篇关于python超参数优化的具体方法,有需要的朋友们可以学习下。

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」(随即森林回归)。目前在这个领域有大量有趣的研究,所以如果你对某一个库不是很满意,你可以试试其他的选项!针对某个问题的通用结构(本文将使用的结构)可以在各个库间进行转换,其句法差异非常小。

到此这篇关于python超参数优化的具体方法的文章就介绍到这了,更多相关python超参数如何优化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Django 设置多环境配置文件载入问题

    Django 设置多环境配置文件载入问题

    这篇文章主要介绍了Django 设置多环境配置文件载入问题,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • python检测主机的连通性并记录到文件的实例

    python检测主机的连通性并记录到文件的实例

    今天小编就为大家分享一篇python检测主机的连通性并记录到文件的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • django中使用POST方法获取POST数据

    django中使用POST方法获取POST数据

    这篇文章主要介绍了django中使用POST方法获取POST数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 全面剖析Python的Django框架中的项目部署技巧

    全面剖析Python的Django框架中的项目部署技巧

    这篇文章主要全面剖析了Python的Django框架的部署技巧,包括Fabric等自动化部署和建立单元测试等方面,强烈推荐!需要的朋友可以参考下
    2015-04-04
  • python实现单链表中删除倒数第K个节点的方法

    python实现单链表中删除倒数第K个节点的方法

    这篇文章主要为大家详细介绍了python实现单链表中删除倒数第K个节点的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • python绘制浅色范围曲线的示例代码

    python绘制浅色范围曲线的示例代码

    这篇文章主要介绍了python绘制浅色范围曲线,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • Python虚拟环境virtualenv是如何使用的

    Python虚拟环境virtualenv是如何使用的

    今天给大家带来的是关于Python虚拟环境的相关知识,文章围绕着Python虚拟环境virtualenv是如何使用的展开,文中有非常详细的解释及代码示例,需要的朋友可以参考下
    2021-06-06
  • python缺失值填充方法示例代码

    python缺失值填充方法示例代码

    常见的数据缺失填充方式分为很多种,比如删除法、均值法、回归法、KNN、MICE、EM等,下面这篇文章主要给大家介绍了关于python缺失值填充方法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • 在Keras中CNN联合LSTM进行分类实例

    在Keras中CNN联合LSTM进行分类实例

    这篇文章主要介绍了在Keras中CNN联合LSTM进行分类实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python使用Flask-SQLAlchemy连接数据库操作示例

    Python使用Flask-SQLAlchemy连接数据库操作示例

    这篇文章主要介绍了Python使用Flask-SQLAlchemy连接数据库操作,简单介绍了flask、Mysql-Python以及Flask-SQLAlchemy的安装方法,并结合实例形式分析了基于Flask-SQLAlchemy的数据库连接相关操作技巧,需要的朋友可以参考下
    2018-08-08

最新评论