朴素贝叶斯
0.参考文献
朴素贝叶斯算法原理小结 作者:刘建平
1.预备知识
1.1概率统计
1.1.1.独立事件
若
A
1
,
A
2
,
A
3
A_1,A_2,A_3
A1,A2,A3相互独立:
则:
P
(
A
1
A
2
)
=
P
(
A
1
)
P
(
A
2
)
P
(
A
1
A
3
)
=
P
(
A
1
)
P
(
A
3
)
P
(
A
2
A
3
)
=
P
(
A
2
)
P
(
A
3
)
P
(
A
1
A
2
A
3
)
=
P
(
A
1
)
P
(
A
2
)
P
(
A
3
)
P(A_1A_2)=P(A_1)P(A_2) \\ P(A_1A_3)=P(A_1)P(A_3) \\ P(A_2A_3)=P(A_2)P(A_3) \\ P(A_1A_2A_3)=P(A_1)P(A_2)P(A_3)
P(A1A2)=P(A1)P(A2)P(A1A3)=P(A1)P(A3)P(A2A3)=P(A2)P(A3)P(A1A2A3)=P(A1)P(A2)P(A3)
1.1.2.条件概率(Conditional probability)
事件
X
X
X在事件
Y
Y
Y发生的条件下发生的概率,公式:
P
(
X
∣
Y
)
=
P
(
X
,
Y
)
P
(
Y
)
P
(
Y
∣
X
)
=
P
(
X
,
Y
)
P
(
X
)
P(X|Y)= \frac{P(X,Y)}{P(Y)} \\ P(Y|X)= \frac{P(X,Y)}{P(X)}
P(X∣Y)=P(Y)P(X,Y)P(Y∣X)=P(X)P(X,Y)。
条件概率的分母不是概率空间的全部,而是条件A划定的子集范围
1.1.3.联合概率(Joint probability)
表示两个随机变量
X
X
X和
Y
Y
Y既要满足
X
X
X又要满足
Y
Y
Y的概率
P
(
X
,
Y
)
P(X,Y)
P(X,Y)(也可以写成
P
(
X
Y
)
P(XY)
P(XY)),多维要考虑所有维度同时变。
联合概率是事件A和事件B同时满足的概率,和条件概率的区别在于联合概率的分母是整个概率空间1。
1.1.4.边缘概率(Marginal Probability)
相对于联合概率而言的的,虽然有两个变量 X , Y X,Y X,Y,但是可以只考虑 X X X或者 Y Y Y的分部,好像另外一个不存在一样, P ( X = a ) ∑ b P ( X = a , Y = b ) P ( X = b ) ∑ a P ( X = a , Y = b ) P(X=a)\sum_b P(X=a, Y=b)\\ P(X=b)\sum_a P(X=a, Y=b) P(X=a)b∑P(X=a,Y=b)P(X=b)a∑P(X=a,Y=b)
1.1.5.全概率
事件
A
1
,
A
2
,
⋯
,
A
n
A_1,A_2,\cdots,A_n
A1,A2,⋯,An形成样本空间的一个划分;
事件
B
B
B可以分解成不相交的
n
n
n个事件的并,即:
B
=
(
A
1
∩
B
)
∪
(
A
2
∩
B
)
∪
(
A
3
∩
B
)
∪
⋯
∪
(
A
n
∩
B
)
B=(A_1\cap B)\cup (A_2\cap B) \cup (A_3\cap B)\cup \cdots \cup (A_n\cap B)
B=(A1∩B)∪(A2∩B)∪(A3∩B)∪⋯∪(An∩B),即
P
(
B
)
=
P
(
A
1
∩
B
)
∪
P
(
A
2
∩
B
)
∪
P
(
A
3
∩
B
)
∪
⋯
∪
P
(
A
n
∩
B
)
P(B)=P(A_1\cap B)\cup P(A_2\cap B) \cup P(A_3\cap B)\cup \cdots \cup P(A_n\cap B)
P(B)=P(A1∩B)∪P(A2∩B)∪P(A3∩B)∪⋯∪P(An∩B),利用条件概率定义
P
(
A
i
∩
B
)
=
P
(
A
i
)
P
(
B
∣
A
i
)
P(A_i \cap B)=P(A_i)P(B|A_i)
P(Ai∩B)=P(Ai)P(B∣Ai),进一步得
P
(
B
)
=
P
(
B
∣
A
1
)
P
(
A
1
)
+
⋯
+
P
(
B
∣
A
n
)
P
(
A
n
)
P(B)=P(B|A_1)P(A_1) + \cdots +P(B|A_n)P(A_n)
P(B)=P(B∣A1)P(A1)+⋯+P(B∣An)P(An),主要用于
P
(
B
)
P(B)
P(B)难以计算时,但是若条件概率
P
(
B
∣
A
i
)
P(B|A_i)
P(B∣Ai)已知时,就很容易计算出
P
(
B
)
P(B)
P(B)。
全概率公式说明了:1.边缘概率与联合概率的关系,而条件概率公式则说明了联合概率与条件概率的关系;2.边缘概率可以由联合概率对另一个随机事件求和(或积分)求得:
p
(
x
)
=
∫
z
p
(
x
,
z
)
d
z
=
∫
z
p
(
x
∣
z
)
p
(
z
)
d
z
p(x)=\int_zp(x,z)dz=\int_zp(x|z)p(z)dz
p(x)=∫zp(x,z)dz=∫zp(x∣z)p(z)dz,与前面的(这里是连续性,前面是离散性)对应起来了。
可以这样理解:全概率就是表达达到某种目的,有多种方式,每种方式又有对应的成功率,问达到目的概率有多少?
就是把达到目的的所有情况加起来。
1.1.6.概率密度函数
如何通俗的理解概率密度函数? - 我不知道的回答 - 知乎
我们一直所说的概率密度函数就是只我们想要求面积时候的那个图形的表达式
。
1.1.7.期望和均值的区别
期望是指某件事大量发生后的平均结果,反应了随机变量平均取值的大小。
计算期望的公式:
E
[
X
]
=
∑
k
=
1
K
x
k
p
k
\mathbb{E}[X]=\sum_{k=1}^K x_kp_k
E[X]=∑k=1Kxkpk,其中
x
x
x为
X
X
X的取值,
p
p
p为在
X
X
X为该取值的概率,
K
K
K为
x
x
x可取值的数量。
期望与平均值之间的关系:
∑
k
=
1
K
n
k
x
k
N
=
∑
k
=
1
K
n
k
x
k
n
k
N
=
∑
k
=
1
K
n
k
x
k
p
k
=
E
[
X
]
\frac{\sum_{k=1}^Kn_kx_k}{N}=\sum_{k=1}^Kn_kx_k\frac{n_k}{N}=\sum_{k=1}^Kn_kx_kp_k=\mathbb{E}[X]
N∑k=1Knkxk=∑k=1KnkxkNnk=∑k=1Knkxkpk=E[X]
期望和均值的区别 - 忆臻的文章 - 知乎
随机变量
X
i
X_i
Xi发生的概率为
P
(
X
i
)
P(X_i)
P(Xi),则其数学期望为
E
[
X
i
]
=
∑
i
X
i
P
(
X
i
)
\mathbb{E}[X_i]=\sum_i X_i P(X_i)
E[Xi]=i∑XiP(Xi)
设
f
(
X
)
f(X)
f(X)为连续型随机事件的密度函数,那么在
X
X
X点的概率为
P
(
X
)
=
f
(
X
)
d
X
P(X)=f(X)dX
P(X)=f(X)dX,则对应的数学期望为
E
[
X
i
]
=
∫
X
X
f
(
X
)
d
X
\mathbb{E}[X_i]=\int_X Xf(X)dX
E[Xi]=∫XXf(X)dX
期望是与概率值联系在一起的,如果说概率是频率随样本趋于无穷的极限 ,期望就是平均数随样本趋于无穷的极限,可以看出均值和期望的联系也是大数定理联系起来的。
概率是频率随样本趋于无穷的极限,期望是平均数随样本趋于无穷的极限。
评论中:个人理解:均值为多个随机变量的和再除以个数,相当于还是一个随机变量,当数量足够多的时候,这个随机变量会收敛,这个收敛的值为期望。
2.贝叶斯定理
2.1 前言
对于大多数的分类算法,比如决策树,KNN,逻辑回归,支持向量机等,他们都是判别方法,也就是直接学习出特征输出Y和特征X之间的关系,要么是决策函数 Y = f ( X ) Y=f(X) Y=f(X),要么是条件分布 P ( Y ∣ X ) P(Y|X) P(Y∣X)。但是朴素贝叶斯却是生成方法,也就是直接找出特征输出 Y Y Y和特征 X X X的联合分布 P ( X , Y ) P(X,Y) P(X,Y),然后用 P ( Y ∣ X ) = P ( X , Y ) P ( X ) P(Y|X)=\frac{P(X,Y)}{P(X)} P(Y∣X)=P(X)P(X,Y)得出。
2.2 朴素贝叶斯模型
已知
T
=
{
(
x
1
,
y
1
)
,
⋯
,
(
x
m
,
y
m
)
}
=
{
(
x
1
(
1
)
,
⋯
,
x
n
(
1
)
,
y
1
)
,
⋯
,
(
x
1
(
m
)
,
⋯
,
x
n
(
m
)
,
y
1
)
}
T=\{(x_1,y_1),\cdots,(x_m,y_m)\}=\{(x_1^{(1)},\cdots,x_n^{(1)},y_1),\cdots,(x_1^{(m)},\cdots,x_n^{(m)},y_1)\}
T={(x1,y1),⋯,(xm,ym)}={(x1(1),⋯,xn(1),y1),⋯,(x1(m),⋯,xn(m),y1)},其中
X
∈
R
n
,
x
i
∈
X
X\in \mathbb{R}^n,x_i \in X
X∈Rn,xi∈X即有
m
m
m个样本,每个样本有
n
n
n个特征,特征输出有
K
K
K个类别,定义为
C
1
,
⋯
,
C
k
C_1,\cdots,C_k
C1,⋯,Ck
从样本中可以学习得到朴素贝叶斯的先验分布
P
(
Y
=
C
k
)
P(Y=C_k)
P(Y=Ck)和学习到条件概率分布
P
(
X
=
x
∣
Y
=
C
k
)
=
P
(
X
1
=
x
1
,
⋯
,
X
n
=
x
n
∣
Y
=
C
k
)
P(X=x|Y=C_k)=P(X_1=x_1,\cdots,X_n=x_n|Y=C_k)
P(X=x∣Y=Ck)=P(X1=x1,⋯,Xn=xn∣Y=Ck),这样就可以用贝叶斯公式得到X和Y的联合分布
P
(
X
,
Y
=
C
k
)
=
P
(
Y
=
C
k
)
P
(
X
=
x
∣
Y
=
C
k
)
=
P
(
X
1
=
x
1
,
⋯
,
X
n
=
x
n
∣
Y
=
C
k
)
\begin{aligned}P(X,Y=C_k)&=P(Y=C_k)P(X=x|Y=C_k)\\ &= P(X_1=x_1,\cdots,X_n=x_n|Y=C_k)\end{aligned}
P(X,Y=Ck)=P(Y=Ck)P(X=x∣Y=Ck)=P(X1=x1,⋯,Xn=xn∣Y=Ck)
朴素贝叶斯模型在这里做了一个大胆的假设,即X的n个维度之间相互独立,这样就可以得出:
P
(
X
1
=
x
1
,
⋯
,
X
n
=
x
n
)
=
P
(
X
1
=
x
1
∣
Y
=
C
k
)
⋯
P
(
X
n
=
x
n
∣
Y
=
C
k
)
P(X_1=x_1,\cdots,X_n=x_n)=P(X_1=x_1|Y=C_k)\cdots P(X_n=x_n|Y=C_k)
P(X1=x1,⋯,Xn=xn)=P(X1=x1∣Y=Ck)⋯P(Xn=xn∣Y=Ck)
为什么要假设这样?也就是为什么叫朴素
有
m
m
m个样本,每个样本有
n
n
n个特征,特征输出有
K
K
K个类别,
S
j
S_j
Sj表示第j个特征取值的可能性的个数,那么总个数就
K
∏
j
=
1
m
S
j
K\prod_{j=1}^m S_j
K∏j=1mSj,而总个数太大了,会导致联合概率分布算不出来,所以才假设。
我们的问题是给定测试集的一个新样本特征
(
x
1
(
t
e
s
t
)
,
⋯
,
x
n
(
t
e
s
t
)
)
(x_1^{(test)},\cdots,x_n^{(test)})
(x1(test),⋯,xn(test))我们如何判断它属于哪个类型?
3.最小化损失函数的期望风险和最大化后验概率一样
得到了朴素贝叶斯模型,下面就要定义损失函数,在朴素贝叶斯方法中用到0-1损失函数:
L
(
Y
,
f
(
X
)
)
=
{
1
,
Y
≠
f
(
X
)
0
,
Y
=
f
(
X
)
L(Y,f(X))=\begin{cases} 1,Y \neq f(X) \\ 0,Y=f(X) \end{cases}
L(Y,f(X))={1,Y=f(X)0,Y=f(X),
f
(
X
)
f(X)
f(X)是分类决策函数,
Y
Y
Y是对应的分类,输出空间为
{
c
1
,
⋯
,
c
K
}
\{c_1,\cdots,c_K\}
{c1,⋯,cK},当两者相等,证明分类正确,没有损失,反之记为1,有损失。
这个损失函数对应的期望是:
R
(
f
)
=
E
[
L
(
Y
,
f
(
X
)
)
]
R(f)=\mathbb{E}[L(Y,f(X))]
R(f)=E[L(Y,f(X))],期望风险最小化。期望风险的含义是:模型关于联合分布的期望损失,学习的目标就是选择期望风险最小的模型。
因为期望的定义是值出现的概率乘以具体值之和,所以上式可转换为损失函数与联合概率之积的积分:
R
(
f
)
=
E
[
L
(
Y
,
f
(
X
)
)
]
=
∫
x
,
y
L
(
y
,
f
(
x
)
)
P
(
x
,
y
)
d
x
d
y
=
∫
x
,
y
L
(
y
,
f
(
x
)
)
P
(
y
∣
x
)
P
(
x
)
d
x
d
y
=
∫
x
∫
y
L
(
y
,
f
(
x
)
)
P
(
y
∣
x
)
d
y
P
(
x
)
d
x
\begin{aligned}R(f)&=\mathbb{E}[L(Y,f(X))]\\&=\int_{x,y} L(y,f(x))P(x,y)dxdy \\ &=\int_{x,y} L(y,f(x))P(y|x)P(x)dxdy \\ &=\int_{x} \int_{y} L(y,f(x))P(y|x)dyP(x)dx\end{aligned}
R(f)=E[L(Y,f(X))]=∫x,yL(y,f(x))P(x,y)dxdy=∫x,yL(y,f(x))P(y∣x)P(x)dxdy=∫x∫yL(y,f(x))P(y∣x)dyP(x)dx
在上式的推导中用了联合概率,边缘概率和条件概率的关系。
而
L
(
y
,
f
(
x
)
)
>
0
,
P
(
y
∣
x
)
>
0
→
∫
y
L
(
y
,
f
(
x
)
)
P
(
y
∣
x
)
d
y
>
0
L(y,f(x))>0,P(y|x)>0\rightarrow \int_{y} L(y,f(x))P(y|x)dy >0
L(y,f(x))>0,P(y∣x)>0→∫yL(y,f(x))P(y∣x)dy>0,而当
X
i
=
x
i
X_i=x_i
Xi=xi时,
P
(
X
i
=
x
i
)
P(X_i=x_i)
P(Xi=xi)为常数,所以:
f
(
x
)
=
arg min
y
∈
Y
∑
k
=
1
K
L
(
c
k
,
y
)
P
(
y
=
c
k
∣
X
=
x
)
=
arg min
y
∈
Y
∑
k
=
1
K
P
(
y
≠
c
k
∣
X
=
x
)
,是因为损失函数表示当分类错误时取
1
(
0
表示对了,不用),那么我们只需要最小化分类错误的概率
=
arg min
y
∈
Y
(
1
−
P
(
y
=
c
k
∣
X
=
x
)
)
=
arg max
y
∈
Y
(
y
=
c
k
∣
X
=
x
)
\begin{aligned}f(x) &= \argmin_{y\in Y}\sum_{k=1}^K L(c_k,y)P(y=c_k|X=x)\\ &= \argmin_{y\in Y}\sum_{k=1}^K P(y\neq c_k|X=x) ,是因为损失函数表示当分类错误时取1(0表示对了,不用),那么我们只需要最小化分类错误的概率\\ &=\argmin_{y\in Y}(1-P(y=c_k|X=x)) \\ &=\argmax_{y\in Y}(y=c_k|X=x) \end{aligned}
f(x)=y∈Yargmink=1∑KL(ck,y)P(y=ck∣X=x)=y∈Yargmink=1∑KP(y=ck∣X=x),是因为损失函数表示当分类错误时取1(0表示对了,不用),那么我们只需要最小化分类错误的概率=y∈Yargmin(1−P(y=ck∣X=x))=y∈Yargmax(y=ck∣X=x)
最后推导出在朴素贝叶斯分类器中,期望风险最小化等价于后验概率最大化。
通常意义上的贝叶斯推断公式就是:
C
r
e
s
=
arg max
C
k
P
(
Y
=
C
k
)
∏
j
=
1
n
P
(
X
j
(
t
e
s
t
)
=
x
j
∣
Y
=
C
k
)
C_{res} = \argmax_{C_k}P(Y=C_k)\prod_{j=1}^nP(X_j^{(test)}=x_j|Y=C_k)
Cres=argmaxCkP(Y=Ck)∏j=1nP(Xj(test)=xj∣Y=Ck)
4.处理概率为0的情况(拉普拉斯平滑)
有时,某些类别在样本中没有出现,这样可能导致
P
(
x
i
∣
Y
=
C
k
)
P(x_i|Y=C_k)
P(xi∣Y=Ck)为0,这样会影响后验的估计,为了解决这种情况,我们引入了拉普拉斯平滑,它的思想非常简单,就是对每个类别下所有划分的计数加1,这样如果训练样本集数量充分大时,并不会对结果产生影响,并且解决了上述频率为0的尴尬局面。即此时有:
其中
a
j
l
a_{jl}
ajl,代表第
j
j
j个特征的第
l
l
l个选择,
S
j
S_j
Sj代表第
j
j
j个特征的个数,
K
K
K代表种类的个数。
为1,这也很好理解,加入拉普拉斯平滑之后,避免了出现概率为0的情况,又保证了每个值都在0到1的范围内,又保证了最终和为1的概率性质!
5.小结
P ( x 1 , x 2 , x 3 , ⋯ ∣ y = 1 ) = P ( x 1 ∣ y = 1 ) P ( x 2 ∣ y = 1 ) P ( x 3 ∣ y = 1 ) ⋯ P(x_1,x_2,x_3,\cdots|y=1)=P(x_1|y=1)P(x_2|y=1)P(x_3|y=1)\cdots P(x1,x2,x3,⋯∣y=1)=P(x1∣y=1)P(x2∣y=1)P(x3∣y=1)⋯,若各项的值太小如: 0.0 1 2 0 0.01^20 0.0120,会导致under flow,所以一般加上 log \log log,这样乘变成加就可以了。
6.补充
例:
Y
Y
Y分为两类
c
1
,
c
2
c_1,c_2
c1,c2,相应参数为
θ
1
\theta_1
θ1,假设参数服从均匀分布
U
(
0
,
1
)
U(0,1)
U(0,1),求参数
θ
1
\theta_1
θ1的贝叶斯估计。
参数
θ
1
\theta_1
θ1的先验概率
f
(
θ
1
)
=
1
f(\theta_1)=1
f(θ1)=1,因为
U
(
0
,
1
)
=
1
1
−
0
=
1
U(0,1)=\frac{1}{1-0}=1
U(0,1)=1−01=1
已知
θ
1
\theta_1
θ1时
Y
Y
Y的条件概率
g
(
Y
∣
θ
1
)
=
{
θ
1
,
Y
=
c
1
1
−
θ
1
,
Y
=
c
2
g(Y|\theta_1)=\begin{cases}\theta_1,Y=c_1\\1-\theta_1,Y=c_2\end{cases}
g(Y∣θ1)={θ1,Y=c11−θ1,Y=c2
P ( θ ∣ Y ) = P ( Y ∣ θ ) P ( θ ) P ( Y ) P(\theta|Y)=\frac{P(Y|\theta)P(\theta)}{P(Y)} P(θ∣Y)=P(Y)P(Y∣θ)P(θ),样本为 { y 1 , ⋯ , y n } \{y_1,\cdots,y_n\} {y1,⋯,yn},类别 c 1 c_1 c1有 N 1 N_1 N1个, c 2 c_2 c2有 N − N 1 N-N_1 N−N1个,似然: θ 1 N 1 ( 1 − θ 1 ) N − N 1 \theta_1^{N_1}(1-\theta_1)^{N-N_1} θ1N1(1−θ1)N−N1
参数最大化:
arg max
θ
1
[
θ
1
N
1
(
1
−
θ
1
)
N
−
N
1
]
\argmax_{\theta_1}[\theta_1^{N_1}(1-\theta_1)^{N-N_1}]
θ1argmax[θ1N1(1−θ1)N−N1],可以使用求导法来求解,解得
θ
1
=
N
1
N
\theta_1=\frac{N_1}{N}
θ1=NN1,只要假设先验为均匀分布,贝叶斯变成了频率。
P
λ
(
Y
=
c
k
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
λ
N
+
K
λ
P_\lambda(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)+\lambda}{N+K\lambda}
Pλ(Y=ck)=N+Kλ∑i=1NI(yi=ck)+λ,
对公式简化:记
∑
i
=
1
N
I
(
y
i
=
c
k
)
\sum_{i=1}^NI(y_i=c_k)
∑i=1NI(yi=ck)为
N
k
N_k
Nk,
P
λ
(
Y
=
c
k
)
P_\lambda(Y=c_k)
Pλ(Y=ck)记为
θ
k
\theta_k
θk,原式就转变为
(
θ
k
N
−
N
k
)
+
λ
(
K
θ
k
−
1
)
=
0
(\theta_kN-N_k)+\lambda(K\theta_k-1)=0
(θkN−Nk)+λ(Kθk−1)=0,若
(
θ
k
N
−
N
k
)
=
0
(\theta_kN-N_k)=0
(θkN−Nk)=0就是极大似然,
K
θ
k
−
1
=
0
K\theta_k-1=0
Kθk−1=0就是先验概率,所以贝叶斯估计就是极大似然+先验的凸组合。
若上式
λ
=
1
\lambda=1
λ=1,就是拉普拉斯平滑。