1

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

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

4

2 回答 2

3

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

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

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

于 2014-11-10T15:57:00.033 回答
1

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

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

于 2014-11-08T00:21:26.177 回答