Kub*_*888 3 machine-learning svm python-2.7 logistic-regression
我正在使用python(scikit-learn)使用相同的数据但使用不同的分类器进行机器学习。当我使用500k数据时,LR和SVM(线性内核)大约花费相同的时间,而SVM(带有多项式内核)则永远消耗。但是,使用500万个数据,似乎LR比SVM(线性)快很多,我想知道这是否是人们通常能找到的吗?
更快是一个奇怪的问题,部分原因是很难在此之间将苹果与苹果进行比较,并且它取决于上下文。在线性情况下,LR和SVM非常相似。线性情况下的TLDR是Logistic回归和SVM都非常快,并且速度差异通常不应太大,在某些情况下两者可能会更快/更慢。
从数学的角度来看,逻辑回归严格是凸的[其损失也更平稳],其中SVM仅是凸的,因此从优化的角度来看,这有助于LR“更快”,但是在多长时间上并不总是转化为更快。你等待。
部分原因是因为在计算上,SVM更简单。Logistic回归需要计算exp功能,这比仅maxSVM中使用的功能要贵很多,但是在大多数情况下,计算这些功能并不能完成大部分工作。SVM在对偶空间中也具有硬零,因此通常的优化是执行“收缩”,在这种情况下,您(通常正确地)假设数据点对解决方案的贡献在不久的将来不会改变,并停止访问/检查其最优性。SVM损失的硬零和C软裕度形式的正则项可以实现这一点,其中LR没有像这样可以利用的硬零。
但是,当您希望快速进行某些操作时,通常不会使用精确的求解器。在这种情况下,以上问题在大多数情况下都消失了,在这种情况下,它们都倾向于像彼此一样快地学习。
以我自己的经验,我发现基于双坐标下降法的求解器是获得两者精确解决方案的最快方法,Logistic回归的挂钟时间通常比SVM快,但并非总是如此(而且永远不会超过2倍) )。但是,如果您尝试比较LR和SVM的不同求解器方法,则得出的数字可能会非常不同,这是“更快”的,并且这些比较不一定是公平的。例如,用于SVM的SMO求解器可以在线性情况下使用,但会慢几个数量级,因为它没有利用您只关心线性解决方案这一事实。
| 归档时间: |
|
| 查看次数: |
2231 次 |
| 最近记录: |