【问题标题】:How to improve the accuracy of a Naive Bayes Classifier?如何提高朴素贝叶斯分类器的准确性?
【发布时间】:2013-08-08 02:48:34
【问题描述】:

我正在使用朴素贝叶斯分类器。关注此tutorial。 对于经过训练的数据,我使用了 308 个问题并将它们分为 26 个类别,这些类别是手动标记的。 在发送数据之前,我正在执行 NLP。在 NLP 中,我正在执行(标点符号删除、标记化、停用词删除和词干提取) 此过滤后的数据用作 mahout 的输入。 我使用 mahout NBC 训练这些数据并获取模型文件。现在当我运行时

mahout testnb 

命令我得到正确分类的实例为 96%。

现在,对于我的测试数据,我使用了 100 个手动标记的问题。当我将经过训练的模型与测试数据一起使用时,我得到的正确分类实例为 1%。 这让我很生气。

谁能建议我做错了什么或建议我一些提高 NBC 性能的方法。?

另外,理想情况下我应该使用多少问题数据来训练和测试?

【问题讨论】:

  • 您有 300 个标记的输入“向量”用于训练?你是认真的吗?
  • @ThomasJungblut 是不是少了 300 个?理想情况下,我们应该为每个班级/类别训练多少个问题?

标签: performance hadoop mahout tf-idf


【解决方案1】:

这似乎是 "overfitting"... 的经典问题...您在训练集上获得了非常高的准确率,但在实际情况下却很低。

您可能需要更多的训练实例。此外,这 26 个类别可能与您拥有的功能不相关。机器学习并不神奇,需要在变量和结果之间建立某种统计关系。实际上,NBC 在这里所做的可能是有效地“记忆”训练集,这对于记忆之外的问题完全没用。

【讨论】:

  • 我已将训练数据集增加到 600 个,测试数据集增加到 100 个,减少了类别,现在是 8 个类别。在没有 NLP 的测试数据上得到了 17% 的准确率。使用 NLP,我得到了 10% 的准确率。在 NLP 执行中(标点符号删除、停用词删除、标记化和词干提取)请给我一些建议。无法弄清楚我做错了什么。我应该使用 NLP 吗?以及我应该增加多少训练和测试数据?
  • @user2331441 我相信你没有做错,这是一个统计问题,假设你已经训练了 80 个类别(每个类别 10 个),那么你的测试集中未来的句子必须有一些相关/相似字。例如,如果问题是“太阳是什么颜色?”你已经训练了“太阳是黄色的”的答案。那么如果未来的问题不包含“颜色”和“太阳”这个词,那么你的答案就不会受到打击,所以如果有人输入问题“地球绕行的恒星是什么阴影?”您的训练数据与刚刚提出的问题之间没有相关性......
  • 你训练的数据越多,你的准确率就越高......(正文越大,你得到命中的可能性就越大,但你得到误报的可能性也越大) ......这只是我迄今为止的经验!
猜你喜欢
  • 2017-12-21
  • 2018-01-13
  • 2012-07-31
  • 2016-08-12
  • 2017-11-06
  • 2017-03-24
  • 2017-11-18
  • 2015-08-27
  • 2017-11-05
相关资源
最近更新 更多