什么时候选择 SVM 的梯度下降而不是 liblinear?

数据挖掘 支持向量机 优化 梯度下降
2022-02-04 18:50:49

我知道如果您使用了内核技巧,那么在 SVM 中使用梯度下降方法是难以处理的。在这种情况下,最好使用 libsvm 作为求解器。

但是,如果您不使用内核并简单地将其视为线性分离问题,那么何时使用梯度下降作为求解器有意义?

在我看来,liblinear 是O(N)时间并且不需要超参数调整。

过去的一些测试中,liblinear 以比基于梯度的方法快得多的速度收敛到更低的错误率。

然而,Sklearn自己的测试表明它在许多情况下可以更快。

什么时候最好在 SVM 中使用基于梯度的方法?是具有一定大小的数据集还是高度线性和凸的数据?有哪些启发式方法或解释可用?

1个回答

正如评论中提到的,如果问题是什么时候使用坐标下降而不是随机梯度下降有意义,那么坐标下降的一个优点是,它一次只更新一个参数。因此,当数据具有非常多的特征时,使用坐标下降而不是随机梯度下降可能更有意义,因为 SGD 将尝试同时更新所有模型参数。此外,对于大量数据,CD 的计算复杂度可能低于 SGD。此外,当函数不可微时,使用坐标下降进行优化是有意义的。虽然,有一些方法可以将不可微函数转换为可微函数,但坐标下降仍然可能是前进的方法之一。例如,坐标下降是一种用 L1 惩罚优化损失的好方法。它被认为是 Lasso 回归和线性 SVM 的最先进技术。