朴素贝叶斯方法
简单的来说,朴素贝叶斯方法是基于贝叶斯定理和特征条件独立性的假设的一种分类方法,具有效率高,参数少,分类较准确的优点
贝叶斯定理
贝叶斯定理是关于两个随机事件X和Y的条件概率的问题,用公式说明如下:
P
(
Y
∣
X
)
=
P
(
X
,
Y
)
P
(
X
)
=
P
(
Y
)
P
(
X
∣
Y
)
Σ
Y
P
(
Y
)
P
(
X
∣
Y
)
(
1
)
P(Y|X)=\frac{P(X,Y)}{P(X)}=\frac{P(Y)P(X|Y)}{\Sigma_YP(Y)P(X|Y)}\qquad (1)
P(Y∣X)=P(X)P(X,Y)=ΣYP(Y)P(X∣Y)P(Y)P(X∣Y)(1)
即在得知Y的概率分布和X对于Y的条件概率分布的情况下,我们可以求出Y对于X的条件概率分布
特征条件独立性假设
朴素贝叶斯方法是建立在条件独立性假设的基础上,即假设X的每一维是独立的
P
(
X
=
x
∣
Y
=
c
k
)
=
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
(
2
)
P(X=x|Y=c_k)=\prod_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k) \qquad (2)
P(X=x∣Y=ck)=j=1∏nP(X(j)=x(j)∣Y=ck)(2)
这会极大的减少朴素贝叶斯方法的参数,但会牺牲一定的准确率
朴素贝叶斯方法
NBC的目标是对于给定的n维特征向量x,求出类标记Y对应的每一类的概率,而后将Y分到概率最大的一类中,因此数学上的目标是求出条件概率P(Y|X),根据贝叶斯公式,我们需要两种概率分布:P(X,Y)和P(X),进一步的,我们可以根据贝叶斯公式得知我们需要P(X|Y)和P(Y)。数学推导如下:
对于P(Y|X),我们通过贝叶斯公式和独立性假设将其展开:
P
(
Y
=
c
k
∣
X
=
x
)
=
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
)
P(Y=c_k|X=x)=\frac{P(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k)}{\Sigma_k P(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k)}
P(Y=ck∣X=x)=ΣkP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)P(Y=ck)∏jP(X(j)=x(j)∣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_jP(X^{(j)}=x^{(j)}|Y=c_k)}{\Sigma_k P(Y=c_k)\prod_jP(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)
由于对所有的类,分母都是相同的,因此我们只需看分子项,式子变成了:
y
=
f
(
x
)
=
a
r
g
m
a
x
c
k
P
(
Y
=
c
k
)
∏
j
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
(
3
)
y=f(x)=argmax_{c_k}P(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k) \qquad (3)
y=f(x)=argmaxckP(Y=ck)j∏P(X(j)=x(j)∣Y=ck)(3)
对于参数P(X|Y)和P(Y),我们提出了如下的求解方法
朴素贝叶斯方法的参数估计
对于朴素贝叶斯方法中的参数,我们采用极大似然估计的方法获得。
首先是参数P(Y),这类参数我们可以直接统计数据集种每一类标签的频率作为Y的概率分布即可,即:
P
(
Y
=
c
k
)
=
Σ
i
=
1
N
I
(
y
i
=
c
k
)
N
,
k
=
1
,
.
.
.
,
K
P(Y=c_k)=\frac{\Sigma_{i=1}^NI(y_i=c_k)}N,k=1,...,K
P(Y=ck)=NΣi=1NI(yi=ck),k=1,...,K
其次是P(X|Y)。根据(3),我们只需求出每个分量的条件概率,这也可以通过统计获得,有
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{\Sigma_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)}{\Sigma_{i=1}^NI(y_i=c_k)}
P(X(j)=ajl∣Y=ck)=Σi=1NI(yi=ck)Σi=1NI(xi(j)=ajl,yi=ck)
其中,a_jl表示第j个特征可能取的第i个值,I为指示函数。
朴素贝叶斯学习与分类算法
下面给出朴素贝叶斯方法的学习与分类算法:
输入:数据集T,实例x
输出:x的分类
- 根据极大似然估计计算先验概率和条件概率,具体方法我们刚刚讲过;
- 对于实例x,我们计算朴素贝叶斯方法分类器的结果,确定x所属的类。
后验概率最大化的含义
朴素贝叶斯方法将实例分到后验概率最大的类中,这等价于期望风险最小化。假设选择0-1损失函数L(Y,f(X)),其中 f(X)是分类决策函数。这是,期望风险函数为
R
e
x
p
(
f
)
=
E
[
L
(
Y
,
f
(
X
)
)
]
R_{exp}(f)=E[L(Y,f(X))]
Rexp(f)=E[L(Y,f(X))]
期望是对联合分布f(X,Y)取的,因此有
R
e
x
p
(
f
)
=
E
X
Σ
k
=
1
K
[
L
(
c
k
,
f
(
X
)
)
]
P
(
c
k
∣
X
)
R_{exp}(f)=E_X\Sigma_{k=1}^K[L(c_k,f(X))]P(c_k|X)
Rexp(f)=EXΣk=1K[L(ck,f(X))]P(ck∣X)
为了使期望风险最小化,只需对X=x逐个最小化,由此可得
f
(
x
)
=
a
r
g
m
i
n
y
Σ
k
=
1
K
L
(
c
k
,
y
)
P
(
c
k
∣
X
=
x
)
=
a
r
g
m
i
n
y
Σ
k
=
1
K
P
(
y
≠
c
k
∣
X
=
x
)
=
a
r
g
m
i
n
y
(
1
−
P
(
y
=
c
k
∣
X
=
x
)
)
=
a
r
g
m
a
x
y
P
(
y
=
c
k
∣
X
=
x
)
f(x) =arg \space min_{y} \Sigma_{k=1}^K L(c_k,y) P(c_k|X=x) \\ = arg \space min_{y} \Sigma_{k=1}^K P(y\ne c_k|X=x) \\ = arg \space min_{y} (1-P(y= c_k|X=x)) \\ = arg \space max_{y} P(y= c_k|X=x)
f(x)=arg minyΣk=1KL(ck,y)P(ck∣X=x)=arg minyΣk=1KP(y=ck∣X=x)=arg miny(1−P(y=ck∣X=x))=arg maxyP(y=ck∣X=x)
即期望风险最小化等价于后验概率最大化,这就是朴素贝叶斯方法的原理。
贝叶斯估计
采用极大似然估计的方法可能会出现所要估计的概率为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{\Sigma_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}{\Sigma_{i=1}^NI(y_i=c_k)+S_j \lambda}
Pλ(X(j)=ajl∣Y=ck)=Σi=1NI(yi=ck)+SjλΣi=1NI(xi(j)=ajl,yi=ck)+λ
λ=0时,即为极大似然估计。通常我们取λ=1,这是称为拉普拉斯平滑。同样的先验概率的贝叶斯估计是
P
λ
(
Y
=
c
k
)
=
Σ
i
=
1
N
I
(
y
i
=
c
k
)
+
λ
N
+
K
λ
,
k
=
1
,
.
.
.
,
K
P_\lambda(Y=c_k)=\frac{\Sigma_{i=1}^NI(y_i=c_k)+\lambda}{N+K\lambda},k=1,...,K
Pλ(Y=ck)=N+KλΣi=1NI(yi=ck)+λ,k=1,...,K