哪个更快?逻辑回归还是线性核的SVM?

我在用Python(scikit-learn)进行机器学习,使用相同的数据但不同的分类器。当我使用50万条数据时,LR和SVM(线性核)所需时间大致相同,SVM(多项式核)则需要永远的时间。但当使用500万条数据时,LR似乎比SVM(线性)快很多,我想知道这是不是人们通常发现的情况?


回答:

“更快”这个问题有点奇怪,部分原因是很难进行公平的比较,而且这取决于具体的上下文。在线性情况下,LR和SVM非常相似。线性情况下的简要总结是,逻辑回归和SVM都非常快,速度差异通常不应太大,并且在某些情况下两者都可能更快或更慢。

从数学角度来看,逻辑回归是严格凸的[其损失函数也更平滑],而SVM只是凸的,这有助于LR在优化角度上“更快”,但这并不总是意味着等待时间更短。

部分原因是,计算上SVM更简单。逻辑回归需要计算exp函数,这比SVM中使用的max函数要贵得多,但在大多数情况下,这些计算并不构成主要的工作量。SVM在对偶空间中有硬零值,因此一个常见的优化方法是执行“收缩”,你可以假设(通常是正确的)某个数据点的贡献在近期不会改变,从而停止访问它/检查它的最优性。SVM损失的硬零值和软边界形式中的C正则化项允许这样做,而LR没有这样的硬零值可以利用。

然而,当你想要快速的结果时,通常不会使用精确求解器。在这种情况下,上述问题大多消失了,两者在这种情况下学习速度通常一样快。

根据我自己的经验,我发现基于双坐标下降的求解器在获得两者的精确解时是最快的,逻辑回归在实际运行时间上通常比SVM更快,但并非总是如此(而且速度差异从不超过2倍)。然而,如果你尝试比较LR和SVM的不同求解方法,你可能会得到关于哪个“更快”的非常不同的结果,这些比较不一定是公平的。例如,SVM的SMO求解器可以用于线性情况,但由于它没有利用你只关心线性解的事实,它会慢几个数量级。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注