哪一个更快?逻辑回归或具有线性内核的 SVM



我正在使用python(scikit-learn)使用相同的数据但使用不同的分类器进行机器学习。当我使用 500k 数据时,LR 和 SVM(线性内核)花费的时间大致相同,SVM(具有多项式内核)需要很长时间。但是使用 500 万数据,似乎 LR 比 SVM(线性)快很多,我想知道这是否是人们通常发现的?

更快是一个有点奇怪的问题,部分原因是很难将苹果与苹果进行比较,这取决于上下文。LR 和 SVM 在线性情况下非常相似。线性情况的 TLDR 是逻辑回归和 SVM 都非常快,速度差异通常不应该太大,在某些情况下两者都可能更快/更慢。

从数学角度来看,逻辑回归是严格凸的[它的损失也更平滑],而SVM只是凸的,因此从优化的角度来看,这有助于LR"更快",但这并不总是转化为更快的等待时间。

部分原因是,从计算上讲,SVM 更简单。逻辑回归需要计算exp函数,这比 SVM 中使用的max函数要贵得多,但在大多数情况下,计算这些函数并不能完成大部分工作。SVM 在对偶空间中也有硬零,因此常见的优化是执行"收缩",即您假设(通常是正确的)数据点对解决方案的贡献在不久的将来不会改变,并停止访问它/检查其最佳性。SVM 损失的硬零和软保证金形式的C正则化项允许这样做,其中 LR 没有像这样利用的硬零。

但是,当您希望某些东西快速时,通常不使用精确的求解器。在这种情况下,上述问题大多消失,并且在这种情况下,两者都倾向于与另一个一样快地学习。

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

最新更新