- 1. 朴素贝叶斯的学习与分类
- 1.1 基本方法
- 1.2 后验概率最大化的含义
- 2. 朴素贝叶斯法的参数估计
- 2.1 极大似然估计
- 2.2 学习与分类算法
- 2.3 贝叶斯估计
- 3. 总结
朴素贝叶斯法(Naive Bayes)是基于 贝叶斯定理与 特征条件独立假设的分类方法。 对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入 x x x ,利用贝叶斯定理求出后验概率最大的 y y y。 1. 朴素贝叶斯的学习与分类 1.1 基本方法
设输入空间 X ⊆ R n mathcal{X} subseteq R^n X⊆Rn为n维向量的集合,输出空间为类标记集合 Y = { c 1 , c 2 , . . . , c K } mathcal{Y}={c_1,c_2,...,c_K} Y={c1,c2,...,cK}。输入为特征向量 x ∈ X xin mathcal{X} x∈X,输出为类标记(class label) y ∈ Y y in mathcal{Y} y∈Y。 X X X是定义在输入空间 X mathcal{X} X上的随机向量, Y Y Y是定义在输出空间 Y mathcal{Y} Y上的随机变量, P ( X , Y ) P(X,Y) P(X,Y)是 X X X和 Y Y Y的联合概率分布。训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T={(x_1,y_1),(x_2,y_2),...,(x_N,y_N)} T={(x1,y1),(x2,y2),...,(xN,yN)},由 P ( X , Y ) P(X,Y) P(X,Y)独立同分布产生。
朴素贝叶斯法通过训练数据集学习联合概率分布 P ( X , Y ) P(X,Y) P(X,Y)。具体地,学习以下先验概率分布以及条件概率分布。
- 先验概率分布 P ( Y = c k ) , k = 1 , 2 , . . . , K P(Y=c_k),k=1,2,...,K P(Y=ck),k=1,2,...,K
- 条件概率分布: P ( X = x ∣ Y = c k ) = P ( X ( 1 ) = x ( 1 ) , . . . , X ( n ) = x ( n ) ∣ Y = c k ) , k = 1 , 2... , K P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}|Y=c_k),k=1,2...,K P(X=x∣Y=ck)=P(X(1)=x(1),...,X(n)=x(n)∣Y=ck),k=1,2...,K
于是学习得到联合概率分布
P
(
X
,
Y
)
P(X,Y)
P(X,Y)。
条件概率分布
P
(
X
=
x
∣
Y
=
c
k
)
P(X=x|Y=c_k)
P(X=x∣Y=ck)有指数级数量的参数,其估计实际是不可行的。事实上,假设
x
(
j
)
x^{(j)}
x(j)可取值有
S
j
S_j
Sj个,
j
=
1
,
2
,
.
.
.
,
n
j=1,2,...,n
j=1,2,...,n,
Y
Y
Y的可取值有K个,那么参数个数为
K
∏
n
j
=
1
S
j
Kprod_{n}^{j=1}S_j
K∏nj=1Sj。
为了简化计算,朴素贝叶斯算法做出了条件独立性假设。条件独立性假设是指用于分类的特征在类别确定的情况是条件独立的,公式如下:
P
(
X
=
x
∣
Y
=
c
k
)
=
P
(
X
(
1
)
=
x
(
1
)
,
.
.
.
,
X
(
n
)
=
x
(
n
)
∣
Y
=
c
k
)
=
∏
n
j
=
1
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}|Y=c_k)=prod_{n}^{j=1}P(X^{(j)}=x^{(j)}|Y=c_k)
P(X=x∣Y=ck)=P(X(1)=x(1),...,X(n)=x(n)∣Y=ck)=n∏j=1P(X(j)=x(j)∣Y=ck)
朴素贝叶斯法实际上学习到生成数据的机制,所以属于生成模型。条件独立性假设简化了计算复杂度,但有时会损失一些分类准确率。
朴素贝叶斯法分类时,对给定的输入
x
x
x,通过学习到的模型计算后验概率分布
P
(
Y
=
c
k
∣
X
=
x
)
P(Y=c_k|X=x)
P(Y=ck∣X=x),将后验概率最大的类作为
x
x
x的类数据。后验概率计算根据贝叶斯定理进行:
P
(
Y
=
c
k
∣
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|X=x)=frac{P(X=x|Y=c_k)P(Y=c_k)}{sum_{k}P(X=x|Y=c_k)P(Y=c_k)}
P(Y=ck∣X=x)=∑kP(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)P(Y=ck)
于是,朴素贝叶斯分类器可表示为:
y
=
f
(
x
)
=
a
r
g
m
a
x
c
k
P
(
Y
=
c
k
)
∏
j
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
∑
k
P
(
Y
=
c
k
)
∏
j
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
y=f(x)=argmax_{c_k}frac{P(Y=c_k)prod_{j}P(X^{(j)}=x^{(j)}|Y=c_k)}{sum_k P(Y=c_k) prod_{j}{P(X^{(j)}=x^{(j)}|Y=c_k)} }
y=f(x)=argmaxck∑kP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)P(Y=ck)∏jP(X(j)=x(j)∣Y=ck)
注意,在上式中,分母对所有的
c
k
c_k
ck都是相同的,所以:
y
=
f
(
x
)
=
a
r
g
m
a
x
c
k
P
(
Y
=
c
k
)
∏
j
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
y=f(x)=argmax_{c_k}P(Y=c_k)prod_{j}P(X^{(j)}=x^{(j)}|Y=c_k)
y=f(x)=argmaxckP(Y=ck)j∏P(X(j)=x(j)∣Y=ck)
朴素贝叶斯法将实例分类到后验概率最大的类中,这等价于期望风险最小化。根据期望风险最小化准则就得到了后验概率最大化准则:
f
(
x
)
=
a
r
g
m
a
x
c
k
P
(
c
k
∣
X
=
x
)
f(x)=argmax_{c_k}P(c_k|X=x)
f(x)=argmaxckP(ck∣X=x)
即朴素贝叶斯法所采用的原理。
在朴素贝叶斯法中,学习意味着估计
P
(
Y
=
c
k
)
P(Y=c_k)
P(Y=ck)和
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
P(X^{(j)}=x^{(j)}|Y=c_k)
P(X(j)=x(j)∣Y=ck)。可以应用极大似然估计法估计相应的概率。先验概率
P
(
Y
=
c
k
)
P(Y=c_k)
P(Y=ck)的极大似然估计是
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}^NI(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(Xj=ajl∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xi(j)=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个特征可能取得第l个值,I为指示函数。
算法:朴素贝叶斯算法(naive Bayes algorithm)
输入:训练数据
T
=
(
x
1
,
y
2
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
N
,
y
N
)
T={(x_1,y_2),(x_2,y_2),...,(x_N,y_N)}
T=(x1,y2),(x2,y2),...,(xN,yN),其中
x
i
=
(
x
i
(
1
)
,
x
i
(
2
)
,
.
.
.
,
x
i
(
n
)
)
T
x_i=(x_i^{(1)},x_i^{(2)}, ..., x_i^{(n)})^T
xi=(xi(1),xi(2),...,xi(n))T,
x
i
(
j
)
x_i^{(j)}
xi(j)是第
i
i
i个样本得第
j
j
j个特征,
x
i
(
j
)
∈
a
j
1
,
a
j
2
,
.
.
.
,
a
j
S
x_i^{(j)}in {a_{j1},a_{j2},...,a_{jS}}
xi(j)∈aj1,aj2,...,ajS,
a
j
l
a_{jl}
ajl是第
j
j
j个特征可能取得第
l
l
l个值,
j
=
1
,
2
,
.
.
.
,
n
j=1,2,...,n
j=1,2,...,n,
l
=
1
,
2
,
.
.
.
,
S
j
l=1,2,...,S_j
l=1,2,...,Sj,
y
i
∈
c
1
,
c
2
,
.
.
.
,
c
K
y_iin {c_1,c_2,...,c_K}
yi∈c1,c2,...,cK;实例
x
x
x;
输出:实例
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)=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
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
;
I
=
1
,
2
,
.
.
.
,
S
j
;
k
=
1
,
2...
,
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)}, j=1,2,...,n;I=1,2,...,S_j;k=1,2...,K
P(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xi(j)=ajl,yi=ck),j=1,2,...,n;I=1,2,...,Sj;k=1,2...,K
(2)对于给定的实例
x
=
(
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
n
)
)
T
x=(x^{(1)}, x^{(2)}, ..., x^{(n)})^T
x=(x(1),x(2),...,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}^{n} P(X^{(j)}=x(j)|Y=c_k), k=1,2,...,K
P(Y=ck)j=1∏nP(X(j)=x(j)∣Y=ck),k=1,2,...,K
(3)确定实例x的类
y
=
a
r
g
m
a
x
c
k
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
y=arg max_{c_k}P(Y=c_k)prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)
y=argmaxckP(Y=ck)j=1∏nP(X(j)=x(j)∣Y=ck)
用极大似然估计可能会出现所要估计的概率值为0的情况,这时会影响到后验概率的计算结果,使分类产生偏差。解决这一问题的方法是采用贝叶斯估计,具体地,条件概率的贝叶斯估计是:
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_lambda (X^{(j)}=a_{jl}|Y=c_k)=frac{sum _{i=1}^N I(x_i^{(j)}=a_{jl}, y_i=c_k)+lambda }{sum _{i=1}^N I(y_i=c_k)+S_jlambda }
Pλ(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)+Sjλ∑i=1NI(xi(j)=ajl,yi=ck)+λ
其中
λ
≥
0
lambda ge 0
λ≥0。等价于在随机变量各个取值的频数上赋予一个正数
λ
>
0
lambda >0
λ>0。当
λ
=
0
lambda =0
λ=0时,就是极大似然估计。常取
λ
=
1
lambda =1
λ=1,这时称为拉普拉斯平滑(Laplace smoothing)。显然 对于任何
l
=
1
,
2
,
.
.
.
,
S
j
,
k
=
1
,
2...
,
K
l=1,2,...,S_j, k=1,2...,K
l=1,2,...,Sj,k=1,2...,K,有
P
λ
(
X
(
j
)
=
a
j
l
∣
Y
=
c
k
)
>
0
P_lambda (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_{l=1}^{S_j}P(X^{(j)}=a_{jl}|Y=c_k)=1
l=1∑SjP(X(j)=ajl∣Y=ck)=1
同样,先验概率的贝叶斯估计是:
P
λ
(
Y
=
c
k
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
λ
N
+
K
λ
P_lambda (Y=c_k)=frac{sum_{i=1}^N I(y_i=c_k)+lambda}{N+Klambda}
Pλ(Y=ck)=N+Kλ∑i=1NI(yi=ck)+λ
- 朴素贝叶斯法是典型的生成学习方法。生成方法由训练数据学习联合概率分布
P
(
X
,
Y
)
P(X,Y)
P(X,Y),然后求得后验概率分布
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X),具体来说,利用训练数据学习
P
(
X
∣
Y
)
P(X|Y)
P(X∣Y)和
P
(
Y
)
P(Y)
P(Y)的估计,得到联合概率分布:
P ( X , Y ) = P ( Y ) P ( X ∣ Y ) P(X,Y)=P(Y)P(X|Y) P(X,Y)=P(Y)P(X∣Y)
概率估计方法可以是极大似然估计或者贝叶斯估计 - 朴素贝叶斯法的基本假设是条件独立性:
P ( X = x ∣ Y − = c k ) = P ( X ( 1 ) = x ( 1 ) , . . . , X ( n ) = x ( n ) ∣ Y = c k ) = ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) P(X=x|Y-=c_k)=P(X^{(1)=x^{(1)}},...,X^{(n)}=x^{(n)}|Y=c_k)=prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k) P(X=x∣Y−=ck)=P(X(1)=x(1),...,X(n)=x(n)∣Y=ck)=j=1∏nP(X(j)=x(j)∣Y=ck)
朴素贝叶斯法高效,但是分类的性能不一定很高。 - 朴素贝叶斯法利用贝叶斯定理与学到的联合概率模型进行分类预测
P ( Y ∣ X ) = P ( X , Y ) P ( X ) = P ( Y ) P ( X ∣ Y ) ∑ Y P ( Y ) P ( X ∣ Y ) P(Y|X)=frac{P(X, Y)}{P(X)}=frac{P(Y)P(X|Y)}{sum_Y P(Y)P(X|Y)} P(Y∣X)=P(X)P(X,Y)=∑YP(Y)P(X∣Y)P(Y)P(X∣Y)
将输入x分到后验概率最大的类y。
y = a r g max c k P ( Y = c k ) ∏ j = 1 n P ( X j = x ( j ) ∣ Y = c k ) y=argmax_{c_k} P(Y=c_k)prod_{j=1}^n P(X_j=x^{(j)}|Y=c_k) y=argckmaxP(Y=ck)j=1∏nP(Xj=x(j)∣Y=ck)
后验概率最大等价于0-1损失函数时的期望风险最小化。



