朴素贝叶斯分类器中的概率非常低

数据挖掘 机器学习 预言 可能性 朴素贝叶斯分类器
2021-09-16 04:02:00

我在 python 中从头设计了 NB 分类器来解决二进制分类问题。共有 220 条记录,其中 85 条属于“是”类,135 条属于“否”类。我的分类器给出了 88% 的准确率。

因此,每当我计算一个属于“是”类的样本的后验概率时,它的数字非常低。例如,我正在预测击球手是否是后起之秀(即样本的概率属于“是”类)。

在这里,成为后起之秀的后验概率,即 P(RS) 在数字上非常低,例如 2.33E-8。但在 E-8 到 E-16 的范围内,不是后起之秀的后验概率也非常低。我用来计算后验概率的一些特征也是 0.1 到 0.01 范围内的小值。

我的问题是如何用百分比表示后验概率,即 P(RS)。如 P(RS)=90%。

PS:我用谷歌搜索了这个问题并尝试了返回负值的 log 方法。

2个回答

如果您没有更多地描述您的计算或显示代码,我无法肯定地告诉您,但我的猜测是您实际上并没有在这里计算后验概率。我敢打赌这只是条件可能性,或者充其量是非标准化的后验。请记住:后验计算具有除法成分。你的呢?您可能忘记除以“证据”。

这个问题有点模糊,所以如果我没有明白这一点,请评论我。你有一个二元分类问题,你想用 NB 来解决它。好吧,然后你通过贝叶斯公式:

P(class|data)=P(data|class)P(class)

这是给定样本点的每个类的表示,即这种表示根据特征值而变化。每个类的简单百分比不需要NB。

如果验证集上一个类的预测概率很低,则意味着它们不是来自该类!如需更详细的答案,请说明您是如何设置训练/测试拆分的,这些小数字是什么?

如果某些数字很奇怪,那么您可能还需要附上您的代码。

更新

我的问题是如何用百分比表示后验概率,即 P(RS)。如 P(RS)=90%。

当你得到概率时,它的 100 倍就是百分比。所以让我们关注概率。

上述公式为分类而简化。完整的公式是

P(class|data)=P(data|class)P(class)P(data)

由于分子是概率,所以它在 0 和 1 之间,它增加了整个分数,但它不用于分类任务,因为它实际上是恒定的!因此,当您想查看后验概率(百分比)时,也许将其包含在您的公式中可以解决您的问题。

希望能帮助到你!