机器学习之极大似然估计与贝叶斯估计

原文 链接

一、贝叶斯定理与朴素贝叶斯

        首先介绍一下贝叶斯定理,贝叶斯定理是关于随机事件A和B的条件概率的一则定理。
P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A|B)=\frac{P(B|A)P(A)}{P(B)} P(AB)=P(B)P(BA)P(A)

        其中P(A|B)是在B发生的情况下A发生的可能性。

        在贝叶斯定理中,有以下名词概念需要注意:

  • P(A|B)是在B条件下(B事件发生了)A发生的条件概率,又被称为A的后验概率 (Posterior probability)。

  • P(B|A)是在A条件下(A事件发生了)B发生的条件概率,又被称为B的后验概率 (Posterior probability)。

  • P(A)是A的先验概率 (Prior probability)。

  • P(B)是B的先验概率(Prior probability)。

  • P(B|A)/P(B)称为可能性函数 (Likelyhood),这是一个调整因子,使得预估概率更接近真实概率。

        朴素贝叶斯法 (Naive Bayes) 是基于贝叶斯定理与特征条件独立假设的分类方法。朴素贝叶斯对条件个概率分布做了条件独立性的假设。如下列公式,有n个特征:
P ( X ∣ Y = c k ) = P ( x 1 , x 2 , x 3 , . . . , x n ∣ Y = c k ) = ∏ i = 1 n P ( x i ∣ Y = c k ) P(X|Y=c_k)={P(x_1,x_2,x_3,...,x_n|Y=c_k)}=\prod_{i=1}^nP(x_i|Y=c_k) P(XY=ck)=P(x1,x2,x3,...,xnY=ck)=i=1nP(xiY=ck)
下面举个例子更好的理解朴素贝叶斯:

某个医院早上来了六个门诊的病人,他们的情况如下表所示:

症状职业疾病
打喷嚏护士感冒
打喷嚏农夫过敏
头痛建筑工人脑震荡
头痛建筑工人感冒
打喷嚏教师感冒
头痛教师脑震荡

        现在又来了第七个病人,是一个打喷嚏的建筑工人。请问他患上感冒的概率有多大?

根据贝叶斯定理:

P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A|B)=\frac{P(B|A)P(A)}{P(B)} P(AB)=P(B)P(BA)P(A)

可得

P ( 感 冒 ∣ 打 喷 嚏 × 建 筑 工 人 ) = P ( 打 喷 嚏 × 建 筑 工 人 ∣ 感 冒 ) P ( 感 冒 ) P ( 打 喷 嚏 × 建 筑 工 人 ) P(感冒|打喷嚏\times建筑工人)=\frac{P(打喷嚏\times建筑工人|感冒)P(感冒)}{P(打喷嚏\times建筑工人)} P(×)=P(×)P(×)P()

        由朴素贝叶斯条件独立性的假设可知,"打喷嚏"和"建筑工人"这两个特征是独立的,因此,上面的等式就变成了:

P ( 感 冒 ∣ 打 喷 嚏 a n d 建 筑 工 人 ) = P ( 打 喷 嚏 ∣ 感 冒 ) P ( 建 筑 工 人 ∣ 感 冒 ) P ( 感 冒 ) P ( 打 喷 嚏 ) P ( 建 筑 工 人 ) P(感冒|打喷嚏 and 建筑工人)=\frac{P(打喷嚏|感冒)P(建筑工人|感冒)P(感冒)}{P(打喷嚏)P(建筑工人)} P(and)=P()P()P()P()P()

计算可得:

P ( 感 冒 ∣ 打 喷 嚏 × 建 筑 工 人 ) = 0.66 × 0.33 × 0.5 0.5 × 0.33 = 0.66 P(感冒|打喷嚏\times建筑工人)=\frac{0.66\times0.33\times0.5}{0.5\times0.33}=0.66 P(×)=0.5×0.330.66×0.33×0.5=0.66

        因此,这个打喷嚏的建筑工人,有66%的概率是得了感冒。这就是贝叶斯分类器的基本方法:在统计资料的基础上,依据某些特征,计算各个类别的概率,从而实现分类。


二、极大似然估计

        在实际问题中,由于数据的来源受限于有限的样本数据,先验概率 P(感冒) 和条件概率 P(建筑工人|感冒) 是未知的。打个比方,我们现在的数据样本来源于某个地方的医院,而我们需要预测全国的 P ( 感 冒 ∣ 打 喷 嚏 × 建 筑 工 人 ) P(感冒|打喷嚏\times建筑工人) P(×) 的情况。根据仅有的样本数据进行预测时,一种可行的办法是我们需要先对先验概率和条件概率进行估计,然后再套用贝叶斯分类器。

        最大似然估计的目的就是:利用已知的样本结果,反推最有可能导致这样结果的参数值

        极大似然估计是建立在极大似然原理的基础上的一个统计方法,是概率论在统计学中的应用。极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。通过若干次试验,观察其结果,利用试验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计

举个例子:

        假如有一个罐子,里面有黑白两种颜色的球,数目多少不知,两种颜色的比例也不知。我们想知道罐中白球和黑球的比例,但我们不能把罐中的球全部拿出来数。现在我们可以每次任意从已经摇匀的罐中拿一个球出来,记录球的颜色,然后把拿出来的球再放回罐中。这个过程可以重复,我们可以用记录的球的颜色来估计罐中黑白球的比例。假如在前面的一百次重复记录中,有七十次是白球,请问罐中白球所占的比例最有可能是多少?很多人马上就有答案了:70%。

        这就是最大似然的思想。


三、贝叶斯估计

        用极大似然估计可能会出现所要估计的概率值为0的情况。这时会影响到后验概率的计算结果,使分类产生偏差。解决这一问题的方法是采用贝叶斯估计。

若某个先验概率 P ( Y = c k ) P(Y=c_k) P(Y=ck)的极大似然估计是:

P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) N ,   k = 1 , 2 , . . . , K P(Y=c_k)=\frac{\sum_{i=1}^{N}I(y_i=c_k)}{N},\ k=1,2,...,K P(Y=ck)=Ni=1NI(yi=ck), k=1,2,...,K

设第j个特征 x ( j ) x^{(j)} x(j), 可能取值的集合为 { a j 1 , a j 2 , . . . a j S j } \{a_{j1},a_{j2},...a_{jS_j}\} {aj1,aj2,...ajSj}

条件概率 P ( X ( j ) = a j l ∣ Y = c k ) P(X^{(j)}=a_{jl}|Y=c_k) P(X(j)=ajlY=ck) 的极大似然估计是:

P ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i j = a j l , y i = c k ) ∑ i = 1 N I ( y i = c k ) P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^{N}I(x_i^{j}=a_{jl},y_i=c_k)}{\sum_{i=1}^{N}I(y_i=c_k)} P(X(j)=ajlY=ck)=i=1NI(yi=ck)i=1NI(xij=ajl,yi=ck)

其中 j = 1 , 2 , . . . . , n ;   l = 1 , 2 , . . . , S j ;   k = 1 , 2 , . . . , K . j = 1,2,....,n;\ l=1,2,...,S_j;\ k=1,2,...,K. j=1,2,....,n; l=1,2,...,Sj; k=1,2,...,K.

x i ( j ) x_i^{(j)} xi(j) 是第i个样本的第j个特征;

a j l a_{jl} ajl 是第 j j j 个特征可能取的第 l l l 个值; I I I 为指示函数。

条件概率的贝叶斯估计为:

P ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i j = a j l , y i = c k ) + λ ∑ i = 1 N I ( y i = c k ) + S j λ P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^{N}I(x_i^{j}=a_{jl},y_i=c_k)+λ}{\sum_{i=1}^{N}I(y_i=c_k)+S_jλ} P(X(j)=ajlY=ck)=i=1NI(yi=ck)+Sjλi=1NI(xij=ajl,yi=ck)+λ

式中 λ ≥ 0 λ\geq0 λ0. 等价于在随机变量各个取值的频数上赋予一个正数λ>0. 当 λ=0 就是极大似然估计。常取 λ=1 ,这时称为拉普拉斯平滑。显然,对任何 l = 1 , 2 , . . . , S j l=1,2,...,S_j l=1,2,...,Sj k = 1 , 2 , . . . , K k=1,2,...,K k=1,2,...,K,有

P λ ( X ( j ) = a j l ∣ Y = c k ) > 0 P_λ(X^{(j)}=a_{jl}|Y=c_k)>0 Pλ(X(j)=ajlY=ck)>0

∑ l 1 S j P ( X ( j ) = a j l ∣ Y = c k ) = 1 \sum_{l1}^{S_j}P(X^{(j)}=a_{jl}|Y=c_k)=1 l1SjP(X(j)=ajlY=ck)=1

同样地,先验概率的贝叶斯估计是:

P λ ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) + λ N + K λ P_λ(Y=c_k)=\frac{\sum_{i=1}^{N}I(y_i=c_k)+λ}{N+Kλ} Pλ(Y=ck)=N+Kλi=1NI(yi=ck)+λ

补充:

        指数函数 I ( y i = c k ) I(y_i=c_k) I(yi=ck)的意思是:当 y i = c k y_i=c_k yi=ck时, I ( y i = c k ) I(y_i=c_k) I(yi=ck)的返回值为1,否则返回0.


2019.11.2补充


参考资料

  1. 统计学习方法》,李航著.

  2. Jack-Cui的CSDN博客-Python3《机器学习实战》学习笔记(四):朴素贝叶斯基础篇之言论过滤器.

  3. 知行流浪的CSDN博客-极大似然估计详解.

  4. 阮一峰的网络日志.


欢迎访问我的个人网站

http://chenhao.space

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值