在朴素贝叶斯中的概率估计中的 m 应该被视为啥

Posted

技术标签:

【中文标题】在朴素贝叶斯中的概率估计中的 m 应该被视为啥【英文标题】:What should be taken as m in m estimate of probability in Naive Bayes在朴素贝叶斯中的概率估计中的 m 应该被视为什么 【发布时间】:2016-03-22 17:20:21 【问题描述】:

在朴素贝叶斯的概率估计中,m 应该取什么? 所以对于这个例子

我应该取什么 m 值? 我可以认为是 1。 这里 p=先验概率=0.5。

那么我可以取 P(a_i|selected)=(n_c+ 0.5)/ (3+1)

对于朴素贝叶斯文本分类,给定的 P(W|V)=

在书中它说这是通过让 一致的先验和 m 等于词汇表的大小从 m 估计中采用的。 但是如果我们只有 2 个类,那么 p=0.5。那么mp怎么可能是1呢?不应该是|vocabulary|*0.5吗?这个方程是如何从m-estimate得到的?


在计算属性职业的概率时,由于先验概率为0.5,取m=1

P(teacher|selected)=(2+0.5)/(3+1)=5/8  
P(farmer|selected)=(1+0.5)/(3+1)=3/8  
P(Business|Selected)=(0+0.5)/(3+1)= 1/8    

但是类概率加起来不应该是 1 吗?在这种情况下不是。

【问题讨论】:

【参考方案1】:

是的,您可以使用 m=1。根据wikipedia,如果您选择 m=1,则称为拉普拉斯平滑。 m 通常选择较小(我读到 m=2 也被使用)。特别是如果您总共没有那么多样本,因为较高的 m 会使您的数据更加扭曲。

背景信息:参数m也称为伪计数(虚例),用于additive smoothing。它可以防止概率为 0。零概率是非常有问题的,因为它将任何乘法都设为 0。我在本书预览here 中找到了一个很好的例子来说明这个问题(搜索伪计数)

【讨论】:

【参考方案2】:

“m 概率估计”令人困惑。

在给定的例子中,m 和 p 应该是这样的。

m = 3 (* this could be any value. you can specify this.)
p = 1/3 = |v| (* number of unique values in the feature)

如果使用m=|v| then m*p=1,,则称为拉普拉斯平滑。 “m 概率估计” 是拉普拉斯平滑的广义版本。

在上面的例子中你可能认为 m=3 太多了,那么你可以像这样将 m 减少到 0.2。

【讨论】:

【参考方案3】:

我认为统一的先验应该是 1/3,而不是 1/2。这是因为您有 3 个职业,因此您为每个职业分配了相等的先验概率。像这样,mp=1,你列出的概率总和为 1。

【讨论】:

【参考方案4】:

从 p = 统一先验,m 等于词汇表的大小。

会得到:

【讨论】:

以上是关于在朴素贝叶斯中的概率估计中的 m 应该被视为啥的主要内容,如果未能解决你的问题,请参考以下文章

朴素贝叶斯:基于概率论的分类模型

机器学习 | Sklearn中的朴素贝叶斯全解

机器学习面试题——朴素贝叶斯

无法在朴素贝叶斯中训练模型

如何在高斯朴素贝叶斯中获得特征重要性

计算朴素贝叶斯分类中的概率