【发布时间】:2011-02-03 10:15:24
【问题描述】:
我已经在支持向量机上工作了大约 2 个月了。我自己编写了 SVM,对于 SVM 的优化问题,我使用了 John Platt 博士的 Sequential Minimal Optimization(SMO)。
现在我正处于进行网格搜索以找到我的数据集的最佳 C 值的阶段。 (请在此处找到我的项目应用程序和数据集详细信息SVM Classification - minimum number of input sets for each class)
我已经成功检查了我自定义实现的 SVM 对从 2^0 到 2^6 的 C 值的准确性。但是现在我遇到了一些关于 C> 128 的 SMO 收敛的问题。 就像我试图找到 C=128 的 alpha 值一样,它需要很长时间才能真正收敛并成功给出 alpha 值。
对于 C=100,SMO 收敛所需的时间约为 5 小时。我认为这个巨大(因为 SMO 应该很快。)虽然我得到了很好的准确性? 我搞砸了,不是因为我无法测试更高 C 值的准确性。
我实际上显示了在 SMO 的每次传递中更改的 alpha 数量,并获得 10、13、8... alpha 连续变化。 KKT 条件确保收敛,那么这里发生了什么奇怪的事情?
请注意,尽管执行时间很长,但我的实现在 C
请就这个问题给我意见。
谢谢你,干杯。
【问题讨论】:
-
我想我之前问过你的其他问题之一,但你为什么不使用现有的 SVM 包?
-
我想我提到了我自己实现 SVM 的原因。我是技术学士学位的学生,我的学院不允许我使用任何现成的 SVM 实现。坦率地说,因为如果我使用任何东西,我将无法学习有关 SVM 的大部分内容。
-
不过,将它与您的实现进行比较是值得的。如果 libsvm 在这方面也很慢,那么您肯定没有做错任何事情。
标签: machine-learning smo classification svm convex-optimization