本课程来自深度之眼,部分截图来自课程视频以及李航老师的《统计学习方法》第二版。
公式输入请参考: 在线Latex公式
前言
理解朴素贝叶斯法解决的问题,模型假设、损失函数和估计方法。
详细说明:第4章介绍的朴素贝叶斯法依然适用于分类问题。通过学习第1节,需要了解朴素贝叶斯模型的基本思想和模型假设,需要掌握朴素贝叶斯中,极大似然估计的求解方法及对应的算法;通过学习第2节,理解引入贝叶斯估计的原因及贝叶斯估计的求解方法。通过学习第3节,了解后验概率最大化对应的损失函数
学习目标:
0.导读视频。
1.理解朴素贝叶斯模型的模型假设。
2.理解后验概率最大化与期望损失最小化的关系。
3.掌握极大似然估计的求解过程。
4.掌握贝叶斯估计的求解过程。
5.掌握贝叶斯估计的算法实现。
导入
复习:条件概率
P
(
A
∣
B
)
P(A|B)
P(A∣B)表示在B发生的条件下发生A的概率。
P
(
A
∣
B
)
=
P
(
A
B
)
P
(
B
)
=
P
(
B
∣
A
)
P
(
A
)
P
(
B
)
P(A|B)=\cfrac{P(AB)}{P(B)}=\cfrac{P(B|A)P(A)}{P(B)}
P(A∣B)=P(B)P(AB)=P(B)P(B∣A)P(A)
P
(
A
B
)
P(AB)
P(AB)表示事件A和B都发生的概率,它等于A发生的概率乘以A发生的条件下B发生的概率。
P
(
A
B
)
=
P
(
B
∣
A
)
P
(
A
)
=
P
(
A
∣
B
)
P
(
B
)
P(AB)=P(B|A)P(A)=P(A|B)P(B)
P(AB)=P(B∣A)P(A)=P(A∣B)P(B)
三豆问题
这个例子就是三门问题的翻版,老师很会编。
女朋友和妈妈掉河里了,路人拿出来3颗豆,两颗绿豆1颗红豆。如果我抽中红豆救女朋友,抽中绿豆救妈妈。
我和路人各自抽了一颗,路人发现自己抽中的是绿豆,他想用剩下的那颗和我换,我换不换?换不换豆女朋友活下去的概率一样吗?
直觉来讲:
换不换豆我抽中红豆的概率应该都是1/3。这时路人跟我说他的是绿豆,排除一颗,我抽中红豆的概率是1/2。换不换概率都是1/2。
其实不然,我们根据条件概率的知识进行计算:
设A表示我抽中的是红豆,B表示路人抽中的是绿豆
P
(
A
∣
B
)
=
P
(
B
∣
A
)
P
(
A
)
P
(
B
)
=
1
⋅
1
3
1
=
1
3
P(A|B)=\cfrac{P(B|A)P(A)}{P(B)}=\cfrac{1\cdot\cfrac{1}{3}}{1}=\cfrac{1}{3}
P(A∣B)=P(B)P(B∣A)P(A)=11⋅31=31
这里
P
(
B
∣
A
)
=
1
P(B|A)=1
P(B∣A)=1表示如果我抽中红豆,剩下的是绿豆,路人抽中绿豆的概率为1
P
(
A
)
=
1
3
P(A)=\cfrac{1}{3}
P(A)=31表示我抽中红豆的概率是1/3
P
(
B
)
=
1
P(B)=1
P(B)=1表示路人抽中绿豆的概率,这个事情已经发生了,因此是1。而不是2/3
P
(
A
∣
B
)
=
1
3
P(A|B)=\cfrac{1}{3}
P(A∣B)=31表示在路人抽中绿豆的条件下,我抽中红豆概率只有1/3。
如果要救女朋友,最好和路人交换一下。如果要救妈,最好不要换。
手写数字
假设有一个手写数据集,里面有100条记录,其中第0-9条记录是10个人分别写的0。10-19条是10个人分别写的1。……。第90-99条是10个人分别写的10.
小红写了一个数字X,怎么判断是数字几呢?
朴素贝叶斯工作原理分别计算写X的条件下,是数字Y的概率可以分开计算:
P
(
Y
=
0
∣
X
)
=
?
,
P
(
Y
=
1
∣
X
)
=
?
…
…
,
P
(
Y
=
10
∣
X
)
=
?
P(Y=0|X)=?,P(Y=1|X)=?……,P(Y=10|X)=?
P(Y=0∣X)=?,P(Y=1∣X)=?……,P(Y=10∣X)=?
找到概率值最高的,就是对应的数字。
对于以上手写数据集,我们设数字的类别为
C
k
C_k
Ck,
C
0
C_0
C0表示数字0…。刚才数字判别公式可以修改为
P
(
Y
=
C
k
∣
X
=
x
)
P(Y=C_k|X=x)
P(Y=Ck∣X=x)。
按条件概率的公式,上式可以写为:
P
(
Y
=
C
k
∣
X
=
x
)
=
P
(
X
=
x
∣
Y
=
C
k
)
P
(
Y
=
C
k
)
P
(
X
=
x
)
P(Y=C_k|X=x)=\cfrac{P(X=x|Y=C_k)P(Y=C_k)}{P(X=x)}
P(Y=Ck∣X=x)=P(X=x)P(X=x∣Y=Ck)P(Y=Ck)
分母
P
(
X
=
x
)
=
∑
k
P
(
X
=
x
,
Y
=
C
k
)
P(X=x)=\sum_k P(X=x,Y=C_k)
P(X=x)=∑kP(X=x,Y=Ck),这里相等是因为右边是联合概率,表示二者都发生的情况,又有求和,还是等于左边,例如,天气不是下雨就是晴天,那么
P
(
出
门
)
=
P
(
出
门
∣
下
雨
)
+
P
(
出
门
∣
晴
天
)
P(出门)=P(出门|下雨)+P(出门|晴天)
P(出门)=P(出门∣下雨)+P(出门∣晴天),再根据联合概率公式
P
(
x
,
y
)
=
P
(
x
∣
y
)
P
(
y
)
P(x,y)=P(x|y)P(y)
P(x,y)=P(x∣y)P(y)进一步将分母拆分为:
P
(
X
=
x
)
=
∑
k
P
(
X
=
x
,
Y
=
C
k
)
=
∑
k
P
(
X
=
x
∣
Y
=
C
k
)
P
(
Y
=
C
k
)
P(X=x)=\sum_k P(X=x,Y=C_k)=\sum_k P(X=x|Y=C_k)P(Y=C_k)
P(X=x)=k∑P(X=x,Y=Ck)=k∑P(X=x∣Y=Ck)P(Y=Ck)
把上式代入条件概率公式,并把顺序调整一下:
P
(
Y
=
C
k
∣
X
=
x
)
=
P
(
X
=
x
∣
Y
=
C
k
)
P
(
Y
=
C
k
)
P
(
X
=
x
)
=
P
(
X
=
x
∣
Y
=
C
k
)
P
(
Y
=
C
k
)
∑
k
P
(
X
=
x
∣
Y
=
C
k
)
P
(
Y
=
C
k
)
=
P
(
Y
=
C
k
)
P
(
X
=
x
∣
Y
=
C
k
)
∑
k
P
(
Y
=
C
k
)
P
(
X
=
x
∣
Y
=
C
k
)
(1)
P(Y=C_k|X=x)=\cfrac{P(X=x|Y=C_k)P(Y=C_k)}{P(X=x)}\\ =\cfrac{P(X=x|Y=C_k)P(Y=C_k)}{\sum_k P(X=x|Y=C_k)P(Y=C_k)}\\ =\cfrac{P(Y=C_k)P(X=x|Y=C_k)}{\sum_k P(Y=C_k)P(X=x|Y=C_k)}\tag1
P(Y=Ck∣X=x)=P(X=x)P(X=x∣Y=Ck)P(Y=Ck)=∑kP(X=x∣Y=Ck)P(Y=Ck)P(X=x∣Y=Ck)P(Y=Ck)=∑kP(Y=Ck)P(X=x∣Y=Ck)P(Y=Ck)P(X=x∣Y=Ck)(1)
假设a,b事件相互独立,则有:
P
(
a
,
b
)
=
P
(
a
)
P
(
b
)
P
(
a
,
b
∣
c
)
=
P
(
a
∣
c
)
P
(
b
∣
c
)
P(a,b)=P(a)P(b)\\ P(a,b|c)=P(a|c)P(b|c)
P(a,b)=P(a)P(b)P(a,b∣c)=P(a∣c)P(b∣c)
上面式子中的
X
=
x
X=x
X=x这个实际上是缩写,因为每个图片是有
m
×
m
m×m
m×m个像素组成,如果我们也假设每个像素之间是相互独立的,那么
P
(
X
=
x
∣
Y
=
C
k
)
P(X=x|Y=C_k)
P(X=x∣Y=Ck)可以写成
P
(
X
(
1
)
=
x
(
1
)
,
X
(
2
)
=
x
(
2
)
,
⋯
,
X
(
n
)
=
x
(
n
)
∣
Y
=
C
k
)
=
P
(
X
(
1
)
=
x
(
1
)
∣
Y
=
C
k
)
P
(
X
(
2
)
=
x
(
2
)
∣
Y
=
C
k
)
⋯
P
(
X
(
n
)
=
x
(
n
)
∣
Y
=
C
k
)
=
∏
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
C
k
)
(2)
P(X^{(1)} = x^{(1)},X^{(2)} = x^{(2)},\cdots,X^{(n)} = x^{(n)}|Y=C_k)\\ =P(X^{(1)} = x^{(1)}|Y=C_k)P(X^{(2)} = x^{(2)}|Y=C_k)\cdots P(X^{(n)} = x^{(n)}|Y=C_k)\\ =\prod_nP(X^{(j)} = x^{(j)}|Y=C_k)\tag2
P(X(1)=x(1),X(2)=x(2),⋯,X(n)=x(n)∣Y=Ck)=P(X(1)=x(1)∣Y=Ck)P(X(2)=x(2)∣Y=Ck)⋯P(X(n)=x(n)∣Y=Ck)=n∏P(X(j)=x(j)∣Y=Ck)(2)
这个假设像素之间独立是没办法的选择,按不独立来进行计算,对于第一个像素:
P
(
X
(
1
)
=
x
(
1
)
∣
X
(
2
)
=
x
(
2
)
,
⋯
,
X
(
n
)
=
x
(
n
)
Y
=
C
k
)
P(X^{(1)} = x^{(1)}|X^{(2)} = x^{(2)},\cdots,X^{(n)} = x^{(n)}Y=C_k)
P(X(1)=x(1)∣X(2)=x(2),⋯,X(n)=x(n)Y=Ck)
每个像素都要根据其他所有像素的概率进行计算,量大无解。
把2代入1:
P
(
Y
=
C
k
∣
X
=
x
)
=
P
(
Y
=
C
k
)
∏
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
C
k
)
∑
k
P
(
Y
=
C
k
)
∏
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
C
k
)
(3)
P(Y=C_k|X=x)=\cfrac{P(Y=C_k)\prod_nP(X^{(j)} = x^{(j)}|Y=C_k)}{\sum_k P(Y=C_k)\prod_nP(X^{(j)} = x^{(j)}|Y=C_k)}\tag3
P(Y=Ck∣X=x)=∑kP(Y=Ck)∏nP(X(j)=x(j)∣Y=Ck)P(Y=Ck)∏nP(X(j)=x(j)∣Y=Ck)(3)
因此问题就是要找到使得
X
=
x
X=x
X=x最大的
C
k
C_k
Ck
f
(
x
)
=
arg max
C
k
P
(
Y
=
C
k
∣
X
=
x
)
(4)
f(x)=\underset{C_k}{\argmax}P(Y=C_k|X=x)\tag4
f(x)=CkargmaxP(Y=Ck∣X=x)(4)
公式3中的分母可以写为:
∑
k
P
(
Y
=
C
k
)
∏
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
C
k
)
=
∑
k
∏
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
C
k
)
P
(
Y
=
C
k
)
=
∑
k
∏
n
P
(
X
(
j
)
=
x
(
j
)
,
Y
=
C
k
)
=
∏
n
P
(
X
(
j
)
=
x
(
j
)
)
\sum_k P(Y=C_k)\prod_nP(X^{(j)} = x^{(j)}|Y=C_k)\\ =\sum_k \prod_nP(X^{(j)} = x^{(j)}|Y=C_k)P(Y=C_k)\\ =\sum_k \prod_n P(X^{(j)} = x^{(j)},Y=C_k)\\ = \prod_n P(X^{(j)} = x^{(j)})
k∑P(Y=Ck)n∏P(X(j)=x(j)∣Y=Ck)=k∑n∏P(X(j)=x(j)∣Y=Ck)P(Y=Ck)=k∑n∏P(X(j)=x(j),Y=Ck)=n∏P(X(j)=x(j))
可以看到,分母和
C
k
C_k
Ck无关,是一个常数,因此在4中求最大值的时候不考虑,4变成:
f
(
x
)
=
arg max
C
k
P
(
Y
=
C
k
∣
X
=
x
)
=
P
(
Y
=
C
k
)
∏
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
C
k
)
(5)
f(x)=\underset{C_k}{\argmax}P(Y=C_k|X=x)\\=P(Y=C_k)\prod_nP(X^{(j)} = x^{(j)}|Y=C_k)\tag5
f(x)=CkargmaxP(Y=Ck∣X=x)=P(Y=Ck)n∏P(X(j)=x(j)∣Y=Ck)(5)
公式5中的前面部分:
P
(
Y
=
C
k
)
=
∑
i
=
1
N
I
(
y
i
=
C
k
)
N
,
k
=
1
,
2
,
⋯
,
K
P(Y=C_k)=\cfrac{\sum_{i=1}^NI(y_i=C_k)}{N},k=1,2,\cdots,K
P(Y=Ck)=N∑i=1NI(yi=Ck),k=1,2,⋯,K
就是数据集中
Y
Y
Y属于某个类别
C
k
C_k
Ck的概率,例如数据集中有100个数字,10个0,20个1,70个2,那么
P
(
Y
=
0
)
=
10
%
P(Y=0)=10\%
P(Y=0)=10%,
P
(
Y
=
1
)
=
20
%
P(Y=1)=20\%
P(Y=1)=20%,
P
(
Y
=
2
)
=
20
%
P(Y=2)=20\%
P(Y=2)=20%
公式5中的后面部分中,假设第j个特征
x
(
j
)
x^{(j)}
x(j)可能取值的集合为
{
a
j
1
,
a
j
2
,
a
j
3
,
⋯
,
a
j
S
j
}
\{a_{j1},a_{j2},a_{j3},\cdots,a_{jS_j}\}
{aj1,aj2,aj3,⋯,ajSj},因此可以写为:
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
C
k
)
=
P
(
X
(
j
)
=
a
j
l
∣
Y
=
C
k
)
P(X^{(j)} = x^{(j)}|Y=C_k)=P(X^{(j)} = a_{jl}|Y=C_k)
P(X(j)=x(j)∣Y=Ck)=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)=\cfrac{\sum_{i=1}^NI(x_i^{(j)}= a_{jl},y_i=C_k)}{\sum_{i=1}^NI(y_i=C_k)}
P(X(j)=ajl∣Y=Ck)=∑i=1NI(yi=Ck)∑i=1NI(xi(j)=ajl,yi=Ck)
意思是当类别为
C
k
C_k
Ck时,
x
i
(
j
)
=
a
j
l
x_i^{(j)}= a_{jl}
xi(j)=ajl出现的次数占类别为
C
k
C_k
Ck的样本数目的比例。
朴素贝叶斯算法
参考原文算法4.1
输入:训练数据
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
N
,
y
N
)
}
T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}
T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中
x
i
=
(
x
i
(
1
)
,
x
i
(
2
)
,
x
i
(
3
)
,
⋯
,
x
i
(
n
)
)
T
x_i=\left(x_i^{(1)},x_i^{(2)},x_i^{(3)},\cdots,x_i^{(n)}\right)^T
xi=(xi(1),xi(2),xi(3),⋯,xi(n))T是第
i
i
i个样本的第
j
j
j个特征,
x
i
(
j
)
∈
{
a
j
1
,
a
j
2
,
a
j
3
,
⋯
,
a
j
S
j
}
x_i^{(j)}\in \{a_{j1},a_{j2},a_{j3},\cdots,a_{jS_j}\}
xi(j)∈{aj1,aj2,aj3,⋯,ajSj},
a
j
l
a_{jl}
ajl是第
j
j
j个特征可能取的第
l
l
l个值,
j
=
1
,
2
,
⋯
,
n
;
l
=
1
,
2
,
⋯
,
S
j
;
y
i
∈
{
c
1
,
c
2
,
⋯
,
c
K
}
j=1,2,\cdots,n;l=1,2,\cdots,S_j;y_i\in\{c_1,c_2,\cdots,c_K\}
j=1,2,⋯,n;l=1,2,⋯,Sj;yi∈{c1,c2,⋯,cK};样本
x
x
x
这里
j
j
j是维度,
l
l
l是取值
输出:样本
x
x
x的分类
1.计算先验概率及条件概率
P
(
Y
=
c
k
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
N
,
k
=
1
,
2
,
⋯
,
K
P(Y=c_k)=\cfrac{\sum_{i=1}^NI(y_i=c_k)}{N},k=1,2,\cdots,K
P(Y=ck)=N∑i=1NI(yi=ck),k=1,2,⋯,K
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
)
j
=
1
,
2
,
⋯
,
n
;
l
=
1
,
2
,
⋯
,
S
j
;
k
=
1
,
2
,
⋯
,
K
P(X^{(j)} = a_{jl}|Y=c_k)=\cfrac{\sum_{i=1}^NI(x_i^{(j)}= a_{jl},y_i=c_k)}{\sum_{i=1}^NI(y_i=C_k)}\\ j=1,2,\cdots,n;l=1,2,\cdots,S_j;k=1,2,\cdots,K
P(X(j)=ajl∣Y=ck)=∑i=1NI(yi=Ck)∑i=1NI(xi(j)=ajl,yi=ck)j=1,2,⋯,n;l=1,2,⋯,Sj;k=1,2,⋯,K
2.对于给定的样本
x
=
(
x
(
1
)
,
x
(
2
)
,
x
(
3
)
,
⋯
,
x
(
n
)
)
T
x=\left(x^{(1)},x^{(2)},x^{(3)},\cdots,x^{(n)}\right)^T
x=(x(1),x(2),x(3),⋯,x(n))T
P
(
Y
=
C
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
,
k
=
1
,
2
,
⋯
,
K
P(Y=C_k)\prod_{j=1}^nP(X^{(j)} = x^{(j)}|Y=c_k),k=1,2,\cdots,K
P(Y=Ck)j=1∏nP(X(j)=x(j)∣Y=ck),k=1,2,⋯,K
3.确定样本
x
x
x的分类
y
=
arg max
c
k
P
(
Y
=
C
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
y=\underset{c_k}{\argmax}P(Y=C_k)\prod_{j=1}^nP(X^{(j)} = x^{(j)}|Y=c_k)
y=ckargmaxP(Y=Ck)j=1∏nP(X(j)=x(j)∣Y=ck)
总结
1.条件概率公式表示在已发生事件B的情况下事件A发生的概率。
2.使用条件概率公式逐步导出到最后参数估计的步骤需牢记。(从条件概率公式逐步替换变复杂,最后因为分母是常数再简化)。
3.后续会遇到很多类似的推导过程,一般都是先各种替换变复杂最后简化(先膨胀再瘪下去)。