朴素贝叶斯法
学习与分类
朴素贝叶斯法旨在通过学习联合概率分布 P ( Y ∣ X ) P(Y|X) P(Y∣X)以学习生成数据的机制,属于生成模型。
以分类问题为例,此时输出空间为类标记集合 Y = { c 1 , ⋯ , c K } \mathcal{Y}=\{c_1,\cdots,c_K\} Y={c1,⋯,cK}。若输入特征向量 x \mathbf{x} x包括 n n n个特征、每个特征 x ( j ) x^{(j)} x(j)可能取 S j S_j Sj个值,则需要估计的参数数量为 K ∏ j = 1 n S j K\prod_{j=1}^nS_j K∏j=1nSj,即具有指数级数量的参数。为了降低参数数量,朴素贝叶斯法作了条件独立性假设, P ( X = x ∣ Y = c k ) = ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) , P(X=x|Y=c_k)=\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k), P(X=x∣Y=ck)=j=1∏nP(X(j)=x(j)∣Y=ck),即用于分类的特征在类确定的条件下都是独立的。
朴素贝叶斯法分类时采用后验概率最大的准则,
y
=
arg
max
c
k
P
(
Y
=
c
k
∣
X
=
x
)
=
arg
max
c
k
P
(
Y
=
c
k
)
∏
j
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
.
y=\arg\max_{c_k}P(Y=c_k|X=x)=\arg\max_{c_k}P(Y=c_k)\prod_jP(X^{(j)}=x^{(j)}|Y=c_k).
y=argckmaxP(Y=ck∣X=x)=argckmaxP(Y=ck)j∏P(X(j)=x(j)∣Y=ck).实际上,上述准则等价于期望风险最小化:选择0-1损失函数,此时期望风险函数为
R
e
x
p
(
f
)
=
E
[
L
(
Y
,
f
(
X
)
)
]
,
R_\mathrm{exp}(f)=\mathbb{E}[L(Y,f(X))],
Rexp(f)=E[L(Y,f(X))],期望取自联合分布
P
(
X
,
Y
)
P(X,Y)
P(X,Y)。因此,有
R
e
x
p
(
f
)
=
E
X
[
E
Y
[
L
(
Y
,
f
(
X
)
)
∣
X
]
]
=
E
X
[
∑
k
=
1
K
L
(
c
k
,
f
(
X
)
)
P
(
c
k
∣
X
)
]
.
\begin{aligned}R_\mathrm{exp}(f)&=\mathbb{E}_X[\mathbb{E}_Y[L(Y,f(X))|X]] \\ &=\mathbb{E}_X[\sum_{k=1}^KL(c_k,f(X))P(c_k|X)].\end{aligned}
Rexp(f)=EX[EY[L(Y,f(X))∣X]]=EX[k=1∑KL(ck,f(X))P(ck∣X)].为了最小化期望风险,只需对
X
=
x
X=x
X=x逐个极小化,因此得到
f
(
x
)
=
arg
max
c
k
P
(
c
k
∣
X
=
x
)
.
f(x)=\arg\max_{c_k}P(c_k|X=x).
f(x)=argckmaxP(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
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
N
,
P(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)}{N},
P(Y=ck)=N∑i=1NI(yi=ck),
P
(
X
(
j
)
=
a
j
l
∣
Y
=
c
k
)
=
∑
i
=
1
N
(
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(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=1N(xi(j)=ajl,yi=ck),
j
=
1
,
⋯
,
n
;
l
=
1
,
⋯
,
S
j
;
k
=
1
,
⋯
,
K
.
j=1,\cdots,n;\ l=1,\cdots,S_j;\ k=1,\cdots,K.
j=1,⋯,n; l=1,⋯,Sj; k=1,⋯,K.
实际上,极大似然估计用频率估计概率。
贝叶斯估计
在极大似然估计中,可能出现所要估计的概率值为0的情况,这时会影响后验概率的计算结果。因此,贝叶斯估计中引入了拉普拉斯平滑,即,
P
(
Y
=
c
k
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
λ
N
+
K
λ
,
P(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)+λ,
P
(
X
(
j
)
=
a
j
l
∣
Y
=
c
k
)
=
∑
i
=
1
N
(
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(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}{\sum_{i=1}^NI(y_i=c_k)+S_j\lambda},
P(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)+Sjλ∑i=1N(xi(j)=ajl,yi=ck)+λ,
j
=
1
,
⋯
,
n
;
l
=
1
,
⋯
,
S
j
;
k
=
1
,
⋯
,
K
.
j=1,\cdots,n;\ l=1,\cdots,S_j;\ k=1,\cdots,K.
j=1,⋯,n; l=1,⋯,Sj; k=1,⋯,K.
贝叶斯估计中,若取
λ
→
∞
\lambda\to\infty
λ→∞,则每类实例等概率出现、类别确定时每个特征取各个值的概率也相同。
学习与分类算法
算法(朴素贝叶斯算法)
输入:训练数据
T
\mathcal{T}
T;实例
x
x
x;
输出:实例
x
x
x的分类。
(1)根据极大似然估计或贝叶斯估计计算相应概率值;
(2)对于给定实例
x
=
(
x
(
1
)
,
⋯
,
x
(
n
)
)
T
x=(x^{(1)},\cdots,x^{(n)})^\mathsf{T}
x=(x(1),⋯,x(n))T,计算
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
,
k
=
1
,
⋯
,
K
;
P(Y=c_k)\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k),k=1,\cdots,K;
P(Y=ck)j=1∏nP(X(j)=x(j)∣Y=ck),k=1,⋯,K;
(3)确定
x
x
x的类。