【问题标题】:What's the difference between LibSVM and LibLinearLibSVM 和 LibLinear 有什么区别
【发布时间】:2012-07-15 13:33:47
【问题描述】:

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

【问题讨论】:

    标签: algorithm machine-learning svm libsvm


    【解决方案1】:

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

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

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

    【讨论】:

    • 除了实现问题之外,我还要补充一点,如果您同时运行这两种算法,您获得的准确度分数可能会大不相同。我发现 LibLinear 通常(如果不是总是)获得比 LibSVM 更高的准确度值。
    • @ogrisel 所以 Liblinear 中的“L2 正则化逻辑回归”分类器具有 O(n) 复杂度?
    • 其实我不确定这可能取决于 liblinear 使用的求解器,但我确信它比 libsvm 使用的 SMO 求解器要好得多。
    • 如果有兴趣的话,我们对最多 16 万个样本的数据集都进行了尝试(在此之后,内核 SVM 的训练速度变得异常缓慢——即使在每个有 16 个内核的 4 个节点上也需要一个多星期才能完成) . Kernel SVM 产生的结果稍微好一点,但考虑到需要大量的计算时间,liblinear 确实应该是大型数据集的更好的默认选择。更多信息请参见我们的(开放获取)论文:dx.doi.org/10.1186/s13321-016-0151-5
    【解决方案2】:

    发件人: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 网站上相应的 libsvm 用户指南中。

    【讨论】:

      【解决方案3】:

      SVM 是support vector machine,它基本上是一个线性分类器,但是使用了很多核变换,预先将非线性问题变成了线性问题。

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

      【讨论】:

        猜你喜欢
        • 2012-12-03
        • 2014-10-21
        • 2016-08-25
        • 2010-10-02
        • 2011-12-12
        • 2010-09-16
        • 2012-03-14
        • 2012-02-06
        相关资源
        最近更新 更多