首页 文章

libsvm缩小启发式

提问于
浏览
13

我在C-SVC模式下使用libsvm,使用2阶多项式内核,我需要训练多个SVM . 在训练期间,我为一些我训练的SVM获得了这些警告中的一个或者两个警告:

WARNING: using -h 0 may be faster
*
WARNING: reaching max number of iterations
optimization finished, #iter = 10000000

我找到了 h 参数的描述:

-h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1)

我试着阅读libsvm文档中的解释,但这对我来说有点太高了 . 任何人都可以提供一个外行的解释,或许,一些建议,如设置这将是有益的,因为......?此外,通过为我训练的所有SVM设置此参数,可能会对那些未明确发出此警告的SVM的准确性产生负面影响将会很有帮助 .

我不知道该怎么做其他警告 .

只是为了提供更多细节:我的训练集有10个属性(特征),它们由5000个向量组成 .


Update:

如果其他人正在获得“达到最大迭代次数”,则似乎是由数值稳定性问题引起的 . 而且,这将产生非常慢的训练时间 . 多项式内核确实受益于使用交叉验证技术来确定正则化的最佳值(C参数),并且在多项式内核的情况下,对我来说它有助于使其小于8.此外,如果内核是不均匀的\ sum(\ gamma x_i s_i coef0)^ d(对不起,SO不支持LaTeX),其中coef0!= 0,然后交叉验证可以使用网格搜索技术实现gamma和C,因为在这种情况下,gamma(1 / number_of_features)的默认值可能不是最佳选择 . 尽管如此,根据我的实验,你可能不希望gamma太大,因为它会导致数字问题(我正在尝试最大值为8) .

为了进一步了解gamma和C的可能值,我们应该尝试在grid.py中进行挖掘 .

1 回答

  • 9

    缩小的启发式方法可以加速优化 . 正如它在常见问题解答中所述,它们有时会有所帮助,有时它们却没有 . 我认为这是运行时问题,而不是收敛问题 .

    但是,优化达到最大迭代次数的事实很有意思 . 您可能希望使用容差(成本参数),或查看导致此问题的各个问题 . 数据集大吗?

相关问题