哪个更快?逻辑回归或具有线性内核的 SVM?
Which one is faster? Logistic regression or SVM with linear kernel?
我正在使用 python (scikit-learn) 使用相同的数据但使用不同的分类器进行机器学习。当我使用 500k 的数据时,LR 和 SVM(线性内核)花费的时间大致相同,而 SVM(具有多项式内核)花费的时间很长。但是使用500万数据,LR似乎比SVM(线性)快很多,我想知道这是否是人们通常发现的?
更快是一个有点奇怪的问题,部分原因是很难就此进行同类比较,这取决于上下文。 LR 和 SVM 在线性情况下非常相似。线性情况的 TLDR 是逻辑回归和支持向量机都非常快,速度差异通常不应太大,在某些情况下两者都可能是 faster/slower。
从数学的角度来看,Logistic 回归是严格凸的 [它的损失也更平滑],而 SVM 只是凸的,因此从优化的角度来看,这有助于 LR "faster",但这并不总是转化更快地等待多长时间。
部分原因是,在计算上,SVM 更简单。逻辑回归需要计算 exp
函数,这比 SVM 中使用的 max
函数要贵一点,但在大多数情况下计算这些并不能完成大部分工作。 SVM 在对偶 space 中也有硬零点,因此常见的优化是执行 "shrinkage",您假设(通常是正确的)数据点对解决方案的贡献在不久的将来不会改变并停止访问它/检查它的最优性。 SVM 损失的硬零和软间隔形式中的 C
正则化项允许这样做,其中 LR 没有像那样可以利用的硬零。
但是,当您希望速度快时,通常不会使用精确求解器。在这种情况下,上述问题大部分都消失了,并且在这种情况下两者都倾向于和另一个一样快地学习。
根据我自己的经验,我发现基于双坐标下降的求解器是获得两者精确解的最快方法,逻辑回归 通常 在挂钟时间内更快比 SVM,但并非总是如此(而且永远不会超过 2 倍)。但是,如果您尝试比较 LR 和 SVM 的不同求解器方法,您可能会得到非常不同的数字 "faster",并且这些比较不一定是公平的。例如,SVM 的 SMO 求解器可用于线性情况,但会慢几个数量级,因为它没有利用您只关心线性解决方案这一事实。
我正在使用 python (scikit-learn) 使用相同的数据但使用不同的分类器进行机器学习。当我使用 500k 的数据时,LR 和 SVM(线性内核)花费的时间大致相同,而 SVM(具有多项式内核)花费的时间很长。但是使用500万数据,LR似乎比SVM(线性)快很多,我想知道这是否是人们通常发现的?
更快是一个有点奇怪的问题,部分原因是很难就此进行同类比较,这取决于上下文。 LR 和 SVM 在线性情况下非常相似。线性情况的 TLDR 是逻辑回归和支持向量机都非常快,速度差异通常不应太大,在某些情况下两者都可能是 faster/slower。
从数学的角度来看,Logistic 回归是严格凸的 [它的损失也更平滑],而 SVM 只是凸的,因此从优化的角度来看,这有助于 LR "faster",但这并不总是转化更快地等待多长时间。
部分原因是,在计算上,SVM 更简单。逻辑回归需要计算 exp
函数,这比 SVM 中使用的 max
函数要贵一点,但在大多数情况下计算这些并不能完成大部分工作。 SVM 在对偶 space 中也有硬零点,因此常见的优化是执行 "shrinkage",您假设(通常是正确的)数据点对解决方案的贡献在不久的将来不会改变并停止访问它/检查它的最优性。 SVM 损失的硬零和软间隔形式中的 C
正则化项允许这样做,其中 LR 没有像那样可以利用的硬零。
但是,当您希望速度快时,通常不会使用精确求解器。在这种情况下,上述问题大部分都消失了,并且在这种情况下两者都倾向于和另一个一样快地学习。
根据我自己的经验,我发现基于双坐标下降的求解器是获得两者精确解的最快方法,逻辑回归 通常 在挂钟时间内更快比 SVM,但并非总是如此(而且永远不会超过 2 倍)。但是,如果您尝试比较 LR 和 SVM 的不同求解器方法,您可能会得到非常不同的数字 "faster",并且这些比较不一定是公平的。例如,SVM 的 SMO 求解器可用于线性情况,但会慢几个数量级,因为它没有利用您只关心线性解决方案这一事实。