为什么我的朴素贝叶斯分类器只给我接近 0 的概率?

机器算法验证 机器学习 朴素贝叶斯
2022-04-07 12:35:12

我正在使用朴素贝叶斯公式构建一个文本分类器。我还处于开发的早期阶段,但我已经看到我的技术存在问题,我想知道你们是否有想法可以帮助我解决这个问题。

我想要做的是对文本进行评分,以将它们从更有可能在 A 类中排序到不太可能。我只有一门课,我想找出其中包含文本的可能性。

问题是我只能得到接近于零的预测(例如 1,068E-12)。原因是大多数单词在 A 类中的概率低于 0.5。即使我有概率 > 0.5 的单词,这些概率离 1 更远,那么概率 <0.5 离 0 更远。

因此,当我选择概率离 0.05 最远的 N 个单词时,我通常只得到(或至少更多)概率 <0.5。因此,我使用的词(N)越多,概率越接近 0。

是否有一些优化可以帮助解决这个问题(现在我什至不删除停用词,但我打算这样做)?

或者贝叶斯分类器对我的问题来说不是一个糟糕的选择?

1个回答

朴素贝叶斯通常使用像 这是因为我们可以写成 并删除分母,因为它不依赖于类。但是,由于(即有许多可能的文档),忽略它会导致算法的输出非常小,因此这不一定表明您的实现不正确。

argmaxCiP(Ci)P(D|Ci),
P(Ci|D)=P(Ci)P(D|Ci)P(D).
P(D)P(D)<<1

一个实用提示:您可以而且应该做的一件事是使用对数概率的总和而不是概率的乘积来避免下溢错误。与其做 您还需要处理看不见的单词,因为零概率会给您带来问题。

P(D|Ci)=wjDP(wj|Ci),
logP(D|Ci)=wjDlogP(wj|Ci).