是否有更好的替代方法来选择 C 和 Gamma,从而产生更好的训练性能?
支持向量机参数选择
机器算法验证
机器学习
2022-03-13 14:47:27
3个回答
网格搜索很慢,因为它会花费大量时间来研究超参数设置,而这些设置并不接近最优。更好的解决方案是Nelder-Mead 单纯形算法,它不需要计算梯度信息,实现起来很简单(维基百科页面上应该有足够的信息)。Weka 工具箱中可能还有一些 java 代码,但是我在 MATLAB 中工作,并没有详细了解 Weka。
SMO 是一种用于查找模型参数而不是超参数的算法。
Nelder-Mead 单纯形法可以涉及与简单网格搜索一样多的函数评估。通常,误差表面足够平滑,接近最优参数值,粗网格搜索然后在较小区域中进行更精细的网格搜索就足够了。
如果您对基于梯度的 C 和 gamma 优化感兴趣,可以使用诸如优化半径-边距边界或优化验证集上的错误率之类的方法。目标函数梯度的计算涉及一个 SVM 训练,但简单的梯度下降可能只涉及几十次迭代。(查看http://olivier.chapelle.cc/ams/获取文章和 Matlab 实现。)
这是Alex Smola 的博客中与您的问题相关的一个条目
这是一个报价:
[...] 从您的数据集中随机挑选 1000 对 (x,x'),计算所有这些对的距离并取中位数、0.1 和 0.9 分位数。现在选择 λ 作为这三个数字中的任何一个的倒数。通过一点交叉验证,您将找出三者中的哪一个是最好的。在大多数情况下,您不需要进一步搜索。