为幼稚的贝叶斯训练多少文件?

时间:2015-08-05 21:17:01

标签: machine-learning analytics text-classification document-classification naivebayes

我刚刚从零开始创建自己的朴素贝叶斯模型,并在776个文档上进行了训练。我尝试对文档进行分类,但它在所有三个测试文档中对文档进行了错误分类。它应该具有的类别甚至具有与其他类别相比的所有概率中最低的类别(这是三个测试文档中的两个)。

我应该增加培训文件的数量吗? 我不认为这是我的代码,因为我检查了计算但我不知道,也许compute_numerators函数不知何故错了?对于分子部分我使用了日志,因为下溢问题并总结了术语的概率和概率(number_of_documents_in_category / overall_number_of_documents) http://i.stack.imgur.com/GIwIp.png

超级困惑和沮丧,因为这花了我很长时间,现在我觉得它没有任何意义,因为它甚至没有正确地分类一个文件:(

@Bob Dillon, 嗨,谢谢你的全面回复。我最大的问题是你的意思是可分离的。你的意思是如果类之间的文件有明确的区别吗?我真的不知道如何回答这个问题。数据是按人类分类的,因此可以分离,但是它可能与其他类型的类别如此接近以至于它变得模糊了?也许计算机没有识别出被分类为一件事和另一件事的用词的差异?我必须保留这些类别,我不能重新排列类别,它们必须按原样。我不确定如何在R中进行原型设计,我还不需要接收文本数据并运行它吗?我还需要创建一个标记化等吗?我将研究信息增益和SVM。我可能会回复。谢谢!

2 个答案:

答案 0 :(得分:3)

  

我刚刚从零开始创建了自己的Naive Bayes模型,并在776个文档上进行了培训

Naive Bayes,就像它的名字所说,是一种天真的算法。与现代方法相比,它非常糟糕,如支持向量机或(深)神经网络。你在使用它时应该记住这一点:期望比投掷硬币给你更好的结果,但不是很多。

  

尝试对文件进行分类,但是它在所有三个测试文档中对文档进行了错误分类

只有三个测试文件?这很少,并没有告诉你什么。如果您有x个文档,则至少应使用20%进行测试。另请考虑使用交叉验证。

  

我应该增加培训文件的数量吗?

这会有所帮助,是的。机器学习中的一条经验法则是,更多数据通常会胜过更好的算法。当然,我们无法获得更多数据,或者我们无法承担使用更多数据的处理能力,因此更好的算法非常重要。

为了能够看到改进,您还需要使用更多的测试数据。

总之:测试更多数据。如果您有779个文档,请至少使用100进行测试或执行cross validation。如果你的准确度高于50-60%,那么请高兴,这对于这些数据和朴素贝叶斯来说已经足够了。

答案 1 :(得分:3)

你有很多人在反对你。

  1. 弱维度降低 - 仅停止字词过滤
  2. 多级分类
  3. 弱分类器
  4. 训练数据很少
  5. 您向我们展示了您正在使用的代码,但如果数据不可分,则不会对其进行排序。您确定数据可以分类吗?如果是这样,你期望什么表现?

    在跳转到实现之前,您应该尝试对系统进行原型设计。使用Octave,R或MatLab是一个很好的起点。确保您的数据是可分离的,并且算法对您的数据有效。其他人建议使用SVM和神经网络而不是朴素贝叶斯分类。这是一个很好的建议。每个都需要一些调整才能获得最佳性能。我已经使用Google Prediction API作为我可以从系统中获得的性能的第一顺序检查,然后将其替换为SVM或其他分类器以优化性能并降低成本/延迟等。在潜水过深之前,尽可能快速,轻松地获得基线是很好的。

    如果数据是可分的,那么您给系统提供的帮助就越多。降低特征/维度可消除噪音并帮助分类器表现良好。您可以使用统计分析来减少功能集。我喜欢信息增益,但还有其他人。

    我发现this paper是文本分类的理论处理方法,包括减少特征。

    我成功地使用信息增益来减少功能,并发现this paper是一个非常好的实用指南。

    至于训练数据的数量,那不是那么明确。更多通常更好,但数据的质量也非常重要。如果数据不易分离或基础概率分布与您的测试和野外数据不相似,那么即使数据更多,性能也会很差。换句话说,培训数据的数量很重要,但质量至少同样重要。

    祝你好运!

相关问题