libsvm“达到最大迭代次数”警告和交叉验证


20

我在C-SVC模式下使用2级多项式内核的libsvm,并且需要训练多个SVM。每个训练集都有10个特征和5000个向量。在训练过程中,我收到有关我训练的大多数SVM的警告:

WARNING: reaching max number of iterations
optimization finished, #iter = 10000000

有人可以解释这个警告的含义,以及如何避免它吗?

我还想对我的模型进行交叉验证,以便确定γ和C(正则化)的最佳选择。我的计划是仅尝试这10个值的每种组合:两个参数都为0.00001、0.0001、0.001、0.01、0.1、1、10、100、1000、10000,然后看看哪种组合在交叉验证期间产生最佳精度。这够了吗?我应该在此间隔中使用更多的值,还是应该选择更大的间隔?


尝试NU_SVC模式应该可以解决您的问题。
侯赛因·比塔拉夫2013年

Answers:


20

此警告意味着LIBSVM用于解决二次优化问题的迭代例程,以找到分离数据的最大余量超平面(即参数和)达到了最大迭代次数,必须停止,而当前近似值为,可以进一步提高(即,可以改变以使目标函数更极端的值)。简而言之,这意味着LIBSVM认为未能找到最大余量超平面,这可能是正确的,也可能不是。wbww

发生这种情况的原因有很多,建议您执行以下操作:

  • 规范化您的数据。
  • 确保您的班级或多或少保持平衡(大小相似)。如果不是,请使用参数-w为它们分配不同的权重。
  • 尝试使用其他和。LIBSVM中的多项式内核也具有参数'coef0',因为内核是 Cγ
    γüv+系数0 学位

像您一样,以对数尺度搜索最佳是个好主意。我认为对于标准化数据,您建议的搜索范围应该可以。一个有用的检查:分类器的精度在该范围的边界以及集合的两个值之间不应有太大变化。如果是这样,请扩大范围或添加中间值。CC

请注意,用于Windows的LIBSVM发行版应包含一个名为grid.py的Python脚本,该脚本可以为您进行参数选择(基于交叉验证和指定的搜索范围)。它还可以生成等高线图,以支持SVM。该工具可能会很有帮助。

以下有关StackOverflow的问题及其相关问题也可能有帮助: libsvm收缩启发式方法


感谢您的详细解释。它无疑消除了这个谜团。我在SO(您提供的链接)上提出了大致相同的问题,但是我在那里收到的答案主要集中在不断缩小的启发式方法上。
Mihai Todor 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.