朴素贝叶斯=朴素+贝叶斯原理。
朴素:navie,天真,天真的认为特征独立同分布(但现实是复杂的,一般都不是独立的)
贝叶斯原理: 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)
朴素贝叶斯是生成式模型,用于做分类的,它是通过argmax p(y|x)来生成类别。
那么argmax p(y|x)如何来的呢?如何使得后验概率p(y|x)最大化呢?
在0-1损失函数中,后验概率最大化等价于经验风险最小化。所以现在来看0-1损失的期望风险最小化问题。
后验概率最大化与(条件)期望风险最小化
- 0-1损失函数(0-1损失函数):
L ( Y , f ( X ) ) = { 1 , Y ̸ = f ( X ) 0 , Y = f ( X ) L(Y,f(X))=\begin{cases} 1,&Y \not=f(X) \\ 0,&Y=f(X) \end{cases} L(Y,f(X))={1,0,Y̸=f(X)Y=f(X)
- 那么其期望风险为:
R e x p ( f ( x ) ) = E [ L ( Y , f ( X ) ) ] R_{exp}(f(x))=E[L(Y,f(X))] Rexp(f(x))=E[L(Y,f(X))]
因为这个期望是对联合概率P(X,Y)取得,而我们只是需要条件期望(我们的目的是后验概率最大化)。
那如何获得条件期望风险呢?
条件期望风险可以通过期望风险得到:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ R_{exp}(f(x))=…
从而就获得了P(Y|X)的条件期望(这个是离散表示,上面是连续函数表示)。
R e x p ( f ( x ) ) = E ∑ k = 1 K [ L ( c k , f ( X ) ) ] p ( c k ∣ x ) R_{exp}(f(x))=E\sum_{k=1}^{K}[L(c_k,f(X))]p(c_k|x) Rexp(f(x))=E∑k=1K[L(ck,f(X))]p(ck∣x)
得到条件期望后,就开始求期望风险最小化:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ f(x)=argmin_{y…
这样,就得到了期望风险最小化等价于后验概率最大化,从而知道了后验概率最大化的由来。
如何实现后验概率最大化呢?
现在我们知道了,对于朴素贝叶斯而言,要达到分类的目的,就要后验概率最大化。
而如何实现后验概率最大化呢?
我们先来看一下我们已经有的条件:
-
1 一般情况下我们有训练集样本(X,Y),根据样本我们可以学习到两个分布一个是先验分布,一个是后验分布:P(Y)和P(X|Y)
-
2 条件独立同分布及贝叶斯方法
结合我们的目的和已知条件得到:
a r g m a x c k P ( Y ∣ X ) = a r g m a x c k P ( X ∣ Y ) P ( Y ) P ( X ) argmax_{ck} P(Y|X)=argmax_{ck} \frac{P(X|Y)P(Y)}{P(X)} argmaxckP(Y∣X)=argmaxckP(X)P(X∣Y)P(Y)
现在求P(Y|X)的求解问题就变味了求解 a r g m a x P ( X ∣ Y ) P ( Y ) P ( X ) arg max \frac{P(X|Y)P(Y)}{P(X)} argmaxP(X)P(X∣Y)P(Y)的问题。
又因为在这个最大化的过程中,P(X)作为一个实例,P(X)是一个常量值,所以仅剩下分子是我们要求的最大化: a r g m a x c k P ( X ∣ Y ) P ( Y ) argmax_{ck} P(X|Y)P(Y) argmaxckP(X∣Y)P(Y)
而因为这个贝叶斯朴素的,特征独立同分布,所以:
a
r
g
m
a
x
c
k
P
(
X
∣
Y
)
P
(
Y
)
=
a
r
g
m
a
x
c
k
P
(
Y
)
∏
j
=
1
N
P
(
X
j
=
x
j
∣
Y
=
c
k
)
argmax_{ck}P(X|Y)P(Y)=argmax_{ck}P(Y)\prod_{j=1}^{N}{P(X^{j}=x^{j}|Y=c_k)}
argmaxckP(X∣Y)P(Y)=argmaxckP(Y)∏j=1NP(Xj=xj∣Y=ck)
现在我们得到了如何根据训练集来求得最大的分类。
不过呢,在P(X|Y)中,
X
=
X
(
1
)
,
X
(
2
)
,
.
.
.
,
X
(
N
)
X={X^{(1)},X^{(2)},...,X^{(N)}}
X=X(1),X(2),...,X(N),每一个特征取
X
(
i
)
X^{(i)}
X(i)取值有
a
s
i
a_{si}
asi个,
a
s
i
=
a
1
i
,
a
2
i
,
.
.
.
,
a
n
i
a_{si}={a_{1i},a_{2i},...,a_{ni}}
asi=a1i,a2i,...,ani,从而使得X个特征乘积的结果为
∏
i
=
1
N
a
s
i
\prod_{i=1}^{N}{a_si}
∏i=1Nasi,而因为需要计算每个类别下的特征乘积,总共有K个类别,那么计算量为K
∏
i
=
1
N
a
s
i
\prod_{i=1}^{N}{a_si}
∏i=1Nasi
这个计算量是很大的,很耗时,往往使用不太现实。此时就用极大似然估计来计算条件概率。
极大似然估计与贝叶斯估计
好了,那为了减少计算量级,就通过最大似然估计来进行贝叶斯方法的参数估计:
我们根据求解的结果可知,我们需要利用极大似然估计来求解 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(Xj=xj∣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}^{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 = x j ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a s j , y i = c k ) ∑ i = 1 N I ( y i = c k ) P(X^j=x^j|Y=c_k)=\frac{\sum_{i=1}^{N}{I(x_i^{(j)}=a_{sj},y_i=c_k)}}{\sum_{i=1}^{N}{I(y_i=c_k)}} P(Xj=xj∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xi(j)=asj,yi=ck)
其中,KaTeX parse error: Expected '}', got 'EOF' at end of input: x_i^{(j)指的是第i个样本第j个特征, a s j a_{sj} asj是第j个特征取到第i个属性值,I表示指示函数。
得到了先验概率和条件概率得极大似然估计值,就可以进行简便求解了。
不过在极大似然估计中,可能存在得问题,在先验概率的极大似然估计中,可能存在某个类别(ck)的样本数目为零,从而导致了其先验概率为0,求解无意义;同时对于条件概率也一样,既是分母不为零,但某一个特征值下且取得asj值的样本可能也不存在,使得条件概率为0。
为了优化这个问题,从而得到了贝叶斯估计。
贝叶斯估计是在分子都加上了一个 λ \lambda λ值,分母分别加上k倍或者是Sj倍的 λ \lambda λ值。
从而得到的先验概率和条件概率为:
P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) + λ N + K λ , k = 1 , 2 , . . , K P(Y=c_k)=\frac{\sum_{i=1}^{N}{I(y_i=c_k)}+\lambda}{N+K\lambda}, k=1,2,..,K P(Y=ck)=N+Kλ∑i=1NI(yi=ck)+λ,k=1,2,..,K
P ( X j = x j ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a s j , y i = c k ) + λ ∑ i = 1 N I ( y i = c k ) + S j λ P(X^j=x^j|Y=c_k)=\frac{\sum_{i=1}^{N}{I(x_i^{(j)}=a_{sj},y_i=c_k)}+\lambda}{\sum_{i=1}^{N}{I(y_i=c_k)}+S_j\lambda} P(Xj=xj∣Y=ck)=∑i=1NI(yi=ck)+Sjλ∑i=1NI(xi(j)=asj,yi=ck)+λ
- 当 λ \lambda λ取值为零时,就是极大似然估计
- 当 λ \lambda λ取值为1时,就是拉普拉斯平滑。