文本分类方法?支持向量机和决策树。

14

我有一个训练集,想要使用分类方法来根据这个训练集对其他文档进行分类。我的文档类型是新闻,类别包括体育、政治、经济等。

我完全理解朴素贝叶斯和KNN,但支持向量机和决策树有些模糊,不知道是否能自己实现?还是有应用程序可以使用这些方法?

在这种情况下,我应该使用什么方法最好呢?

谢谢!

3个回答

13
  • 朴素贝叶斯

虽然这是最简单的算法,且所有变量都被认为相互独立。但在真正的文本分类情况下,这种方法表现良好。我肯定会首先尝试这种算法。

  • KNN

KNN用于聚类而非分类。我认为你误解了聚类和分类的概念。

  • SVM

SVM有SVC(分类)和SVR(回归)算法可用于分类和预测。有时它表现很好,但从我的经验来看,在文本分类中,它的性能很差,因为它对好的分词器(过滤器)要求很高。但数据集的字典总是有一些脏的tokens。准确性非常不好。

  • 随机森林(决策树)

我从未尝试过这种方法进行文本分类。因为我认为决策树需要几个关键节点,而对于文本分类,很难找到“几个关键tokens”,且随机森林对于高稀疏维度效果很差。

供参考

这些都是根据我的经验,但对于你的情况,你没有更好的方法来决定使用哪些方法,除了尝试每个算法来适应你的模型。

Apache的Mahout是一个非常好的机器学习算法工具。它集成了三个方面的算法:推荐、聚类和分类。你可以尝试这个库。但你必须学习一些关于Hadoop的基础知识。

而Weka是一个软件工具包,可以用于实现多种算法的经验。


2
SVM是文本分类中顶尖的技术之一,这得益于大量关于该主题的出版物。在分类时应使用SVC而不是SVR。 - Marc Claesen
1
从我使用SVM进行文本分类的经验来看,准确率总是不太好。我认为这与你使用的文本数据有关。另外,感谢指出错误。 - Freya Ren

7

线性支持向量机(Linear SVMs)是文本分类问题中最优秀的算法之一(与逻辑回归一起)。在这样的高维特征空间中,决策树表现很差。

Pegasos 算法是最简单的线性支持向量机算法之一,非常有效。

编辑:多项式朴素贝叶斯(Multinomial Naive bayes)也可以很好地用于文本数据,但通常不如线性支持向量机表现出色。kNN 可以正常运行,但它已经是一个缓慢的算法,并且在文本问题上从未达到过最高的准确率。


KNN和朴素贝叶斯怎么样? - mshzmkot
是的,我想知道哪种方法最适合我的问题。我有不到10个预定义类。 - mshzmkot
这并不是要羞辱你,而是为了让观点更加清晰明了。很多人滥用/依赖Stackoverflow。你需要利用现有的知识,超越它们,将其作为帮助学习的工具。 - Raff.Edward
1
我想为Pegasos算法点个赞,它经常被忽视,但实际上非常容易实现,并且是线性支持向量机的一个很好的替代选择。 - Pedrom

2

如果您熟悉Python,可以考虑使用NLTKscikit-learn。前者专注于自然语言处理,而后者是一个更全面的机器学习包(但它拥有很多文本处理模块)。两者都是开源的,并在SO上拥有良好的社区支持。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接