首页 > 解决方案 > 为什么带有 fitcsvm 的 SMO 求解器需要比 L1-QP 求解器更长的时间才能收敛到 MATLAB 中较大的 BoxConstraint (C) 值?

问题描述

我正在为一个班级做一个迷你项目,我们被要求在 fitcsvm 中实现 L1-QP(求解器)和 SMO(求解器),并将它们的收敛时间与越来越多的示例进行比较。问题本身不是线性可分的,但我们使用的是 Soft Margin SVM,因此它确实会收敛到 fitcsvm 的解决方案。

下面是我得到的结果: Y 轴是每种方法(绿线、蓝线和红线中的 3 种方法)收敛到解决方案所需的平均时间。

X 轴是样本数,从 100-1000 开始,以 100 为增量(100,200,300,...,1000)。我们从相同的分布中采样以增加数据集的大小。

蓝线是 fitcsvm('Solver'=L1-QP),绿线是 fitcsvm('Solver'=SMO)。红线是我自己使用 quadprog 实现的 SVM(没有任何 fitcsvm),我使用一个简单的数据集确认了它的有效性。

左图的 C 值('Boxconstraint')为 0.1,右图的 C 值为 100。

从两张图中可以看出,当 C=0.1(小值)时,SMO 优于其他方法,在右图中,当 C=100 时,SMO 开始变得比其他方法效率低。我在文档中看到了一个解释,上面写着:

上述解释了为什么右边的情况可能会发生,但它并没有说明 SMO 和 quadprog 是否都是这种情况,或者只是 SMO。如果该陈述仅适用于 SMO,这是规范吗?我的意思是:在实际的 SMO 实现(不仅仅是 Matlab 的 SMO 实现)中,这是您在所有或大多数情况下所期望的吗?如果这是预期的和常态,有人可以解释为什么会发生这种情况吗?在解释过程中来自 SMO 实现的方程将受到高度赞赏。

结果

此外,我仍然无法解释为什么当 C=100(右图)时 SMO(绿线)突然变快,当数据集样本大小在某些点而不是在其他点(上升和下降)增加时。谢谢你。

标签: matlabsvmquadprog

解决方案


推荐阅读