贝叶斯决策论是概率框架下实施决策的基本方法。对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。
假设有N种可能的类别标记,即 y = { c 1 , c 2 , . . . . , c N } , λ i j y=\{c_1,c_2,....,c_N\},\lambda_{ij} y={c1,c2,....,cN},λij是将一个真实标记为 c j c_j cj的样本标记为 c i c_i ci所产生的损失。基于后验概率 P ( c i ∣ x ) P(c_i|x) P(ci∣x)可以获得将样本x分类为 c i c_i ci所产生的期望损失,即样本x上的条件风险 R ( c i ∣ x ) = ∑ j = 1 N λ i j P ( c j ∣ x ) R(c_i|x)=\sum_{j=1}^N\lambda_{ij}P(c_j|x) R(ci∣x)=j=1∑NλijP(cj∣x)
因此我们需要找寻一个判定准则以最小化总体风险 R ( h ) = E x [ R ( h ( x ) ∣ x ) ] R(h)=E_x[R(h(x)|x)] R(h)=Ex[R(h(x)∣x)]
贝叶斯准则:为最小化总体风险,只需在每个样本上选择哪个能使条件风险 R ( c ∣ x ) R(c|x) R(c∣x)最小的类别标记,即 h ∗ ( x ) = a r g min c ∈ y R ( c ∣ x ) h^*(x)=arg\min\limits_{c\in y}R(c|x) h∗(x)=argc∈yminR(c∣x)
此时, h ∗ h^* h∗称为贝叶斯最优分类器,与之对应的总体风险 R ( h ∗ ) R(h^*) R(h∗)称为贝叶斯风险, 1 − R ( h ∗ ) 1-R(h^*) 1−R(h∗)反映了分类器所能达到的最好性能。
欲使用贝叶斯判定准则来最小化决策风险,首先要获得后验概率 P ( c ∣ x ) P(c|x) P(c∣x),从这个角度来看,机器学习要实现的是基于有限的训练样本集尽可能地准确估计出后验概率 P ( c ∣ x ) P(c|x) P(c∣x)
大体来说,有两种策略:给定x,通过直接建模 P ( c ∣ x ) P(c|x) P(c∣x)来预测c,这样得到"判别式模型";也可以通过先对联合概率分布建模,然后由此获得 P ( C ∣ x ) P(C|x) P(C∣x),这样得到的是"生成式模型",决策树,BP神经网络,SVM等都可以归入判别式模型。而对于生成式模型则考虑 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 ) 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(c) P(c)是类先验概率, P ( x ∣ c ) P(x|c) P(x∣c)是样本x相对于类标记c的类条件概率,或称为似然。
类先验概率表达了样本空间中各类样本所占的比例,根据大数定律,当训练集中含有充分的独立同分布样本是, P ( c ) P(c) P(c)可通过各类样本出现的频率来估计,而对类条件概率来说,样本空间的取值可能通常多于训练样本,通过频率来进行估计显然是不可行的。
这种参数化的方法虽然能使类条件概率估计变得相对简单,但是估计结果的准确性严重依赖于所假设的概率分布形式是否符合潜在的真实数据分布,若仅凭猜测来假设概率分布形式,则可能产生误导性的结果。
基于贝叶斯公式来估计后验概率 P ( c ∣ x ) P(c|x) P(c∣x)的主要苦难在于:类条件概率 P ( x ∣ c ) P(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|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个属性上的取值。
显然朴素贝叶斯分类器的训练过程就是基于训练集D来估计类先验概率 P ( c ) P(c) P(c)并且为每个属性估计条件概率 P ( x i ∣ c ) P(x_i|c) P(xi∣c)
为了避免其他属性所携带的信息被训练集中未出现的属性值“抹去”,在估计概率时通常要进行“平滑”,常用“拉普拉斯修正”。令N表示训练集D中可能的类别数, N i N_i Ni表示第i个属性可能的取值数,则有 P ^ ( c ) = ∣ D c ∣ + 1 ∣ D ∣ + N \hat{P}(c)=\frac{|D_c|+1}{|D|+N} P^(c)=∣D∣+N∣Dc∣+1
P ^ ( x i ∣ c ) = ∣ D c , x i ∣ + 1 ∣ D c ∣ + N i \hat{P}(x_i|c)=\frac{|D_{c,x_i}|+1}{|D_c|+N_i} P^(xi∣c)=∣Dc∣+Ni∣Dc,xi∣+1
拉普拉斯修正避免了因训练集样本不充分而导致概率估值为零的问题,并且在训练集变大时,修正过程所引入先验概率影响也会逐渐变得可以忽略。
朴素贝叶斯分类器中采用了属性条件独立性假设,但在现实任务中,这个假设往往很难成立。于是,人们尝试对属性条件独立性假设进行一定程度的放松,由此产生了“半朴素贝叶斯分类器”的学习方法。
其基本想法是适当考虑一部分属性间的相互依赖信息,从而既不需要进行完全联合概率计算,又不至于彻底忽略了比较强的书写依赖关系。“独依赖估计”是半朴素贝叶斯最常用的一种策略,即假设每个属性在类别之外最多仅依赖于一个其他属性,即 P ( c ∣ x ) ∝ P ( c ) ∏ i = 1 d P ( x i ∣ c , p a i ) P(c|x) \propto 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所依赖的属性,称为 x i x_i xi的父属性。于是,问题的关键就转化为如何确定每个属性的父属性,不同的做法会产生不同的独依赖分类器。
最直接的做法是假设所有属性都依赖于统一属性,称为“超父”,然后通过交叉验证等模型选择方法来确定超父属性,由此形成了SPODE方法。
TAN则是在最大带权生成树算法的基础上通过以下步骤简约形成:
1.计算任意两个属性之间的条件互信息 I ( x i , x j ∣ y ) = ∑ x i , x j ; c ∈ Y P ( x i , x j ∣ c ) l o g 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 Y}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∈Y∑P(xi,xj∣c)logP(xi∣c)P(xj∣c)P(xi,xj∣c)
2.以属性为结点构建完全图,任意两结点的边权重为 I ( x i , x j ∣ y ) I(x_i,x_j|y) I(xi,xj∣y)
3.构建此完全图的最大带权生成树,挑选根变量,将边置为有向
4.加入类别结点y增加从y到每个属性的有向边
TAN实际上仅保留了强相关属性之间的依赖性
而AODE是一种基于集成学习机制,更为强大的独依赖分类器,与SPODE通过模型确定超父属性不同,AODE尝试将每个属性作为超父来构建SPODE,然后将那些具有足够训练数据支撑的SPODE集成起来作为最终结果。即 P ( c ∣ x ) ∝ ∑ i = 1 , ∣ D x i ≥ m ∣ d P ( c , ∣ x i ) ∏ j = 1 d P ( x j ∣ c , x i ) P(c|x)\propto\sum_{i=1,|D_{x_i}\geq m|}^d P(c,|x_i)\prod_{j=1}^dP(x_j|c,x_i) P(c∣x)∝i=1,∣Dxi≥m∣∑dP(c,∣xi)j=1∏dP(xj∣c,xi)
其中 D x i D_{x_i} Dxi是在第i个属性上取值为 x i x_i xi的样本的集合,m为阈值常数。 P ^ ( c ∣ x i ) = ∣ D c , x i ∣ + 1 ∣ D ∣ + N × N i \hat{P}(c|x_i)=\frac{|D_{c,x_i}|+1}{|D|+N \times N_i } P^(c∣xi)=∣D∣+N×Ni∣Dc,xi∣+1
P ^ ( x j ∣ c , x i ) = ∣ D c , x i , x j ∣ + 1 ∣ D c , x i ∣ + N j \hat{P}(x_j|c,x_i)=\frac{|D_{c,x_i,x_j}|+1}{|D_{c,x_i}|+N_j} P^(xj∣c,xi)=∣Dc,xi∣+Nj∣Dc,xi,xj∣+1
其中N是D中可能的类别数, N i N_i Ni是第i个属性可能的取值数, D c , x i D_{c,x_i} Dc,xi是类别为c且在第i个属性上取值为x_i的样本集合, D c , x i , x j D_{c,x_i,x_j} Dc,xi,xj是类别为c,且在第i,j个属性上取值为 x i , x j x_i,x_j xi,xj的样本集合。
也称为信念网,借助有向无环图来刻画属性之间的依赖关系,并使用条件概率表来描述属性的联合概率分布。具体来说,一个贝叶斯网B由结构G和参数 Θ \Theta Θ两部分构成。G是一个有向无环图,每个结点对应于一个属性,若两个属性有直接依赖关系,则有一条边连接, Θ \Theta Θ则定量描述这种依赖关系。假设属性 x i x_i xi在G中的父节点集为 π i \pi_i πi,则 Θ \Theta Θ包含了每个属性的条件概率表 θ x i ∣ π i = P B ( x i ∣ π i ) \theta_{x_i|\pi_i}=P_B(x_i|\pi_i) θxi∣πi=PB(xi∣πi)
贝叶斯网有效地表达了属性间的条件独立性,它假设每个属性与它的非后裔属性独立,于是B将属性 x 1 , x 2 . . . . x d x_1,x_2....x_d x1,x2....xd的联合分布定义为 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
在学习过程中,需要定义一个“评分函数”,随后基于这个函数来寻找当前训练集上结构最优的贝叶斯网。MDL准则:使经常出现的样本有更短的编码。
而在进行查询时,通常使用吉布斯采样。
之前我们假设样本中所有的属性变量都被观察到了,即样本是完整的。
我们将未观测变量称为“隐变量”。令X表示一观测变量集,Z表示隐变量集合, Θ \Theta Θ表示模型参数。欲对 Θ \Theta Θ做极大似然估计,则应最大化对数似然 L L ( Θ ∣ X , Z ) = l n P ( X , Z ∣ Θ ) LL(\Theta|X,Z)=lnP(X,Z|\Theta) LL(Θ∣X,Z)=lnP(X,Z∣Θ)
由于Z是隐变量,上式无法直接求解,对Z计算期望以最大化已观测数据的对数“边际似然” L L ( Θ ∣ X ) = l n P ( X ∣ Θ ) = l n ∑ Z P ( X , Z ∣ Θ ) LL(\Theta|X)=lnP(X|\Theta)=ln\sum_ZP(X,Z|\Theta) LL(Θ∣X)=lnP(X∣Θ)=lnZ∑P(X,Z∣Θ)
因此,EM算法是一种迭代的方法,其基本想法是:若参数 Θ \Theta Θ已知,则可以根据训练数据推断出最优隐变量Z的值(E步),若Z的值已知,则可以对参数 Θ \Theta Θ做极大似然估计(M步)
于是,迭代执行下列步骤直至收敛:
1.基于 Θ t \Theta^t Θt推断隐变量Z的期望,记为 Z t Z^t Zt
2.基于已观测变量X和 Z t Z^t Zt对参数 Θ \Theta Θ做极大似然估计,记为 Θ t + 1 \Theta^{t+1} Θt+1
隐变量估计问题也可以通过梯度下降等优化算法来进行求解,但是由于求和的项数将随着隐变量的数目以指数级上升,给梯度计算带来巨大麻烦,而EM算法可以看做一种非梯度优化方法。