LibSVM和LibLinear之间有什么区别

时间:2012-07-16 16:46:04

标签: algorithm machine-learning svm libsvm

libsvmliblinear都是实现支持向量机的软件库。有什么不同?这些差异如何使liblinear比libsvm更快?

3 个答案:

答案 0 :(得分:36)

实际上,在libsvm中实现的SMO算法(适用于内核和线性SVM)的复杂性是O(n ^ 2)或O(n ^ 3),而liblinear是O(n)但不支持内核SVM。 n是训练数据集中的样本数。

因此,对于中到大规模,忘记内核并使用liblinear(或者看看近似内核SVM解算器,例如LaSVM)。

编辑:在实践中,libsvm在10k样本时变得非常缓慢。

答案 1 :(得分:10)

SVM是support vector machine,它基本上是一个线性分类器,但是使用许多内核变换预先将非线性问题转化为线性问题。

从上面的链接看,似乎liblinear是非常相同的东西,没有那些内核转换。因此,正如他们所说,在不需要内核转换的情况下(他们提到文档分类),它会更快。

答案 2 :(得分:3)

来自:http://www.csie.ntu.edu.tw/~cjlin/papers/liblinear.pdf

  

它支持L2正则化逻辑回归(LR),L2损失和L1损失线性支持向量机(SVM)(Boser等,1992)。它继承了流行的SVM库LIBSVM的许多功能

您可能还会从其中一位创作者那里看到一些有用的信息:http://agbs.kyb.tuebingen.mpg.de/km/bb/showthread.php?tid=710

我想说的主要思想是,liblinear是优化的来处理线性分类(即没有必要的内核),而线性分类只是libsvm的众多功能之一,所以逻辑上在分类准确性方面,它可能与liblinear不匹配。显然,我在这里做了一些广泛的概括,关于差异的确切细节可能在我上面链接的文章以及libsvm网站上相应的libsvm用户指南中有所涉及。