我有一个训练集,我想使用一种分类方法根据我的训练集对其他文档进行分类。我的文档类型是新闻,类别是体育、政治、经济等。
我完全理解朴素贝叶斯和 KNN,但 SVM 和决策树是模糊的,我不知道我是否可以自己实现这个方法?或者有使用这种方法的应用程序?
我可以用这种方式对文档进行分类的最佳方法是什么?
谢谢!
我有一个训练集,我想使用一种分类方法根据我的训练集对其他文档进行分类。我的文档类型是新闻,类别是体育、政治、经济等。
我完全理解朴素贝叶斯和 KNN,但 SVM 和决策树是模糊的,我不知道我是否可以自己实现这个方法?或者有使用这种方法的应用程序?
我可以用这种方式对文档进行分类的最佳方法是什么?
谢谢!
虽然这是最简单的算法,并且一切都被认为是独立的,但在真实的文本分类案例中,这种方法效果很好。我肯定会先尝试这个算法。
KNN 用于聚类而不是分类。我认为您误解了聚类和分类的概念。
SVM 具有 SVC(分类)和 SVR(回归)算法来进行类分类和预测。它有时效果很好,但根据我的经验,它在文本分类方面的性能很差,因为它对好的分词器(过滤器)有很高的要求。但是数据集的字典总是有脏标记。准确率真的很差。
我从来没有尝试过这种方法进行文本分类。因为我认为决策树需要几个关键节点,而文本分类很难找到“几个关键标记”,而随机森林不适合高稀疏维度。
供参考
这些都是我的经验,但是对于您的情况,您没有更好的方法来决定使用哪种方法,而是尝试每种算法以适合您的模型。
Apache 的 Mahout 是机器学习算法的绝佳工具。它集成了三个方面的算法:推荐、聚类和分类。你可以试试这个库。但是你必须学习一些关于Hadoop的基础知识。
对于机器学习,weka 是一个集成了许多算法的体验软件工具包。
线性支持向量机是文本分类问题(与逻辑回归一起)的顶级算法之一。决策树在如此高维的特征空间中受到严重影响。
Pegasos 算法是最简单的线性 SVM 算法之一,并且非常有效。
编辑:多项朴素贝叶斯也适用于文本数据,但通常不如线性 SVM。kNN 可以正常工作,但它是一个已经很慢的算法,并且从未在文本问题的准确性图表中名列前茅。
如果你熟悉 Python,你可以考虑NLTK和scikit-learn。前者专门用于 NLP,而后者是一个更全面的机器学习包(但它有大量的文本处理模块)。两者都是开源的,并且在 SO 上有很大的社区支持。