【问题标题】:Liblinear vs PegasosLiblinear vs Pegasos
【发布时间】:2015-01-04 12:32:28
【问题描述】:

我一直在寻找快速线性 SVM 库,我遇到了两个最重要的 LiblinearPegasos ,从它看起来像 liblinear 的论文中liblinaer 优于 pegasos。但是,pegasos 声称,如果数据稀疏,那么它的工作速度很快。 由于pegasos 较早出现,因此在它的文档中没有可比性。

那么对于稀疏数据我应该选择什么?

【问题讨论】:

    标签: machine-learning svm liblinear


    【解决方案1】:

    据我所知,两者都可以很好地处理稀疏数据。问题更多在于数据点的数量。 Liblinear 对原始和对偶都有求解器,它们可以高精度地解决问题,而无需调整参数。对于 pegasos 或类似的次梯度下降求解器(如果你想要其中之一,我推荐 Leon Bottou 的 sgd),结果很大程度上取决于初始学习率和学习率计划,这可能很难调整。

    根据经验,如果我的数据点少于 10k,我会一直使用 liblinear(使用原始求解器),甚至可能高达 100k。除此之外,如果我觉得 liblinear 速度较慢,我会考虑使用 SGD。即使 liblinear 稍微慢一些,我更喜欢使用它,因为这意味着我不必考虑学习率、学习率衰减和 epoch 数。

    顺便说一句,您可以使用像 scikit-learn 这样的框架非常轻松地比较这些不同的求解器,其中包括 SGD、Liblinear 和 LibSVM 求解器,或者 lightning,其中包括很多求解器。

    【讨论】:

    • Pegasos 相对于 SGD 的主要优势在于您不需要调整初始学习率和衰减。它们是通过分析设置的,因此无需考虑它们。时期数是另一个问题。
    • Leon Bottou 的 sgd 对初始学习率也有启发式。
    【解决方案2】:

    LIBLINEAR 和 Pegasos 都是线性分类技术,专门用于处理具有大量实例和特征的大型稀疏数据。在这类数据上,它们只比传统的 SVM 快。

    我以前从未使用过 Pegasos,但我可以向您保证,LIBLINEAR 处理此类数据的速度非常快,而且作者说“它可以与 Pegasos 等最先进的线性分类器竞争甚至更快”。

    【讨论】:

      猜你喜欢
      • 2013-02-18
      • 2016-01-15
      • 2017-11-08
      • 2015-03-30
      • 2013-02-13
      • 2014-07-25
      • 2014-02-15
      • 1970-01-01
      • 2014-01-05
      相关资源
      最近更新 更多