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