第七章 贝叶斯分类器
贝叶斯决策论
贝叶斯决策论(Bayesian decision theory)是概率框架下实施决策的基本方法,是利用已知的一些相关概率和误判损失来对数据进行类别标记的一种方法。
基本原理:假设有N中可能的类别标记,即
γ
=
{
c
1
+
c
2
+
.
.
.
+
c
N
}
,
λ
i
j
\gamma=\{c_1+c_2+...+c_N\},\lambda{ij}
γ={c1+c2+...+cN},λij是讲一个真实标记为
c
j
c_j
cj的样本标记为
c
i
c_i
ci所产生的损失。基于后验概率(样本概率)
P
(
c
i
∣
x
)
P(c_i|\bf{x})
P(ci∣x)(已知数据推类别)可获得将样本
x
\bf{x}
x分类为
c
i
c_i
ci所产生的期望损失(expected loss),即在样本x上的“条件风险”(conditional risk):
R
(
c
i
∣
x
)
=
∑
j
=
1
N
λ
i
j
P
(
c
j
∣
x
)
R(c_i|\bf{x})=\sum_{j=1}^N\lambda_{ij}P(c_j|\bf{x})
R(ci∣x)=j=1∑NλijP(cj∣x)
我们的任务是找到相应的
h
:
χ
↦
γ
h:\chi\mapsto\gamma
h:χ↦γ(即使类别判定贴近真实)以最小化总体风险:
R
(
h
)
=
E
x
[
R
(
h
(
x
)
∣
x
)
]
R(h)=E_x[R(h(x)|x)]
R(h)=Ex[R(h(x)∣x)]
贝叶斯判定准则(Bayes decision rule):为最小化总体风险,我们只需在每个样本上选择哪个能使条件风险
R
(
c
∣
x
)
R(c|\bf{x})
R(c∣x)最小的类别标记,即:
h
∗
(
x
)
=
arg
min
c
∈
γ
R
(
c
∣
x
)
h^*(x)=\arg\min_{c\in\gamma}R(c|\bf{x})
h∗(x)=argc∈γminR(c∣x)
这样的
h
∗
h^*
h∗称为贝叶斯最优分类器,与之对应的总体风险
R
(
h
∗
)
R(h^*)
R(h∗)称为贝叶斯风险,
1
−
R
(
h
∗
)
1-R(h^*)
1−R(h∗)反应分类器能达到的最好性能。
注:如果误判损失
λ
i
j
\lambda_{ij}
λij为一个示性函数,则条件风险
R
(
c
∣
x
=
1
−
P
(
c
∣
x
)
R(c|{\bf x}=1-P(c|\bf{x})
R(c∣x=1−P(c∣x) `,即贝叶斯最优分类器为
h
∗
(
x
)
=
arg
max
c
∈
γ
P
(
c
∣
x
)
h^*(x)=\arg\max_{c\in\gamma}P(c|\bf{x})
h∗(x)=argc∈γmaxP(c∣x)
即对每个样本
x
\bf{x}
x,选择能使后验概率
P
(
c
∣
x
)
P(c|{\bf x})
P(c∣x)最大的类别标记。
机器学习所要实现的是基于有限的训练样本集尽可能准确地估计后验概率 P ( c ∣ x ) P(c|\bf{x}) P(c∣x),主要有两种策略:
- 判别式模型:给定x,直接对 P ( c ∣ x ) P(c|\bf{x}) P(c∣x)建模,来预测c
- 生成式模型:先对联合概率分布 P ( c , x ) P(c,\bf{x}) P(c,x)建模,然后由此获得 P ( c ∣ x ) P(c|\bf{x}) P(c∣x)。
显然前面章节学到的决策树,BP神经网络,SVM等都可归入判别式模型的范畴。
而对生成式模型来说,必然要考虑:
P
(
c
∣
x
)
=
P
(
x
,
c
)
P
(
x
)
P(c|{\bf x})=\frac{P({\bf x},c)}{P(\bf x)}
P(c∣x)=P(x)P(x,c)
基于贝叶斯定理,
P
(
c
∣
x
)
P(c|\bf{x})
P(c∣x)可写为
P
(
c
∣
x
)
=
P
(
c
)
P
(
x
∣
c
)
P
(
x
)
(贝叶斯公式)
P(c|{\bf x})=\frac{P(c)P({\bf x}|c)}{P(\bf x)}\quad \text{(贝叶斯公式)}
P(c∣x)=P(x)P(c)P(x∣c)(贝叶斯公式)
其中P©是先验概率,P(x|c)是样本
x
\bf x
x相对于类标记c的类条件概率,或称为“似然概率”;
P
(
x
)
P(x)
P(x)与类标记无关,因此估计
P
(
c
∣
x
)
P(c|\bf x)
P(c∣x)的问题就转化为基于训练数据D来估计先验概率P©和似然
P
(
x
∣
c
)
P({\bf x}|c)
P(x∣c)。
注:为什么不用判别式模型呢?因为在实际问题里, P ( x ∣ c ) P({\bf x}|c) P(x∣c)作为类条件概率,它涉及关于 x \bf x x所有属性的联合概率,直接根据样本出现得频率来估计会遇到严重的困难,例如样本有d个属性,每个属性都有两种取值,那么,样本空间就有 2 d 2^d 2d种可能取值,而样本中并不一定完全包含这些可能,所以直接用 P ( x ∣ c ) P({\bf x}|c) P(x∣c)估计显然不可行。
极大似然估计(MLE)
事实上,概率模型的训练过程就是参数估计过程,对于参数估计,统计学界的两个学派分别提供了不同的解决方案:
- 频率主义学派认为概率虽然未知,但存在客观的固定值,因此可通过优化似然函数等准则确定参数值;(本节介绍)
- 贝叶斯学派则认为参数是未观察到的随机变量,其本身也有分布,因此,可假定参数服从一个先验分布,然后基于观测到的数据计算参数的后验分布。
虽然MLE能使类条件概率估计变得相对简单,但估计结果的准确性严重依赖于所假设的概率分布是否符合潜在的真实数据分布。
朴素贝叶斯分类器
首先,我们要意识到,估计后验概率的主要困难在于:类条件概率 P ( x ∣ c ) P({\bf x}|c) 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|{\bf x})=\frac{P(c)P({\bf x}|c)}{P({\bf x})}=\frac{P(c)}{P({\bf 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
\bf x
x在第i个属性上的取值。
因此,最小化分类错误率的贝叶斯最优分类器判定准则可改为:
h
n
b
(
x
)
=
arg
max
c
∈
γ
P
(
c
)
∏
i
=
1
d
P
(
x
i
∣
c
)
h_{nb}(x)=\arg\max_{c\in\gamma}P(c)\prod_{i=1}^dP(x_i|c)
hnb(x)=argc∈γmaxP(c)i=1∏dP(xi∣c)
这就是朴素贝叶斯分类器的表达式。
例如,令D代表训练集,
D
c
D_c
Dc表示训练集,
D
c
,
x
i
D_{c,x_i}
Dc,xi表示在第c类样本中在第i个属性上取值为
x
i
x_i
xi的样本组成的集合,则对离散属性:先验概率P©和条件概率
P
(
x
i
∣
c
)
P(x_i|c)
P(xi∣c)分别为:
P
(
c
)
=
∣
D
c
∣
∣
D
∣
,
P
(
x
i
∣
c
)
=
∣
D
c
,
x
i
∣
∣
D
∣
P(c)=\frac{|D_c|}{|D|},\quad P(x_i|c)=\frac{|D_{c,x_i}|}{|D|}
P(c)=∣D∣∣Dc∣,P(xi∣c)=∣D∣∣Dc,xi∣
对连续属性,我们若假定
p
(
x
i
∣
c
)
∼
N
(
μ
c
,
i
,
σ
c
,
i
2
)
p(x_i|c)\thicksim\mathcal N(\mu_{c,i},\sigma_{c,i}^2)
p(xi∣c)∼N(μc,i,σc,i2),其中
μ
c
,
i
\mu_{c,i}
μc,i和
σ
c
,
i
2
\sigma_{c,i}^2
σc,i2分别是第c类样本中在第i个属性上取值为
x
i
x_i
xi的均值和方差。则有:
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\lgroup -\frac{(x_i-\mu_{c,i})^2}{2\sigma_{c,i}^2}\rgroup.
p(xi∣c)=2πσc,i1exp⟮−2σc,i2(xi−μc,i)2⟯.
注:上述方法成立需要充足的独立同分布样本
当样本数据中存在某个属性值没有和某个类同时出现过,则基于上述概率估计将导致无论其他属性再怎么接近这个类,由于这一属性在该类上类条件概率为0,也会使得该类无法被选,这显然是不合理的,因此接下来我们要对这类估计概率值进行平滑,常使用的方法是“拉普拉斯修正”:
令N表示训练集D中可能的类别数,
N
i
N_i
Ni表示第i个属性可能的取值数。修正后的先验概率和类条件概率分别为:
P
^
(
c
)
=
∣
D
c
+
1
∣
∣
D
∣
+
N
,
P
^
(
x
i
∣
c
)
=
∣
D
c
,
x
i
∣
+
1
∣
D
c
∣
+
N
i
.
\hat P(c)=\frac{|D_c+1|}{|D|+N}, \hat P(x_i|c)=\frac{|D_{c,x_i}|+1}{|D_c|+N_i}.
P^(c)=∣D∣+N∣Dc+1∣,P^(xi∣c)=∣Dc∣+Ni∣Dc,xi∣+1.
拉普拉斯修正避免了因训练及样本不充分而导致概率估计值为零的问题,并且在训练集变大时,修正过程引入的先验影响也将变得逐渐可忽略。
在实现朴素贝叶斯分类器方法时,有如下三种情况:
- 任务对预测速度要求较高:则对给定训练集,将朴素贝叶斯分类器所涉及的所有概率估值实现存储起来,这样在进行与测试只需查表即可进行判别;
- 若数据更替频繁:则可采用懒惰学习方法,先不进行任何训练,待收到预测请求时再根据当前数据集进行概率估值。
- 若数据不断增加:则可在现有的估值基础上,仅对新增样本的属性值所涉及的概率估值进行技术修正,即可实现增量学习
半朴素贝叶斯分类器
朴素贝叶斯分类器可能遇见最大的阻碍就是,现实中的对象属性可能并不符合属性条件独立性假设。因此人们使用“半朴素贝叶斯分类器”来一定程度上放松属性条件独立性假设。
基本思想:
适当考虑一部分属性间的相互依赖信息。
常用策略:“独依赖估计”(One-Dependent Estimator,ODE),即假设每个属性在类别之外最多仅依赖一个其他属性,即:
P
(
c
∣
x
)
∝
P
(
c
)
∏
i
=
1
d
P
(
x
i
∣
c
,
p
a
i
)
P(c|{\bf x})\varpropto P(c)\prod_{i=1}^dP(x_i|c,pa_i)
P(c∣x)∝P(c)i=1∏dP(xi∣c,pai)
其中
p
a
i
pa_i
pai是属性
x
i
x_i
xi所依赖的父属性,那么如何确定每个属性的父属性呢?不同的方法将确定不同的独依赖分类器:
- “超父”:假设所有属性都依赖于同一个属性,通过交叉验证等模型选择方法来确定超父属性->SPODE(Super-Parent ODE)
- TAN(Tree Augmented naive Bayes):则是在最大带权生成树算法的基础上通过以下步骤将属性间依赖关系家华为某种树状结构:
- 计算任意两个属性之间的条件互信息(conditional mutual information):
I ( x i , x j ∣ y ) = ∑ x i , x j ; c ∈ γ P ( x i , x j ∣ c ) log P ( x i , x j ∣ c ) P ( x i ∣ c ) P ( x j ∣ c ) ; I(x_i,x_j|y)=\sum_{x_i,x_j;c\in\gamma}P(x_i,x_j|c)\log{\frac{P(x_i,x_j|c)}{P(x_i|c)P(x_j|c)}}; I(xi,xj∣y)=xi,xj;c∈γ∑P(xi,xj∣c)logP(xi∣c)P(xj∣c)P(xi,xj∣c); - 以属性为节点构建完全图,任意两个节点之间的权重设为 I ( x i , x j ∣ y ) I(x_i,x_j|y) I(xi,xj∣y);
- 构建此完全图的最大带权生成树,挑选根变量,将边置为有向。
- 加入类别节点y,增加从y到每个属性的有向边。
通过最大带权生成树算法,TAN实际上保留了强相关属性之间的依赖性。
- AODE(Averaged One-Dependent Estimate)是一种基于集成学习机制、更为强大的ODE,AODE试图将每个属性作为超父属性来构造SPODE。即AODE的训练过程也是“计数”,即在训练数据及上对符合条件的样本进行计数的过程。与朴素贝叶斯分类器相似,AODE也无需模型选择,技能通过预计算节省预测时间,也能采取懒惰学习方式在预测时再进行计数。
既然将属性条件独立性假设放松为独依赖假设可能获得泛化能力的提升,那么能否考虑属性间的高阶依赖来进一步提升泛化能力。也就是说,将独依赖 p a i pa_i pai替换为包含k个属性的 p a i {\bf pa_i} pai,从而将ODE拓展为kDE。这就需要样本非常充分。
贝叶斯网(信念网)
该方法借助有向无环图(Directed Acyclic Graph, DAG)来刻画属性间的关系。并使用条件概率表(CPT)来描述属性的联合概率分布。
具体来说一个贝叶斯网B由结构G和参数 Θ \Theta Θ两部分构成,即 B = < G , Θ > B=<G,\Theta> B=<G,Θ>.其中G以有向无环图来标识属性间是否存在依赖关系, Θ \Theta Θ以表格形式储存每个属性对应其父属性的依赖关系 P B ( x i ∣ π i ) P_B(x_i|\pi_i) PB(xi∣πi)的量化程度。
结构
贝叶斯网结构有效的表达了属性间的条件独立性,相当于说贝叶斯网假设每个属性与他的非后裔属性独立。那所有属性的联合概率分布可定义为:
P
B
(
x
1
,
x
2
,
.
.
.
,
x
d
)
=
∏
i
=
1
d
P
B
(
x
i
∣
π
i
)
=
∏
i
=
1
d
θ
x
i
∣
π
i
P_B(x_1,x_2,...,x_d)=\prod_{i=1}^dP_B(x_i|\pi_i)=\prod_{i=1}^d\theta_{x_i|\pi_i}
PB(x1,x2,...,xd)=i=1∏dPB(xi∣πi)=i=1∏dθxi∣πi
值得注意的是,B中G有三种结构,第一种是同父结构,在同父结构中,父节点若给出,则父节点无其他重叠父节点的子节点之间条件独立,第二种是顺序结构,其中若顺序结构的中间变量已知,则其前后节点条件独立;第三种是V型结构,亦称为冲撞结构,给定父节点共同的子节点时,两父节点必不独立,若未知该子节点,两父节点相互独立(和前两种相反),并且,我们称这样的独立性为边际独立性,记为
x
1
⊥
​​​
⊥
x
2
x_1\perp \!\!\! \perp x_2
x1⊥⊥x2
另外,G中结构是有向的,为了分析G中变量间的条件独立性,我们可使用条件分离将有向变为无向:
- 找出G中所有V型结构,将V型结构对应的父节点之间加上一条线
- 再将所有有向边变为无向边
这样,变量间的条件独立性就显而易见了
学习
贝叶斯网首要的学习任务就是找出结构最恰当的G。接下来介绍的是常用的方法是“评分搜索”:即先定义一个评分函数以此来评估贝叶斯网与训练数据的契合程度,然后基于这个评分函数来寻找最优的贝叶斯网。
常用评分函数通常是基于信息论准则,此类准则将学习问题看做一个数据压缩任务,学习的目标时找到一个能以最短编码长度描述训练数据的模型。此时编码的长度包括了描述模型自身所需的字节长度和使用该模型描述数据所需要的字节长度。对于贝叶斯网,我们引入“最小描述长度”(MDL)准则。
给定训练集
D
=
{
x
1
,
x
2
,
.
.
.
x
m
}
D=\{\bf x_1,x_2,...x_m\}
D={x1,x2,...xm},贝叶斯网
B
=
<
G
,
Θ
>
B=<G,\Theta>
B=<G,Θ>在D上的评分函数可写为:
s
(
B
∣
D
)
=
f
(
θ
)
∣
B
∣
−
L
L
(
B
∣
D
)
s(B|D) = f(\theta)|B|-LL(B|D)
s(B∣D)=f(θ)∣B∣−LL(B∣D)
LL是极大似然函数,|B|是贝叶斯网的参数个数,
f
(
θ
)
f(\theta)
f(θ)表示描述每个参数
θ
\theta
θ所需的字节数,显然给评分函数第一项是计算B的字节长度,第二项是计算对应的概率分布描述得如何。于是学习任务就转化为一个优化任务,使得评分函数最小化。
当
f
(
θ
)
=
1
f(\theta)=1
f(θ)=1时,即得到我们常说的赤池信息准则(AIC)评分函数:
A
I
C
(
B
∣
D
)
=
∣
B
∣
−
L
L
(
B
∣
D
)
AIC(B|D) = |B|-LL(B|D)
AIC(B∣D)=∣B∣−LL(B∣D)
当
f
(
θ
)
=
1
2
log
m
f(\theta)=\frac12\log m
f(θ)=21logm时,即每个参数用
1
2
log
m
\frac12\log m
21logm字节描述,则得到的BIC(Bayesian Information Criterion)评分函数
B
I
C
(
B
∣
D
)
=
log
m
2
∣
B
∣
−
L
L
(
B
∣
D
)
.
BIC(B|D)=\frac{\log m}{2}|B|-LL(B|D).
BIC(B∣D)=2logm∣B∣−LL(B∣D).
当
f
(
θ
)
=
0
f(\theta)=0
f(θ)=0时,即学习任务退化为极大似然估计。
推断
最理想的推断是根据贝叶斯网定义的联合概率分布来精确计算后验概率,但这样的精确推断已被证明为NP难的,即是说,当网络节点较多,连接稠密时,难以进行精确判断此时需借助“近似判断”。这就引入了一种特殊的随机采样方法——吉布斯采样(Gibbs sampling)
令
Q
=
{
Q
1
,
Q
2
,
.
.
.
,
Q
n
}
{\bf Q}= \{Q_1,Q_2,...,Q_n\}
Q={Q1,Q2,...,Qn}为待查询变量,
E
=
{
E
1
,
E
2
,
.
.
.
,
E
k
}
{\bf E}=\{E_1,E_2,...,E_k\}
E={E1,E2,...,Ek}为证据变量。对应的样本中证据变量取值为
q
\bf q
q和查询变量
e
\bf e
e,它的基本思想是:在t次采样中,算法先假设
q
t
=
q
t
−
1
\bf q^t=q^{t-1}
qt=qt−1,然后对非证据变量逐一进行采样改变其取值,采样概率根据贝叶斯网B和其他变量的当前取值(即Z=z)计算获得。假定经过T次采样得到的与q一致的样本共有
n
q
n_q
nq个,则个近似估算出后验概率:
P
(
Q
=
q
∣
E
=
e
)
≃
n
q
T
P({\bf Q=q|E=e})\simeq \frac{n_q}{T}
P(Q=q∣E=e)≃Tnq
实质上,吉布斯采样是在贝叶斯网所有变量的联合状态空间与证据
E
=
e
E=e
E=e一致的子空间的“随机漫步”,每一步仅依赖与前一步的状态,这是一个“马尔科夫链”。在一定条件下,无论从什么初始状态开始,马尔科夫链第t步的状态分布在
t
→
∞
t\to \infty
t→∞时必收敛于一个平稳分布;对于吉布斯采样而言,这个分布恰好是
P
(
Q
∣
E
=
e
)
P(\bf Q|E=e)
P(Q∣E=e)。
注:吉布斯采样算法收敛速度较慢,此外若贝叶斯网中存在极端概率“0”或“1”,则不能保证马尔科夫链趋于平稳分布。
EM算法
现实中数据往往都不是完整的,由于某些现实原因,会有些样本的属性无法观测出来,该类属性变量,学术上称其为“隐变量”。令X为已观测变量集,Z为隐变量集,对
Θ
\Theta
Θ做极大似然估计,则应最大化对数似然
L
L
(
Θ
∣
X
,
Z
)
=
ln
P
(
X
,
Z
∣
Θ
)
LL(\Theta{\bf |X,Z})=\ln P({\bf X,Z}|\Theta)
LL(Θ∣X,Z)=lnP(X,Z∣Θ)
但是由于Z是隐变量,上式无法直接求解,此时我们就可通过对Z求期望来岁大话易观测数据的对数“边际似然”
L
L
(
Θ
∣
X
)
=
ln
P
(
X
∣
Θ
)
=
ln
∑
z
P
(
X
,
Z
∣
Θ
)
LL(\Theta |{\bf X})=\ln P({\bf X}|\Theta)=\ln\sum_{\bf z}P({\bf X,Z}|\Theta)
LL(Θ∣X)=lnP(X∣Θ)=lnz∑P(X,Z∣Θ)
EM(Expectation-Maximization)算法是常用的估计参数隐变量的方法,它是一种迭代式的算法,其基本思想为若参数
Θ
\Theta
Θ已知,则可根据训练数据推断出最优隐变量Z的值(E步),反之,若Z的值已知,则可方便地对参数
Θ
\Theta
Θ做极大似然估计(M步)。
于是,以初始值 Θ 0 \Theta^0 Θ0为起点,em算法的迭代为:
- 基于 Θ t \Theta^t Θt推断隐变量 Z \bf Z Z的期望,记为 Z t {\bf Z}^t Zt;
- 基于已观测变量 X \bf X X和 Z t {\bf Z}^t Zt对参数做极大似然估计,记为 Θ t + 1 \Theta^{t+1} Θt+1;
进一步,我们若不取Z的期望,而是要求基于 Θ t \Theta^t Θt计算隐变量Z的概率分布 P ( Z ∣ X , Θ t ) P(\bf Z|X,\Theta^t) P(Z∣X,Θt),则EM算法的两个步骤是:
- E步:以当前参数
Θ
t
\Theta^t
Θt推断参数变量分布
P
(
Z
∣
X
,
Θ
t
)
P(\bf Z|X,\Theta^t)
P(Z∣X,Θt),并计算对数似然
L
L
(
Θ
∣
X
,
Z
)
LL(\Theta|\bf X,Z)
LL(Θ∣X,Z)关于Z的期望:
Q ( Θ ∣ Θ t ) = E Z ∣ X , Θ t L L ( Θ ∣ X , Z ) Q(\Theta |\Theta^t)=\Bbb E_{{\bf Z|X},\Theta^t}LL(\Theta|\bf X,Z) Q(Θ∣Θt)=EZ∣X,ΘtLL(Θ∣X,Z) - M步:寻找参数最大化期望似然,即:
Θ t + 1 = arg max Θ Q ( Θ ∣ Θ t ) . \Theta^{t+1}=\arg\max_\Theta Q(\Theta|\Theta^t). Θt+1=argΘmaxQ(Θ∣Θt).
为什么要用EM算法呢?
因为不同于梯度下降法在隐变量较多时计算复杂度成指数倍增长,EM算法属于坐标下降法,其每步迭代都沿着一个坐标方向进行搜索,通过循环使用不同的坐标方向来达到目标函数的局部极小值。但若目标函数本身不是个光滑函数,就可能存在陷入非驻点的问题。