哪个更快?逻辑回归还是线性核的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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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