原文 链接
一、贝叶斯定理与朴素贝叶斯
首先介绍一下贝叶斯定理,贝叶斯定理是关于随机事件A和B的条件概率的一则定理。
P
(
A
∣
B
)
=
P
(
B
∣
A
)
P
(
A
)
P
(
B
)
P(A|B)=\frac{P(B|A)P(A)}{P(B)}
P(A∣B)=P(B)P(B∣A)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(X∣Y=ck)=P(x1,x2,x3,...,xn∣Y=ck)=i=1∏nP(xi∣Y=ck)
下面举个例子更好的理解朴素贝叶斯:
某个医院早上来了六个门诊的病人,他们的情况如下表所示:
症状 | 职业 | 疾病 |
---|---|---|
打喷嚏 | 护士 | 感冒 |
打喷嚏 | 农夫 | 过敏 |
头痛 | 建筑工人 | 脑震荡 |
头痛 | 建筑工人 | 感冒 |
打喷嚏 | 教师 | 感冒 |
头痛 | 教师 | 脑震荡 |
现在又来了第七个病人,是一个打喷嚏的建筑工人。请问他患上感冒的概率有多大?
根据贝叶斯定理:
P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A|B)=\frac{P(B|A)P(A)}{P(B)} P(A∣B)=P(B)P(B∣A)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)=N∑i=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)=ajl∣Y=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)=ajl∣Y=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)=ajl∣Y=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)=ajl∣Y=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 l1∑SjP(X(j)=ajl∣Y=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补充
参考资料
-
《统计学习方法》,李航著.