作者|GUEST BLOG 编译|VK 来源|Analytics Vidhya
介绍
在机器学习项目中,你需要遵循一系列步骤,直到你达到你的目标,你必须执行的步骤之一就是对你选择的模型进行超参数优化。此任务总是在模型选择过程之后完成(选择性能优于其他模型的最佳模型)。
什么是超参数优化?
在定义超参数优化之前,你需要了解什么是超参数。简言之,超参数是用来控制学习过程的不同参数值,对机器学习模型的性能有显著影响。
随机森林算法中超参数的例子是估计器的数目(n_estimators)、最大深度(max_depth)和准则。这些参数是可调的,可以直接影响训练模型的好坏。
超参数优化就是寻找合适的超参数值组合,以便在合理的时间内实现对数据的最大性能。它对机器学习算法的预测精度起着至关重要的作用。因此,超参数优化被认为是建立机器学习模型中最困难的部分。
大多数机器学习算法都带有默认的超参数值。默认值在不同类型的机器学习项目中并不总是表现良好,这就是为什么你需要优化它们,以获得最佳性能的正确组合。
好的超参数可以使一个算法发光。
有一些优化超参数的常用策略:
(a) 网格搜索
这是一种广泛使用的传统方法,它通过执行超参数调整来确定给定模型的最佳值。网格搜索通过在模型中尝试所有可能的参数组合来工作,这意味着执行整个搜索将花费大量时间,这可能会导致计算成本非常高。
注意:你可以在这里学习如何实现网格搜索:https://github.com/Davisy/Hyperparameter-Optimization-Techniques/blob/master/GridSearchCV%20.ipynb
(b) 随机搜索
在超参数值的随机组合用于为构建的模型寻找最佳解决方案时,这种方法的工作方式不同。随机搜索的缺点是有时会漏掉搜索空间中的重要点(值)。
注意:你可以在这里了解更多实现随机搜索的方法:https://github.com/Davisy/Hyperparameter-Optimization-Techniques/blob/master/RandomizedSearchCV.ipynb
超参数优化技术
在本系列文章中,我将向你介绍不同的高级超参数优化技术/方法,这些技术/方法可以帮助你获得给定模型的最佳参数。我们将研究以下技术。
- Hyperopt
- Scikit Optimize
- Optuna
在本文中,我将重点介绍Hyperopt的实现。
什么是Hyperopt
Hyperopt是一个强大的python库,用于超参数优化,由jamesbergstra开发。Hyperopt使用贝叶斯优化的形式进行参数调整,允许你为给定模型获得最佳参数。它可以在大范围内优化具有数百个参数的模型。
Hyperopt的特性
Hyperopt包含4个重要的特性,你需要知道,以便运行你的第一个优化。
(a) 搜索空间
hyperopt有不同的函数来指定输入参数的范围,这些是随机搜索空间。选择最常用的搜索选项:
- hp.choice(label, options)-这可用于分类参数,它返回其中一个选项,它应该是一个列表或元组。示例:hp.choice(“criterion”, [“gini”,”entropy”,])
- h