哪个更快?逻辑回归或线性核支持向量机?
Posted
技术标签:
【中文标题】哪个更快?逻辑回归或线性核支持向量机?【英文标题】:Which one is faster? Logistic regression or SVM with linear kernel? 【发布时间】:2016-04-21 06:32:32 【问题描述】:我正在使用 python (scikit-learn) 进行机器学习,使用相同的数据但使用不同的分类器。当我使用 500k 数据时,LR 和 SVM(线性内核)大约需要相同的时间,而 SVM(带有多项式内核)则需要永远。但是使用 500 万个数据,看起来 LR 比 SVM(线性)快很多,不知道这是不是人们通常发现的?
【问题讨论】:
【参考方案1】:更快是一个有点奇怪的问题,部分原因是在这方面很难将苹果与苹果进行比较,这取决于上下文。 LR 和 SVM 在线性情况下非常相似。线性情况的 TLDR 是逻辑回归和 SVM 都非常快,速度差异通常不应该太大,并且在某些情况下两者都可能更快/更慢。
从数学的角度来看,逻辑回归是严格凸的 [它的损失也更平滑],而 SVM 只是凸的,因此从优化的角度来看,这有助于 LR “更快”,但这并不总是转化为更快你等了多久。
部分原因是,在计算上,SVM 更简单。逻辑回归需要计算 exp
函数,这比 SVM 中使用的 max
函数要贵很多,但在大多数情况下,计算这些并不能完成大部分工作。 SVM 在对偶空间中也有硬零,因此一个常见的优化是执行“收缩”,您假设(通常正确)数据点对解决方案的贡献在不久的将来不会改变并停止访问它/检查其最优性。 SVM 损失的硬零和软边距形式中的C
正则化项允许这样做,其中 LR 没有硬零可以这样利用。
但是,当您想要快速计算时,通常不会使用精确求解器。在这种情况下,上述问题大部分都消失了,并且在这种情况下,两者的学习速度都一样快。
根据我自己的经验,我发现基于双坐标下降的求解器是获得两者精确解的最快方法,Logistic 回归通常在挂钟时间上比 SVM 快,但不是总是(并且永远不会超过 2 倍)。但是,如果您尝试比较 LR 和 SVM 的不同求解器方法,您可能会得到“更快”的非常不同的数字,并且这些比较不一定是公平的。例如,支持向量机的 SMO 求解器可用于线性情况,但速度会慢几个数量级,因为它没有利用您只关心线性解决方案这一事实。
【讨论】:
你参考的好论文。 @javadba 我不明白你在问/说什么。 哦-刚刚意识到双坐标下降的论文实际上并没有在您的文本中明确引用。我正在阅读它 csie.ntu.edu.tw/~cjlin/papers/cddual.pdf 并简单地评论它是一个有用的文档。以上是关于哪个更快?逻辑回归或线性核支持向量机?的主要内容,如果未能解决你的问题,请参考以下文章