生成模型 VS 判别模型
根据极大似然和极大后验里的讲述,不管是生成模型还是判别模型,求解的都是 p ( y ∣ x ) p(y|x) p(y∣x),生成模型求解过程为先求解 p ( x , y ) p(x,y) p(x,y),再求解 p ( y ∣ x ) p(y|x) p(y∣x),而判别模型直接求解 p ( y ∣ x ) p(y|x) p(y∣x),这是这两类模型的本质区别。
上述区别造就了如下的衍生区别:
- 大多数情况下判别模型要比生成模型的数据需要的数据量少,而且判别模型所需要的假设要弱于生成模型。
- 待补充…
举一个例子:现在的任务是要分辨一只羊是山羊还是绵羊。判别模型完成的工作是直接判断这只羊是山羊还是绵羊,而生成模型完成的工作是先学习一个山羊模型和一个绵羊模型,然后看下这只羊属于山羊的概率和属于绵羊的模型,取其大者作为识别的目标。
先验概率 VS 后验概率
根据如下贝叶斯公式, p ( y ) p(y) p(y)代表的是先验概率,即根据以往的经验看某些情况发生的概率; p ( y ∣ x ) p(y|x) p(y∣x)代表的是后验概率,即有些事情已经发生的情况下某些情况发生的概率。
p ( y ∣ x ) = p ( x ∣ y ) p ( y ) p ( x ) p(y|x)=\frac{p(x|y)p(y)}{p(x)} p(y∣x)=p(x)p(x∣y)p(y)
核心思想
对于数据集 T = { ( x i , y i ) } i = 1 N T= \{(x_i,y_i)\}^{N}_{i=1} T={(xi,yi)}i=1N,由独立同分布的 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 ( X = x / Y = c k ) = P ( X ( 1 ) = x ( 1 ) , X ( 2 ) = x ( 2 ) , . . . , X ( n ) = x ( n ) / Y = c k ) k=1,2,...,K \begin{cases} P(Y=c_k) & \text{ k=1,2,...,K } \\ P(X=x/Y=c_k)=P(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)},...,X^{(n)}=x^{(n)}/Y=c_k) & \text{ k=1,2,...,K } \end{cases} {P(Y=ck)P(X=x/Y=ck)=P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)/Y=ck) k=1,2,...,K k=1,2,...,K
于是得到联合分布概率
P
(
X
,
Y
)
P(X,Y)
P(X,Y)。朴素贝叶斯提出一个对条件概率分布的条件独立性假设,如下,即特征
X
(
i
)
X^{(i)}
X(i)对于特征
X
(
j
)
X^{(j)}
X(j)关于
Y
Y
Y是相互独立的,但是特征之间有可能不独立,
P
(
X
=
x
/
Y
=
c
k
)
=
P
(
X
(
1
)
=
x
(
1
)
,
X
(
2
)
=
x
(
2
)
,
.
.
.
,
X
(
n
)
=
x
(
n
)
/
Y
=
c
k
)
=
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
/
Y
=
c
k
)
k
=
1
,
2
,
.
.
.
,
K
P(X=x/Y=c_k)=P(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)},...,X^{(n)}=x^{(n)}/Y=c_k)=\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}/Y=c_k) \quad k=1,2,...,K
P(X=x/Y=ck)=P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)/Y=ck)=j=1∏nP(X(j)=x(j)/Y=ck)k=1,2,...,K
这时我们通过概率分布可以把 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
/
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)
把(1)式带入上述公式得
P
(
Y
=
c
k
/
X
=
x
)
=
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
/
Y
=
c
k
)
∑
k
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
/
Y
=
c
k
)
P(Y=c_k/X=x)=\frac{P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}/Y=c_k)}{\sum _k P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}/Y=c_k)}
P(Y=ck/X=x)=∑kP(Y=ck)∏j=1nP(X(j)=x(j)/Y=ck)P(Y=ck)∏j=1nP(X(j)=x(j)/Y=ck)
而当一个未知的
x
u
x_{u}
xu送入到模型中,得到的结果如下,
y
=
f
(
x
u
)
=
a
r
g
m
a
x
c
k
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
u
(
j
)
/
Y
=
c
k
)
∑
k
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
u
(
j
)
/
Y
=
c
k
)
y=f(x_u)=argmax_{c_k}\frac{P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x_u^{(j)}/Y=c_k)}{\sum _k P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x_u^{(j)}/Y=c_k)}
y=f(xu)=argmaxck∑kP(Y=ck)∏j=1nP(X(j)=xu(j)/Y=ck)P(Y=ck)∏j=1nP(X(j)=xu(j)/Y=ck)
而对于所有的式子来说,上式的分母都是相同的,因而上式可简化为如下,
y = f ( x u ) = a r g m a x c k P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x u ( j ) / Y = c k ) y=f(x_u)=argmax_{c_k}P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x_u^{(j)}/Y=c_k) y=f(xu)=argmaxckP(Y=ck)j=1∏nP(X(j)=xu(j)/Y=ck)
后验概率最大含义
朴素贝叶斯法将实例分到后验概率最大的类中,其实等价于期望风险最小化,从这一点可以看出朴素贝叶斯法其实是站在伪上帝的视角来考虑问题的,即现在我们就认为训练集中包含所有的可能数据,因而求出的风险就是期望风险,而不是经验风险,
这里统计学习方法的第49页有详细推导过程,这里只想提一点就是朴素贝叶斯用到的是0-1损失函数。
L ( y , f ( x ) ) = { 1 , Y ≠ f ( X ) 0 , Y = f ( X ) L(y,f(x))=\left\{\begin{matrix} 1,\quad Y\neq f(X)\\ 0,\quad Y=f(X) \end{matrix}\right. L(y,f(x))={1,Y=f(X)0,Y=f(X)
贝叶斯估计
极大似然估计可能产生概率为0的情况,因而引入了贝叶斯估计,用如下式子矫正,
P
λ
(
X
(
j
)
/
Y
=
c
k
)
=
∑
i
=
1
N
1
(
x
i
(
j
)
=
a
j
l
,
y
i
=
c
k
)
+
λ
∑
i
=
1
N
1
(
y
i
=
c
k
)
+
S
j
λ
P_\lambda(X^{(j)}/Y=c_k)=\frac{\sum_{i=1}^{N}1(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}{\sum_{i=1}^{N}1(y_i=c_k)+S_j\lambda}
Pλ(X(j)/Y=ck)=∑i=1N1(yi=ck)+Sjλ∑i=1N1(xi(j)=ajl,yi=ck)+λ
等价于给随机变量的各个取值的频数上添加一个整数
λ
\lambda
λ, 当
λ
=
0
\lambda=0
λ=0时为极大似然估计,当其为1时,叫做拉普拉斯平滑,而先验概率的贝叶斯估计为
P
λ
(
Y
=
c
k
)
=
∑
i
=
1
N
1
(
y
i
=
c
k
)
+
λ
N
+
K
λ
,
k
=
1
,
2...
,
K
P_\lambda(Y=c_k)=\frac{\sum_{i=1}^{N}1(y_i=c_k)+\lambda}{N+K\lambda},\quad k=1,2...,K
Pλ(Y=ck)=N+Kλ∑i=1N1(yi=ck)+λ,k=1,2...,K