libsvm和liblinear都是实现支持向量机的软件库。有什么不同?以及这些差异如何使 liblinear 比 libsvm 更快?
3 回答
实际上,在 libsvm 中实现的 SMO 算法(适用于内核和线性 SVM)的复杂度是 O(n^2) 或 O(n^3),而 liblinear 是 O(n),但不支持内核 SVM。n 是训练数据集中的样本数。
因此,对于中到大规模,忘记内核并使用 liblinear(或者看看近似内核 SVM 求解器,例如LaSVM)。
编辑:在实践中,libsvm 在 10k 样本时变得非常缓慢。
SVM 是支持向量机,它基本上是一个线性分类器,但是使用许多核变换预先将非线性问题变成线性问题。
从上面的链接来看,似乎 liblinear 几乎是一回事,没有那些内核转换。因此,正如他们所说,在不需要内核转换的情况下(他们提到文档分类),它会更快。
来自:http ://www.csie.ntu.edu.tw/~cjlin/papers/liblinear.pdf
它支持 L2 正则化逻辑回归 (LR)、L2 损失和 L1 损失线性支持向量机 (SVM) (Boser et al., 1992)。它继承了流行的 SVM 库 LIBSVM 的许多特性
您还可能会从其中一位创建者那里看到一些有用的信息:http ://agbs.kyb.tuebingen.mpg.de/km/bb/showthread.php?tid=710
我想说,主要思想是 liblinear 被优化以处理线性分类(即不需要内核),而线性分类只是 libsvm 的众多功能之一,因此在逻辑上它可能与 liblinear 不匹配分类准确度。显然,我在这里做了一些广泛的概括,关于差异的确切细节可能包含在我上面链接的论文以及来自 libsvm 网站的相应用户指南中。