使用朴素贝叶斯模型获得良好结果所需的最少特征数是多少?

Posted

技术标签:

【中文标题】使用朴素贝叶斯模型获得良好结果所需的最少特征数是多少?【英文标题】:What's the minimum number of features you need to get good results with a Naive Bayes model? 【发布时间】:2021-03-30 19:54:44 【问题描述】:

我一直在读到,朴素贝叶斯比许多其他机器学习算法需要更少的特征。但是,使用朴素贝叶斯模型获得良好结果(90% 准确度)实际需要的最少特征数是多少?我知道对此没有客观的答案——这取决于你的具体特征以及你想要学习的具体内容——但我正在寻找一个数字的大致答案。

我问这个问题是因为我有一个包含大约 280 个特征的数据集,并且想了解这是否太少而无法与朴素贝叶斯一起使用。 (我尝试在我的数据集上运行朴素贝叶斯,虽然我得到了 86% 的准确率,但我不能相信这个数字,因为我的数据不平衡,我相信这可能是高准确率的原因。我目前正在尝试解决这个问题。)

如果它是相关的:我正在处理的确切问题是为***文章生成时间标签。很多时候,***文章的信息框包含一个日期。然而,这个日期很多时候出现在文章的文本中,但在信息框中却不见了。我想使用朴素贝叶斯来确定我们在文章文本中找到的所有日期中应该放置在信息框中的日期。每次我找到一个带有日期的句子时,我都会把它变成一个特征向量——列出我在哪个段落中找到了这个,这个特定的日期在文章中出现了多少次,等等。我把自己限制在一个小范围内***文章的子集——只是苹果文章——结果,我只有 280 个左右的特性。知道这是否有足够的数据吗?

谢谢!

【问题讨论】:

为了记录,这种问题更适合datascience.stackexchange.com 【参考方案1】:

我知道对此没有客观的答案——这取决于你的确切特征以及你想要学习的具体内容——但我正在寻找一个数字的大致答案。

嗯,你自己回答了这个问题,但你仍然希望有一个客观的答案;)

不可能有任何客观的答案(无论是否准确),因为它取决于数据,即特征和类别之间的关系。很容易找到一些简单问题的示例,其中只有几个特征就足以实现完美的性能,也很容易创建一个包含数百万甚至无法达到平庸性能的随机特征的数据集。

良好的结果(90% 准确率)

关于性能的相似点:有些任务 90% 的准确率是平庸的,有些任务的准确率是 60%,这取决于问题的难易程度(即在数据中找到有助于预测的模式的难易程度答案)。

我之所以问这个问题,是因为我有一个包含大约 280 个特征的数据集,并且想了解这是否是太少的特征,无法与朴素贝叶斯一起使用。

根据我之前的观察,肯定不会太少。但这也取决于有多少实例,特别是比率特征/实例。如果实例太少,模型将严重过度拟合 NB。

我的数据不平衡,我认为这可能是造成高精度的原因

良好的观察:准确性不是不平衡数据的适当评估指标。原因很简单:如果大多数类代表 86% 的实例,分类器可以只用这个类标记所有实例并获得 86% 的准确率,即使它没有任何用处。您应该改用精度、召回率和 F 分数(基于少数类)。

【讨论】:

以上是关于使用朴素贝叶斯模型获得良好结果所需的最少特征数是多少?的主要内容,如果未能解决你的问题,请参考以下文章

朴素贝叶斯(Naive Bayes)算法

干货 | 朴素贝叶斯算法

朴素贝叶斯(Naive Bayesian)

朴素贝叶斯

Sklearn:为连续特征、多个标签选择朴素贝叶斯模型

朴素贝叶斯概率模型在使用前可以进行特征融合吗