[统计学习方法]朴素贝叶斯法

贝叶斯定理

其实贝叶斯定理就是一个条件概率公式的变形,即

P(XY)=P(X|Y)P(Y)=P(Y|X)P(X)

整理后可得,

P(Y|X)=P(X|Y)P(Y)P(X)

这么一变之后,我们就可以根据这个公式回答很多问题,例如,假设事件Y是患某一个疾病的概率,X是某检测成阳性的概率,如果我们知道如果患了该疾病,结果检测呈阳性的概率( P(X|Y) ),也就能算出如果检测成阳性则患了该疾病的概率( P(X|Y) ),当然,在其他方面也有很多类似的应用,所以贝叶斯定理是一个很强大的理论。

那么,同样是药物检测的这个例子,如果我们有 n 个药物检测的指标,每个指标有若干个结果,能够用于检测m种病,那么,我们就需要得到这么个东西:

P(Y=yk|X(1)=x(1),X(2)=x(2),...,X(n)=x(n))

我们知道

P(Y=yk|X(1)=x(1),X(2)=x(2),...,X(n)=x(n))

=P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)|Y=yk)P(Y=yk)P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n))

也就是说,如果我们知道了检测结果 X ,想要知道最大可能得了哪种病Y,我们只需要计算出所有的 P(Y=yk|X(1)=x(1),X(2)=x(2),...,X(n)=x(n)) ,并选择一个最大的 yk 即可。

看起来好像很理想,但是,我们需要维护一张非常大的表,即维护 X(1),...,X(n) 的各种取值的联合概率分布,以及他们在条件 Y=yk 下的联合概率分布,如果 n,m 很大,而且每个 X 的取值很多时,这样在计算效率和空间存储上会非常的低。

因此我们需要对此做出点改进。

朴素贝叶斯法

朴素贝叶斯在英文里的写法叫(Naive Bayesian Model),之所以它naive,是因为它用了一个较强的假设,它假设了X(1),...,X(n)是条件独立的,也就是

P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)|Y=yk)

=nj=1P(X(j)=x(j)|Y=yk)

所以我们可以根据这个假设把上面的式子改造一下

P(Y=yk|X(1)=x(1),X(2)=x(2),...,X(n)=x(n))

=P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)|Y=yk)P(Y=yk)P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n))

=P(Y=yk)jP(X(j)=x(j)|Y=yk)P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n))

我们可以发现,对于给定的 X 来说,分母都是一样的,那么在给定的X条件下, P(Y=yk|X(1)=x(1),X(2)=x(2),...,X(n)=x(n)) 的大小只与分子有关,所以我们可以把分母去掉,得到

F(yk)=P(Y=yk)jP(X(j)=x(j)|Y=yk)

那么,我们只要计算出所有的 F(yk) ,选择一个最大的 yk 就是我们预测的结果,因此,可以表示成

y=argmaxykP(Y=yk)jP(X(j)=x(j)|Y=yk)

参数估计

我们简化了式子,但是也需要把这个式子中所有的变量全部求出来,我们发现变量有如下两个:

P(Y=yk)

P(X(j)=x(j)|Y=yk)

第一个式子很好求,即

P(Y=yk)=Ni=1I(yi=yk)N

其中 N 表示数据的个数,yi表示第i个数据的输出,函数 I() 表示真值函数,为真则值为 1 ,为假则函数值为0

那么第二个式子呢,根据条件概率公式,可得

P(X(j)=x(j)|Y=yk)=Ni=1I(x(j)i=x(j),yi=yk)Ni=1I(yi=yk)

其中 x(j)i 表示第i组数据的第j维的输入, yi 表示第i组输出的输出。

我们把式子整理一下(换一下变量写的好看点)就是

P(Y=ck)=Ni=1I(yi=ck)N

P(X(j)=ajl|Y=ck)=Ni=1I(x(j)i=ajl,yi=ck)Ni=1I(yi=ck)

朴素贝叶斯法就是这样,只需要计算出用来学习的数据的这些值,就可以做预测了,但是,因为它假设了一个很强的前提条件,所以这样计算出的结果会有一些误差。

贝叶斯估计

上面那种估计方法叫极大似然估计,而用这种方法会出现一个比较极端的情况。
也就是可能因为分子或分母为0导致计算出来的概率有所偏差,所以我们可以加一个 λ>0 ,常取 λ=1 ,这称为拉普拉斯平滑,加上 λ 之后,我们可以把式子改写成:

P(Y=ck)=Ni=1I(yi=ck)+λN+Kλ

P(X(j)=ajl|Y=ck)=Ni=1I(x(j)i=ajl,yi=ck)+λNi=1I(yi=ck)+Sjλ

其中, Sj 为第 j 维的输入有Sj个取值的可能性,而 K 则表示Y K 种取值的可能性,另外,因为LaTeX在这里排版比较恶心,注明下λ是在 符号之外的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值