Answers:
网格搜索速度很慢,因为它花费大量时间来研究无法达到最佳效果的超参数设置。更好的解决方案是Nelder-Mead单纯形算法,该算法不需要计算梯度信息,并且易于实现(Wikipedia页面上应该有足够的信息)。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分位数。现在,选择λ作为这三个数字的任意一个的倒数。进行一点交叉验证,您将确定三个最好的哪个。在大多数情况下,您无需进一步搜索。