scikit-learn 中超参数优化最有效的方法是什么?

数据挖掘 scikit-学习 超参数 超参数调整 网格搜索 随机算法
2021-09-21 07:03:23

在这里scikit-learn 中的超参数优化过程的概述

详尽的网格搜索将找到模型的最佳超参数集。缺点是详尽的网格搜索速度很慢。

随机搜索比网格搜索更快,但具有不必要的高方差。

其他包中还有其他策略,包括scikit-optimizeauto-sklearnscikit- hyperband 。

在 scikit-learn 中进行超参数优化的最有效(快速找到合理性能参数)方法是什么?

理想情况下,我想要带有基准的工作代码示例。

2个回答

优化不是我的领域,但据我所知,如今高效且有效的超参数优化主要围绕构建代理模型展开。随着模型复杂性的增加,它们变成了一个更加不透明的黑匣子。深度神经网络和可能复杂的树也是如此。代理模型试图回归该黑匣子内的底层空间。基于各种采样技术,他们探索超参数空间并尝试构建一个代表真实底层超参数空间的函数。

贝叶斯优化侧重于代理模型,该模型的构建方式对 BO 至关重要。对 BO 来说同样重要的是选择一个好的损失函数。

我认为随机搜索和贝叶斯搜索之间的性能因数据集和模型而异。Bergstra & Bengio (2012) 对随机搜索优于网格搜索提出了强有力的论据。沙赫里亚里等人。(2016) 为 BO 提供了强有力的理由。基于模型的 Hyperband 策略可能比 BO 表现更好,特别是对于高维,但它纯粹是探索,而不是开发。这很容易导致过早停止。然而,有人努力将 Hyperband 和 BO 结合起来

我在 scikit-optimize 方面取得了很好的成功,尽管有很多未实现的。使用 scikit-learn 进行原型制作很容易,并且可以很容易地与它交互。


Bergstra, J. 和 Bengio, Y. (2012)。随机搜索超参数优化。机器学习研究杂志,13(二月),281-305。

Shahriari, B.、Swersky, K.、Wang, Z.、Adams, RP 和 De Freitas, N. (2016)。将人排除在循环之外:贝叶斯优化的回顾。IEEE 会议记录,104(1),148-175。

你可以看看auto-sklearn这是一个自动化机器学习工具包,它是 scikit-learn 的直接扩展。