机器学习(五):贝叶斯分类器(理论篇)
朴素贝叶斯是概率论中的重中之重,在原理的理解上,花费了我很大的功夫。下面的内容有点晦涩难懂,大家要静的下心来好好研究。
1. 贝叶斯决策论
贝叶斯决策论(Bayesian decision theory)是概率框架下实施决策的基本方法。对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。下面我们以多分类任务为例来解释其基本原理。
假使有N种可能的类别标记,即y={
c
1
,
c
2
,
.
.
.
,
c
N
c_1,c_2,...,c_N
c1,c2,...,cN},
λ
i
j
\lambda_{ij}
λij是将一个真实标记为
c
j
c_j
cj所产生的损失。基于后验概率P(
c
i
c_i
ci,x)可获得将样本x分类为
c
i
c_i
ci所产生的期望损失(expected loss),即在样本x上的“条件风险”。
R
(
c
i
∣
x
)
∑
j
=
1
N
λ
i
j
P
(
c
j
∣
x
)
R(c_i|x)\displaystyle\sum_{j=1}^{N}\lambda_{ij}P(c_j|x)
R(ci∣x)j=1∑NλijP(cj∣x)
我们的任务是寻找一个判定准则h:X->Y以最小化总体风险
R
(
h
)
=
E
x
[
R
(
h
(
x
)
∣
x
)
]
R(h) = E_x[R(h(x)|x)]
R(h)=Ex[R(h(x)∣x)]
显然,对每一个样本x,若h最小化条件风险
R
(
h
(
x
)
∣
x
)
R(h(x)|x)
R(h(x)∣x),则总体风险R(h)也将被最小化。这就产生了贝叶斯判断准则:为最小化总体风险,只需要在每个样本上选择那个能使条件风险R(c|X)最小的类别标记,即
h
∗
(
x
)
=
arg
c
∈
y
m
i
n
R
(
c
∣
x
)
h^{*}(x)=\displaystyle\arg_{c\in y} minR(c|x)
h∗(x)=argc∈yminR(c∣x)
此时,
h
∗
h^*
h∗称为贝叶斯最优分类器,与之对应的总体风险R(
h
∗
h^*
h∗)称为贝叶斯风险。1-R(
h
∗
h^*
h∗)反映了分类器所能达到的最好性能,即通过机器学习所能产生的模型精度的理论上限。
具体来说,若目标是最小化分类错误率,则误判损失
λ
i
j
\lambda_{ij}
λij可写为
λ
i
j
=
{
0
,
i
f
i
=
j
1
,
o
t
h
e
r
w
i
s
e
\lambda_{ij}= \begin{cases} \cfrac 0, &if\ i\ =\ j\\ 1, &otherwise \end{cases}
λij=⎩⎨⎧,01,if i = jotherwise
此时条件风险
R
(
c
∣
x
)
=
1
−
P
(
c
∣
x
)
R(c|x) = 1- P(c|x)
R(c∣x)=1−P(c∣x)
于是,最小化分类错误率的贝叶斯最优分类器为
h
∗
(
x
)
=
arg
c
∈
y
m
a
x
P
(
c
∣
x
)
h_*(x)=\displaystyle\arg_{c\in y}maxP(c|x)
h∗(x)=argc∈ymaxP(c∣x)
即对每一个样本x,选择能使后验概率P(c|x)最大的类别标记
但是,我们发现,现实中很难直接求得后验概率。机器学习所要实现的是基于有限的样本训练集尽可能准确的估计出后验概率。主要有两种策略:
- 给定x,可通过直接建模P(c|x)来预测c,这样得到的是“判别式模型”
- 先对联合概率分布P(x,c)建模,然后再由此获得P(c|x),这样得到的是生成式模型。
对于生成式模型,必然考虑:
P
(
c
∣
x
)
=
P
(
x
,
c
)
P
(
x
)
P(c|x)=\frac{P(x,c)}{P(x)}
P(c∣x)=P(x)P(x,c)
基于贝叶斯定理,P(c|x)可写为
P
(
c
∣
x
)
=
P
(
c
)
P
(
x
∣
c
)
P
(
x
)
P(c|x)=\frac{P(c)P(x|c)}{P(x)}
P(c∣x)=P(x)P(c)P(x∣c)
P( c )是类“先验”概率‘P(x|c)是样本x相对于类标记c的类条件概率,或称为“似然”P(x)是用于归一化的“证据”因子。
对于给定样本x,证据因子P(X)与类标记无关,因此估计P(c|x)的问题就转化为如何基于训练数据集D来估计先验概率P(c)和似然P(x|c)
- 类先验概率P(c)表达了样本空间中各类样本所占的比例,根据大数定律,当训练集包含充足的独立同分布样本时,P(c)可通过各类样本出现的频率来进行评估。
- 对于类条件概率P(x|c)来说,由于它涉及关于x所有属性的联合概率,很难直接求得。
这时候就要引出另一个概念:最大似然估计
7.2 极大似然估计
估计类条件概率的一种常用策略时假定其具有某种确定的概率分布形式,再基于训练样本对概率分布的参数进行估计。具体的,记关于类别c的类条件概率为P(x|c),假设P(x|c)具有确定的形式并且被参数向量 θ c \theta_c θc唯一确定,则我们的任务就是利用训练集D估计参数 θ c \theta_c θc为明确起见,我们将P(x|c)记为P(x| θ c \theta_c θc)
实际上,概率模型的训练就是参数估计的过程。在这里介绍一种叫做极大似然估计(MLE),这是根据数据采样来估计概率分布参数的经典方法。
令
D
c
D_c
Dc表示训练集D中第c类样本组成的集合,假设这些样本是独立分布的,则
θ
c
\theta_c
θc对于数据集
D
C
D_C
DC的似然是
P
(
D
c
∣
θ
c
)
=
∏
x
∈
D
c
P
(
x
∣
θ
c
)
P(D_c|\theta_c)=\prod_{x\in D_c}P(x|\theta_c)
P(Dc∣θc)=x∈Dc∏P(x∣θc)
对
θ
c
\theta_c
θc进行似然估计,就是去寻找能最大化似然P(
D
c
∣
θ
c
D_c|\theta_c
Dc∣θc)的参数值
θ
^
c
\hat \theta_c
θ^c.直观上看,极大似然估计是试图在
θ
c
\theta^c
θc所有的可能取值中,找到一个能使数据出现的“可能性”最大的值。
上面的式子连乘容易出现下溢,通常使用对数似然:
L
L
(
θ
c
)
=
l
o
g
P
(
D
c
∣
θ
c
)
=
∑
x
∈
D
c
l
o
g
P
(
x
∣
θ
c
)
LL(\theta_c)=logP(Dc|\theta_c)=\displaystyle\sum_{x\in D_c}logP(x|\theta_c)
LL(θc)=logP(Dc∣θc)=x∈Dc∑logP(x∣θc)
此时,参数
θ
c
\theta_c
θc的极大似然估计
θ
^
c
\hat \theta_c
θ^c为
θ
^
c
=
arg
θ
c
m
a
x
L
L
(
θ
c
)
\hat \theta_c=\displaystyle\arg_{\theta_c}maxLL(\theta_c)
θ^c=argθcmaxLL(θc)
例如:在连续属性情形下,假设概率密度函数p(x|c)~N(
μ
c
,
σ
c
2
\mu_c,\sigma_{c}^{2}
μc,σc2),则参数
μ
c
\mu_c
μc和
σ
c
2
\sigma_{c}^{2}
σc2的极大似然估计为
μ
^
c
=
1
∣
D
c
∣
∑
x
∈
D
c
x
\hat\mu_c = \frac{1}{|D_c|}\displaystyle\sum_{x \in D_c} x
μ^c=∣Dc∣1x∈Dc∑x
σ
^
c
2
=
1
∣
D
c
∣
∑
x
∈
D
c
(
x
−
μ
^
c
)
(
x
−
μ
^
c
)
T
\hat\sigma_c^2=\frac{1}{|D_c|}\displaystyle\sum_{x\in D_c}(x-\hat\mu_c)(x-\hat\mu_c)^T
σ^c2=∣Dc∣1x∈Dc∑(x−μ^c)(x−μ^c)T
也就是说,通过极大似然法得到的正态分布均值就是样本均值,方差就是 ( x − μ ^ c ) ( x − μ ^ c ) T (x-\hat\mu_c)(x-\hat\mu_c)^T (x−μ^c)(x−μ^c)T的均值。
7.3 朴素贝叶斯分类器
基于朴素贝叶斯公式来估计后验概率P(c|x)的主要困难在于:类条件概率p(x|c)是所有属性上的联合概率。难以从有限的训练样本直接估计可得。为了避免这个障碍,朴素贝叶斯分类器采用了“属性条件独立性假设”:对已知类别,假设所有属性相互独立,换言之,假设每个属性独立地对分类结果发生影响。
基于属性条件独立性假设,式子可以写成
P
(
c
∣
x
)
=
P
(
c
)
P
(
x
∣
c
)
P
(
x
)
=
P
(
c
)
P
(
x
)
∏
i
=
1
d
P
(
x
i
,
c
)
P(c|x)=\frac{P(c)P(x|c)}{P(x)} =\frac{P(c)}{P(x)}\prod_{i=1}^dP(x_i,c)
P(c∣x)=P(x)P(c)P(x∣c)=P(x)P(c)i=1∏dP(xi,c)
其中d为属性数目,
x
i
x_i
xi为x在i属性上地值
由于对所有类别来说P(x)相同,因此基于上式地贝叶斯判定标准由
h
n
b
(
x
)
=
arg
c
∈
y
m
a
x
P
(
c
)
∏
i
=
1
d
P
(
x
i
∣
c
)
h_{nb}(x)=\displaystyle\arg_{c\in y}maxP(c)\prod_{i=1}^dP(x_i|c)
hnb(x)=argc∈ymaxP(c)i=1∏dP(xi∣c)
这就是朴素贝叶斯分类器的表达式。
显然,朴素贝叶斯分类器的训练过程就是基于训练集D来估计类先验概率P©,并且为每个属性估计条件概率P(
x
i
x_i
xi,c)
令
D
c
D_c
Dc表示训练集D中第c类样本组成的集合,若有充足的独立同分布样本,则可容易地估计出类先验概率
P
(
c
)
=
∣
D
c
∣
∣
D
∣
P(c) = \frac{|D_c|}{|D|}
P(c)=∣D∣∣Dc∣
对离散属性而言,令D_{c,x_i}表示
D
c
D_c
Dc中在第i个属性上取值为
x
i
x_i
xi的样本组成的集合,则条件概率P(
x
i
∣
c
x_i|c
xi∣c)可估计为
P
(
x
i
,
c
)
=
D
c
,
x
i
D
c
P(x_i,c)=\frac{D_{c,x_i}}{D_c}
P(xi,c)=DcDc,xi
对连续属性可考虑概率密度函数,假定p(
x
i
x_i
xi|c)~
N
(
μ
c
,
i
,
σ
c
,
i
2
)
N(\mu_{c,i},\sigma_{c,i}^2)
N(μc,i,σc,i2),其中,
μ
c
,
i
\mu_{c,i}
μc,i和
σ
c
,
i
2
\sigma_{c,i}^2
σc,i2分别是第c类样本在第i个属性上取值的均值和方差,则有
p
(
x
i
∣
c
)
=
1
2
π
σ
c
,
i
e
x
p
(
−
(
x
i
−
μ
c
,
i
)
2
2
σ
c
,
i
2
)
p(x_i|c)=\frac{1}{\sqrt{2\pi}\sigma_{c,i}}exp(-\frac{(x_i-\mu_{c,i})^2}{2\sigma_{c,i}^2})
p(xi∣c)=2πσc,i1exp(−2σc,i2(xi−μc,i)2)
其实说到底,贝叶斯算法有很多种,当遇到标签类型变量和连续型变量的时候,使用的公式都有所不同。需要根据实际情况进行适当的调整。