从零开始-Machine Learning学习笔记(24)-贝叶斯分类器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kabuto_hui/article/details/84255106

  首先还是先取出周志华先生在《机器学习》贝叶斯分类器一章中对于贝叶斯决策论的定义:

贝叶斯决策论是概率框架下实施决策的基本方法。在分类任务中,在所有相关概率都已知的情况下,贝叶斯决策论考虑的是如何基于这些概率和误判损失来选择最优的标记。

  基于最小化条件风险,我们可以得到最小化分类错误率的贝叶斯最优分类器:
h ( x ) = arg max c y P ( c x ) h^{*}(x) = \arg \max_{c ∈ y}P(c|x)
  根据上面的公式我们可以看出,要获得最优的贝叶斯分类器,需要知道后验概率P(c|x),但是在实际中,往往很难直接获得。基于训练集,我们通常有两种策略:
判别式模型: 利用训练集来建模,给定x,通过P(c|x)来预测c。显然,我们常见的决策树、BP神经网络、支持向量机和逻辑回归等都属于此类范畴。
生成式模型: 单纯从概率的角度出发,从训练集中直接生成P(c|x),显然根据贝叶斯定理,可以把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):是先验概率,表示为c类标记在训练集中所占的比例;
P(x): “证据”因子,(这里我认为是样本x出现的概率,如果训练集没有异常数据,即样本特征的属性一样,但是标记不一样的话,那么P(x)应该都是一样的);
P(x|c):是样本x对标记c的条件概率,或称之为“似然”。
对与给定样本x,证据因子P(x)就与类别标记无关,因此估计P(c|x)的问题就转化为如何基于训练集D来估计先验概率P©和似然P(x|c)。其中,P(x|c)与x所有的属性的联合概率有关,所以直接用样本出现的概率来估计会遇到严重的困难。

1. 朴树贝叶斯分类器

  因为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}^{d} P(x_i|c)
其中d为属性数目(特征), x i x_i 表示x在第i个属性(特征)上的取值。所以此时的贝叶斯判定准则可以写为:
h n b ( x ) = arg max c y P ( c ) i = 1 d P ( x i c ) h_{nb}(x) = \arg \max_{c ∈ y} P(c)\prod_{i=1}^{d}P(x_i|c)
其中,P(c)表示第c类样本在训练集样本中所占的比例。假设 D c D_c 为标记为c的样本集合,那么P©可表示为:
P ( c ) = D c D P(c) = \frac{|D_c|}{D}
对于离散属性: P(x_i|c)可表示为在样本标记为c的集合中,在第i个属性(特征)上取值为 x i x_i 的样本所占的比例。用 D x i , c D_{x_i,c} 样本标记为c的集合中,在第i个属性(特征)上取值为 x i x_i 的样本集合,则:
P ( x i c ) = D x i , c D c P(x_i|c) = \frac{|D_{x_i,c}|}{|D_c|}
对于连续属性: 一般考虑密度函数,一般假定其服从高斯分布: P ( x i c ) P(x_i|c) ~ N ( μ c i σ c , i 2 ) N(\mu_{c,i}, \sigma_{c,i}^2) ,其中 μ c , i \mu_{c,i} σ c , i 2 \sigma_{c,i}^2 表示为第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 ( x i c ) = 0 P(x_i|c)=0 ,就会导致连乘以式求得的概率值为0。这意味着即便在其他属性上明显是正样本,但是由于这个属性的原因,导致最后的预测结果为负样本,这显然是不合理的。
  为了解决这个问题,常用拉普拉斯修正,即对P( c )和 P ( x i c ) P(x_i|c) 进下如下的修正:
P ( c ) = D c + 1 D + N P ( x i , c ) = D c , x i + 1 D c + N i P(c) = \frac{|D_c|+1}{|D|+N} \\ P(x_i,c) = \frac{|D_{c,x_i}|+1}{|D_c|+N_i}
其中N表示训练集中出现的类别数(label类型数), N i N_i 表示为第i个属性(特征)可能的取值数,一般为训练集中第i个属性的取值数,如果这个取值在训练集中没有出现过, N i N_i 便加1。
  拉普拉斯修正避免了因为训练集样本不充分而导致概率估值为0的问题,并且在训练集变大时,修正的影响也会逐渐减弱。

2. 半朴素贝叶斯分类器

  为了降低贝叶斯公式中后验概率的困难,朴素贝叶斯采用了属性条件独立性假设,但是现实任务中这个假设很难成立,因为在现实中,很多属性(特征)之间并不是完全独立,具有相关性。,于是人们尝试对属性条件独立性假设进行放宽,从而产生了**“半朴素贝叶斯分类器”**。其基本思想为:适当考虑一部分属性间的依赖关系,从而既不需要进行完全联合概率计算,又不至于忽略了属性间的相互依赖关系
   “独依赖估计(One-Dependent Estimator, ODE)” :一次最多依赖一个属性:
P ( c x )     P ( c ) i = 1 d P ( x i c , p a i ) P(c|x) \ ∝ \ P(c)\prod_{i=1}^{d}P(x_i|c,pa_i)
其中 p a i pa_i 是属性 x i x_i 所依赖的属性称为父属性。

2.1 SPODE算法

  最直接的做法就是所有属性都依赖于一个属性,称为“超父”,然后通过交叉验证的方式来确定超父属性,这就是SPODE(Super-Parent ODE)方法

2.2 TAN算法

  TAN(Tree Augmented Naive Bayes):则是在最大带权生成树算法的基础上,通过以下几个步骤将属性间的依赖关系约简为上图所示的树形结构:

【关于这一部分,书上讲的也比较浅,我这里暂时也不做深入的研究,留待今后又需要再详细研究研究。】

2.3 AODE算法

  AODE(Averaged One-Dependent Estimator)是一种集成学习。基于集成学习机制、更为强大的独依赖分类器。与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) \ ∝ \ \sum_{i=1,|D_{x_i}| \geq m' }^{d}P(c,x_i) \prod_{j=1}^{d}P(x_j|{c,x_i})
其中 D x i D_{x_i} 是在第i个属性(特征)上取值为 x i x_i 的样本的集合, m’ 为阔值常数。显然,AODE需估计 P ( c , x i ) P(c,x_i) P ( x j c , x i ) P(x_j|{c, x_i})
P ( c , x i ) = D c , x i + 1 D + N i P ( x j c , x i ) = D c , x i , x j + 1 D c , x i + N j P(c,x_i) = \frac{|D_{c,x_i}|+1}{|D|+N_i} \\ P(x_j|{c, x_i}) = \frac{|D_{c,x_i,x_j}|+1}{||D_{c,x_i}|+N_j}
其中其中 N i N_i 是第i个属性可能的取值数, D c , x i D_{c,x_i} 是类别为c且在第i个属性上取值为 x i x_i 的样本集合, D c , x i , x j D_{c,x_i,x_j} 是类别为c且在第i和第j个属性上取值分别为 x i x_i x j x_j 的样本集合。
可以看出,AODE与朴素贝叶斯分类器类似,其训练过程也是“计数”。

3. 贝叶斯网

  贝叶斯网(Bayesian network)亦称"信念网" (belief network) ,它借助有向无环图(Directed Acyclic Graph,简称DAG)来刻画属性之间的依赖关系,并使用条件概率表(Conditional Probability Table , CPT)来描述属性的联合概率分布。

贝叶斯网结构表达了属性间的条件独立性,如上图所示的贝叶斯网,其联合概率分布可以表达为:
P ( x 1 , x 2 , x 3 , x 4 , x 5 ) = P ( x 1 ) P ( x 2 ) P ( x 3 x 1 ) P ( x 4 x 1 , x 2 ) P ( x 5 x 2 ) P(x_1,x_2,x_3,x_4,x_5) = P(x_1)P(x_2)P(x_3|x_1)P(x_4|x_1,x_2)P(x_5|x_2)

在贝叶斯网中有三种典型的三个变量间的依赖关系:

下面我将分析这三种结构变量之间的关系(书上只写了一种):
同父结构:
我们考虑 x 3 x_3 x 4 x_4 x 1 x_1 确定与否的条件下的关系:
P ( x 3 , x 4 ) = x 1 P ( x 1 , x 3 , x 4 ) = x 1 P ( x 1 ) P ( x 3 x 1 ) P ( x 3 x 1 ) P(x_3, x_4) = \sum_{x_1}P(x_1,x_3,x_4)\\ =\sum_{x_1}P(x_1)P(x_3|x_1)P(x_3|x_1)
这时,如果 x 1 x_1 确定,那么有 P ( x 3 , x 4 ) = P ( x 3 x 1 ) P ( x 3 x 1 ) P(x_3, x_4) = P(x_3|x_1)P(x_3|x_1) ,此时 x 3 x_3 x 4 x_4 条件独立;如果 x 1 x_1 不确定, x 3 x_3 x 4 x_4 不独立。
V型结构:
考虑 x 1 x_1 x 2 x_2 x 4 x_4 确定与否的条件下的关系:
P ( x 1 , x 2 ) = x 4 P ( x 1 , x 2 , x 4 ) = x 1 P ( x 1 ) P ( x 2 ) P ( x 4 x 1 , x 2 ) P(x_1, x_2) = \sum_{x_4}P(x_1,x_2,x_4)\\ =\sum_{x_1}P(x_1)P(x_2)P(x_4|x_1, x_2)
这时,如果 x 4 x_4 确定,那么有 P ( x 1 , x 2 ) = P ( x 1 ) P ( x 2 ) P(x_1, x_2) = P(x_1)P(x_2) ,此时 x 1 x_1 x 2 x_2 边缘独立;如果 x 4 x_4 不确定, x 1 x_1 x 2 x_2 不独立。
顺序结构:
考虑y和z在x确定与否的条件下的关系:
P ( y , z ) = x P ( x , y , z ) = x P ( x ) P ( y x ) P ( z x ) P(y, z) = \sum_{x}P(x,y,z)\\ =\sum_{x}P(x)P(y|x)P(z|x)
这时,如果x确定,那么有 P ( y , z ) = P ( y x ) P ( z x ) P(y,z) = P(y|x)P(z|x) ,此时y和z条件独立;如果x不确定,y和z不独立。

【注:边缘独立:P(A,B) = P(A)P(B); 条件独立:P(A,B)=P(A|C)P(B|C)】

为了分析有向图中变量间的条件独立性,可使用"有向分离" (D-separation)。我们先把有向图转变为一个无向图:
(1) 找出有向图中的所有V 型结构,在V 型结构的两个父结点之间加上一条无向边;
(2) 将所有有向边改为无向边。
由此产生的无向图称为"道德圈" (moral graph) ,令父结点相连的过程称为
“道德化” (moralization)。

3.1 贝叶斯网的学习

  贝叶斯网学习的首要任务就是根据训练数据集来找出结构最"恰当"的贝叶斯网"评分搜索"是求解这一问题的常用办法。具体来说,我们先定义一个评分函数(score function) ,以此来评估贝叶斯网与训练数据的契合程度,然后基于这个评分函数来寻找结构最优的贝叶斯网。
  常用评分函数通常基于信息论准则,此类准则将学习问题看作一个数据压缩任务,学习的目标是找到一个能以最短编码长度描述训练数据的模型,此时编码的长度包括了描述模型自身所需的字长度和使用该模型描述数据所需的字节长度。对贝叶斯网学习而言,模型就是一个贝叶斯网,同时,每个贝叶斯网描述了一个在训练数据上的概率分布,自有一套编码机制能使那些经常出现的样本有更短的编码。于是我们应选择那个综合编码长度(包括描述网络和编码数据)最短的贝叶斯网,这就是"最小描述长度" (Minimal DescriptionLength,简称MDL) 准则。
给定训练集D,贝叶斯网 B = < G , θ > B=<G,\theta> 在D上的评分函数可以写为:
s ( B D ) = f ( θ ) B L L ( B D ) L L ( B D ) = i = 1 m l o g P b ( x i ) s(B|D) = f(\theta)|B|-LL(B|D) \\ LL(B|D) =\sum_{i=1}^{m}logP_b(x_i)
其中,|B|是贝叶斯网的参数个数, f ( θ ) f(\theta) 表示每个参数 θ \theta 所需要的字节数,LL(B|D)是贝叶斯网B的对数似然。
  对于 f ( θ ) f(\theta)有以下的几种情况:
f ( θ ) = 1 : f(\theta) = 1: 得到AIC(Akaike Information Criterion)评分函数:
A I C ( B D ) = B L L ( B D ) AIC(B|D) = |B| - LL(B|D)
f ( θ ) = 1 2 l o g   m f(\theta) = \frac{1}{2}log\ m: 得到BIC(Bayesian Information Criterion)评分函数:
B I C ( B D ) = l o g   m 2 B L L ( B D ) BIC(B|D) = \frac{log\ m}{2}|B| - LL(B|D)
f ( θ ) = 0 f(\theta) = 0: 退化为极大似然估计。

  为了最小化评分函数s(B|D),只需对网络结构进行搜索,而候选结构的最优参数可直接在训练集上计算得到。不幸的是,从所有可能的网络结构空间搜索最优贝叶斯网结构是一个NP难问题,难以快速求解.有两种常用的策略能在有限时间内求得近似解:
  第一种是贪心法,例如从某个网络结构出发,每次调整一条边(增加、删除或调整方种是贪心法,例如从某个网络结构出发,每次调整一条边(增加、删除或调整方向),直到评分函数值不再降低为止;
  第二种是通过给网络结构施加约束来削减空间,例如将网络结构限定为树形结构等。

3.4 贝叶斯网的推断-吉布斯采样

  当网络结点较多、连接稠密时?难以进行精确推断,此时需借助"近似推断",通过降低精度要求,在有限时间内求得近似解.在现实应用中,贝叶斯网的近似推断常使用吉布斯采样(Gibbs sampling)来完成,这是一种随机采样的方法:

  吉布斯采样算法先随机产生一个与证据E=e一致的样本$q_0$作为初始点,然后每步从当前样本出发产生下一个样本.具体来说,在第t次来样中,算法先假设$q_t = q_{t-1}$ ,然后对非证据变量逐个进行采样改变其取值,采样概率根据贝叶斯网B 和其他变量的当前取值(即Z=z)计算获得.假定经过T次采样得到的与q一致的样本共有$n_q$个,则可近似估算出后验概率: $$ P(Q=q|E=e) = \frac{n_q}{T} $$

[]4. EM(Expectation Maximization)算法

EM算法是一种迭代优化策略,由于它的计算方法中每一次迭代都分两步,其中一个为期望步(E步),另一个为极大步(M步),所以算法被称为EM算法(Expectation Maximization Algorithm)。EM算法受到缺失思想影响,最初是为了解决数据缺失情况下的参数估计问题,其算法基础和收敛有效性等问题在Dempster,Laird和Rubin三人于1977年所做的文章Maximum likelihood from incomplete data via the EM algorithm中给出了详细的阐述。其基本思想是:首先根据己经给出的观测数据,估计出模型参数的值;然后再依据上一步估计出的参数值估计缺失数据的值,再根据估计出的缺失数据加上之前己经观测到的数据重新再对参数值进行估计,然后反复迭代,直至最后收敛,迭代结束。
  EM算法作为一种数据添加算法,在近几十年得到迅速的发展,主要源于当前科学研究以及各方面实际应用中数据量越来越大的情况下,经常存在数据缺失或者不可用的的问题,这时候直接处理数据比较困难,而数据添加办法有很多种,常用的有神经网络拟合、添补法、卡尔曼滤波法等等,但是EM算法之所以能迅速普及主要源于它算法简单,稳定上升的步骤能非常可靠地找到“最优的收敛值”。随着理论的发展,EM算法己经不单单用在处理缺失数据的问题,运用这种思想,它所能处理的问题更加广泛。有时候缺失数据并非是真的缺少了,而是为了简化问题而采取的策略,这时EM算法被称为数据添加技术,所添加的数据通常被称为“潜在数据”,复杂的问题通过引入恰当的潜在数据,能够有效地解决我们的问题。
  EM算法是一种迭代式的方法,其基本想法是:若参数 θ \theta 己知则可根据训练数据推断出最优隐变量Z的值(E步) ;反之,若Z的值已知,则可方便地对参数 θ \theta 做极大似然估计(M步)。
  给定的训练样本是 { x 1 , x 2 , . . . , x n } \{x_1,x_2,...,x_n\} ,样例间独立,我们想找到每个样例隐含的类别z,能使得p(x,z)最大。p(x,z)的最大似然估计如下:
L ( θ ) = i = 1 m l o g   p ( x ; θ ) = i = 1 m l o g   z p ( x , z ; θ ) L(\theta) = \sum_{i=1}^{m}log\ p(x;\theta) \\ = \sum_{i=1}^{m}log\ \sum_{z} p(x,z;\theta)

其基本步骤如下:

EM这块理解的不够好,改日另起一片文章,总结一下,这里给感兴趣的朋友提供几个链接,以供大家学习:
JerryLead-(EM算法)The EM Algorithm
EM算法
EM算法(Expectation Maximization Algorithm)详解

猜你喜欢

转载自blog.csdn.net/kabuto_hui/article/details/84255106
今日推荐