LIBSVM 是不是适用于许多类别和样本?

Posted

技术标签:

【中文标题】LIBSVM 是不是适用于许多类别和样本?【英文标题】:Is LIBSVM suitable for many categories and samples?LIBSVM 是否适用于许多类别和样本? 【发布时间】:2018-12-05 17:34:56 【问题描述】:

我正在构建一个文本分类器,它应该能够给出文档属于某些类别的概率(即 80% 的小说、30% 的营销等)

我相信 Libsvm 是通过“预测”方法做到这一点的,但问题是我有大约 20 个类别要测试。此外,我还有数百个文档可用于培训。

问题是训练文件变大了 1 GB - 2 GB,这使得 Libsvc 超级慢。

如何解决这个问题?我应该改用 Liblinear,还是有更好的选择?

【问题讨论】:

请先做一些基础研究。这包括 SVM 在预测概率方面的劣势(关键词:Platt-scaling;基于 CV 的概率校准)及其(通常)二元性质(尽管可能存在一些多项式配置)。然后你可以尝试推断出 libsvm 和 liblinear 的区别。这里的其他一切都非常广泛/猜测。 SVM 可用于预测概率。 LibSVM 和 Liblinear 都有这方面的方法。到目前为止,我发现的唯一区别是 LibSVM 更准确一点,但速度慢了很多,这使得它对于大型训练文件毫无用处 作为参考,LibSVM 使用 Platt-scaling (stats.stackexchange.com/a/211973/212921) 我在合理的时间内使用 LIBSVM 进行文本分类,文档集合 > 40k 文档(启用或不启用 Platt-scaling)。你的特征空间有多大? 500 个文档,大约 20 个类别。存储在磁盘上,变为 2 GB! 【参考方案1】:

关于这个具体问题,我不得不使用 Liblinear,因为 LibSVC 一直在运行。

但如果有人想知道最终结果如何:

    我从 php / C++ 切换到 Python,这非常棒 更容易并且没有遇到任何内存问题 我的案例是“多标签”。 This article 为我指明了正确的方向,the magpie project 帮助我完成了任务。

【讨论】:

以上是关于LIBSVM 是不是适用于许多类别和样本?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决样本不均衡问题

新类别的增量添加

第六节 k-近邻算法介绍和简单案列

如何在通用项目中添加仅适用于 iPhone 的类别

php 活动日历和活动门票加(ET +):如果门票适用于特定类别的活动,则禁用QR码。

Auto-Encoder(自编码器)原理