训练时间和在 libsvm 中使用 gamma 和 C 过拟合

Posted

技术标签:

【中文标题】训练时间和在 libsvm 中使用 gamma 和 C 过拟合【英文标题】:training time and overfitting with gamma and C in libsvm 【发布时间】:2011-01-17 13:26:29 【问题描述】:

我现在将 libsvm 用于具有高斯内核的支持向量机分类器。在its website中,提供了一个python脚本grid.py来选择最好的C和gamma。

我只是想知道训练时间和过拟合/欠拟合如何随 gamma 和 C 变化?

这样说对吗:

假设C从0变为+infinity,训练出来的模型会从欠拟合到过拟合,训练时间增加?

假设 gamma 从几乎 0 变为 +infinity,训练出来的模型会从欠拟合到过拟合,并且训练时间会增加?

在 grid.py 中,默认的搜索顺序是 C 从小到大 BUT gamma 从大到小。是为了训练时间从小到大,训练模型从欠拟合到过拟合吗?那么我们或许可以节省选择 C ​​和 gamma 值的时间?

感谢和问候!

【问题讨论】:

嗨,如果输入文件有大约 140000 个实例 ,grid.py 需要多长时间。我想知道这一点,因为这个脚本已经在我的系统中运行了超过 12 个小时,我不知道它什么时候会停止。我的详细问题在以下链接中:(请帮助..)***.com/questions/2415557/… 【参考方案1】:

这个问题很好,我没有确切的答案,因为我自己也想知道。但是在回答这个问题时:

所以我们或许可以节省选择 C ​​和 gamma 值的时间?

...我发现,对于 libsvm,C 和 gamma 肯定有一个“正确”的值,它高度依赖于问题。因此,无论搜索 gamma 的顺序如何,都必须测试 gamma 的许多候选值。最终,我不知道这个耗时(取决于您的问题)但必要的参数搜索的任何捷径。

【讨论】:

关于耗时的参数搜索有个捷径。有一个名为“svmpath”的 R 包,它一次性计算 2 类 SVM 分类器的整个正则化路径。该论文有一个链接,描述了它在做什么。见这里:cran.r-project.org/web/packages/svmpath/index.html 感谢参考;我从未使用过 R,但我有兴趣看看它是否有效。你知道它是否能找到多类 SVM 的最佳参数吗? (我知道 libsvm 默认使用一对一。)我阅读了 svmpath.pdf,但我没有看到任何关于多类扩展的信息。在当前的分类问题中,我有 10 到 24 个类别、数千个数据点和 32 到 64 个特征。这个参数搜索有时会花费我很长时间!

以上是关于训练时间和在 libsvm 中使用 gamma 和 C 过拟合的主要内容,如果未能解决你的问题,请参考以下文章

C 参数不影响准确性 [用于字符串数据的 LibSVM]

LibSVM 预测精度

网格搜索中的交叉验证非常慢(libsvm)

用于 HOG 训练的 LibLinear + grid.py (LibSVM)

使用 LIBSVM 进行分类的 100% 准确度 - 可能有啥问题?

如何在 R 中使用 LibSVM 执行 10 折交叉验证?