1、贝叶斯分类器,主讲人:陈鹏2017年4月8日,目的,第1页,1:了解什么是贝叶斯决策论。2:什么是朴素贝叶斯分类器,半朴素贝叶斯分类器。3:什么是贝叶斯网。4:EM算法。5:能看懂Python实现的贝叶斯算法代码,Content,1:贝叶斯分类器2:贝叶斯网3:EM算法4:demo,第2页,1:贝叶斯分类器,假设有一个样本集X=x1,x2.xn,每一个样本x=a1,a2.an个属性组成,并且以知它可能有Y=y1,y2yn种分类。贝叶斯分类器的目的就是寻找一种映射y=g(x),使得样本集中每一个xi在Y中都有一个对应的yj与之对应。,第2页,补充知识:,先验概率:人们根据以往经验分析得到的概率。
2、条件概率:P(A/B) = P(AB)/P(B)贝叶斯公式:P(B/A) = P(BA)/P(A) = P(A/B)*P(B)/P(A),第2页,1:贝叶斯分类器,假设现在有一样本x=a1,a2.an,我们需要对其进行分类,根据贝叶斯决策论,其实就是求P(yj/x)。即求在x出现的条件下分类为yj的概率。当然最终的分类我们肯定是求出P的最大值所对应的yj作为最终的类别。来个栗子:我们在街上看见一个皮肤比较黑的人,此时我们可能会猜测他来自非洲。因为非洲黑人比较多。当然他也可能来自亚洲,欧洲等,具体我们可能需要根据具体情况分析(语言,身形等),第2页,1:贝叶斯分类器,将刚刚我们描述的过程进行归纳
3、总结如下:设x=a1,a2.am为一个待分类的样本,其中ai为x对应的属性:类别集合Y=y1,y2.yn。N种分类。:计算P(y1/x), P(y2/x), P(y3/x), P(y4/x), P(y5/x),. P(yn/x):计算P(yk/x) = MaxP(y1/x),P(y2/x).P(yn/x);,第2页,1:贝叶斯分类器,:计算P(y1/x), P(y2/x), P(y3/x), P(y4/x), P(y5/x),. P(yn/x)那么问题来了?怎么计算第三步的概率呢?有贝叶斯公式得:P(yi/x) = P(x/yi)*P(yi)/P(x)又因为P(x)和具体的分类无关我们可以将其
4、看做是常数。所以我们的目标就是求P(x/yi)*P(yi)的最大值。,第2页,1:贝叶斯分类器,目标就是求P(x/yi)*P(yi)的最大值:朴素贝叶斯分类器:我们假设样本x的各个属性a1.am的各个属性之间是无关的-相互独立的。则P(x/yi)便可以写成P(x/yi) = P(a1/yi)*P(a2/yi).P(am/yi);即我们的目标就是target = Max(P(yi)* =1 m (/) ) i=1,.n;那么问题又来了?这里的属性(/)怎么计算?,第2页,1:贝叶斯分类器,那么问题又来了?这里的属性(/)怎么计算?分两种情况:1:属性aj是不连续的,我们可以通过先验概率计算2:属
5、性aj是连续的值。此时我们假设aj服从正态分布(高斯分布)P(aj) = g(aj,yi,yi) 其中yi,表示特征yi中属性aj的平均值, yi 表示特征yi中属性aj的标准差,这些我们根据样本都可以计算出来,第2页,1:贝叶斯分类器,以上便是我们所谓的朴素贝叶斯分类器。补充一点:需要注意的实际计算中我们的对于某一个分类yi中可能并不能包含所有的x的属性aj;此时P(aj/yi) = 0;出现这种情况时往往会对我们的分类器造成较大影响(连乘),为了规避这种影响我们yi对应的aj+1;当样本数量较大时并不会对整体产生很大影响。也是我们说的Laplace校准。,第2页,1:贝叶斯分类器,现在大家
6、还记得什么叫朴素贝叶斯分类器么?,第2页,是的,其实就是当样本的各个属性没有任何相关性时,我们所使用的分类器。那么问题又来了?现实生活中,任何一个样本它的各个属性不可能完全不想关的,那么对于这样这种情况我们该如何解决呢?,1:贝叶斯分类器,第2页,为了解决样本属性之间相关问题的,我们又提出了半朴素贝叶斯分类器这里所谓的半朴素-就是考虑一部分属性间的相互依赖信息。优点:既不需要考虑完全联合概率的复杂计算,也不会忽略比较强的属性之间的依赖关系。需要注意的时:我们这里仅仅考虑半朴素贝叶斯分类器常用的策略-“独依赖估计”(One-Dependent Estimator)ODE。P(yi/x) -= P
7、(yi)*P(aj/yi,Pa) -其中Pa表示属性aj锁依赖的属性称其为父属性。此时问题的关键转化为-怎么去确定每一个属性的父属性,1:贝叶斯分类器,第2页,P(yi/x) -= P(yi)*P(aj/yi,Pa) -怎么去确定每一个属性的父属性Pa?常用的两种方式:1:Super-Parent ODE方法,超父属性,即所有的属性都共同依赖一个属性。如下图B所示,1:贝叶斯分类器,第2页,2:TAN (Tree Augmented nave Baye) 算法:该算法是在最大带权生成树的算法的基础上,通过一下面的步骤将依赖关系转化为下图C所示的属性结构,A:计算任意两个属性之间的条件互信息 I
8、(xi,xj)B:以属性为节点构建完全图,任意两个节点之间权重设置为上面计算出来的条件互信息I(xi,xj)C:构建次有向图的最大带权生成树,挑选根变量,并且将边置为有向的D:加入类别节点y,增加类别y到每一个节点(属性)的有向边。,通过以上描述我们可以看出,通过最大生成树算法,TAN算法其实仅仅是保留了强相关属性之间的依赖性。,1:贝叶斯分类器,第2页,3:AODE(Averaged One-Dependent Estimator)是一种基于集成学习的更加强大的ODE分类器。尝试将每一个属性作为超父来构造SPODE模型,以此类推m个分类属性就有m个SPODE模型,然后分别计算后验概率,选出其
9、中具有较好样本支持的SPODE模型集成起来作为最终预测结果。到此为止我们已经学习了朴素贝叶斯分布和半朴素贝叶斯分布。让我们一起来回顾一下他们的区别和联系:朴素贝叶斯分类器:不考虑样本属性之间的依赖性。半朴素贝叶斯分类器:只考虑一部分属性之间的相互依赖信息。确定依赖关系的三种方式:A:SPODE 一个超级父亲B:TAN通过计算各个属性之间的条件互信息,做成图在对该图以最大权方式生成树,从而构建一个属性之间相互依赖的树形结构。C:AODE方式,构建多个SPONE选择其中的信赖度更可靠的SPONE模型进行集成作为最终的预测结果。经验告诉我们半朴素相对于朴素分类器而言器泛型更好。既然这样,我们是否可以
10、通过将ONE改为KNE以达到提高分类器泛型的目的呢?PS:需要注意的是,当我们提高属性之间依赖对数K值时,我们的计算所需的样本数量将会以指数级别增长。,2:贝叶斯网,第2页,概念:贝叶斯网(Bayesian network)又称为信念网络(belief network)它借助于有向无环图(Directed Acyclic Graph,简称DAG)来刻画属性之间依赖关系。并借助条件概率表(Contaditonal Probability Table)简称CPT来描述属性联合概率分布。先来看一个例子假设现在某一个网站想要根据已有条件现有用户的真假(我们使用变量R表示),每一个用户都有以,下头像,日
11、志密度,好友密度。并且他们之间存在如下图所示的依赖关系详见下页,2.1:贝叶斯网基本概念,第2页,有图中的我们仅仅考虑是否有头像这个属性对账号是否真实的影响。我们我们想要计算的概率是在用户有头像的情况下该账号是安全账号的概率:P(R/H),下面使计算在头像为假的条件下,用户为假概率:计算结果表明仅知道头像为假的情况下,有大约35.7%的概率此账户也为假。,2.1:贝叶斯网基本概念,第2页,此时我们再来看贝叶斯网络的定义:一个贝叶斯网络定义包括一个有向无环图(DAG)和一个条件概率表集合。DAG中每一个节点表示一个随机变量,可以是可直接观测变量或隐藏变量,而有向边表示随机变量间的条件依赖;条件概
12、率表中的每一个元素对应DAG中唯一的节点,存储此节点对于其所有直接前驱节点的联合条件概率。贝叶斯网络有一条极为重要的性质,就是我们断言每一个节点在其直接前驱节点的值制定后,这个节点条件独立于其所有非直接前驱前辈节点。多变量非独立联合条件概率分布有如下求取公式而贝叶斯网由于有上面我么所说的性质:它的求取公式则可以简化如下其中Praents(xi)表示属性xi直接前驱节点的联合,2.1:贝叶斯网基本概念,第2页,此时我们再来看贝叶斯网络的定义:一个贝叶斯网络定义包括一个有向无环图(DAG)和一个条件概率表集合。DAG中每一个节点表示一个随机变量,可以是可直接观测变量或隐藏变量,而有向边表示随机变量
13、间的条件依赖;条件概率表中的每一个元素对应DAG中唯一的节点,存储此节点对于其所有直接前驱节点的联合条件概率。贝叶斯网络有一条极为重要的性质,就是我们断言每一个节点在其直接前驱节点的值制定后,这个节点条件独立于其所有非直接前驱前辈节点。多变量非独立联合条件概率分布有如下求取公式而贝叶斯网由于有上面我么所说的性质:它的求取公式则可以简化如下其中Praents(xi)表示属性xi直接前驱节点的联合,2.2:贝叶斯网络的构造及学习,第2页,在这里我简单介绍下贝叶斯网络的构造和学习:1:构造:看下图:,2.2:贝叶斯网络的构造及学习,第2页,显然:x3和x4在x1给定时相互独立,x3和x5在x2给定时
14、相互独立。那么当什么情况下变量之间的独立,什么情况下变量之间相互依赖,下面我们给出了常见的几种变量之间拓扑关系图,1:同父结构,如上面结构所示:给定x1,x3和x4相互独立2:V型结构,给定x4,x1和x2必相互不独立3:顺序结构:给定x,y和z将相互独立。,2.2:贝叶斯网络的构造及学习,第2页,对于同父结构可能容易理解,但是对于V型结构,为什么当x4未给定时x1和x2是独立给定值之后反而不独立了呢?即在x4未知的条件下,x1、x2被阻断(blocked),是独立的,称之为head-to-head条件独立。,2.2:贝叶斯网络的构造及学习,第2页,回归正题,贝叶斯网络的构造主要是要明白给个变
15、量之间的相互依赖关系-进而分析有向图中各个变量的独立性。为了分析有向图中变量间的条件独立性,我们使用“有向分离”(D-separation)我们先要将有向图转换成一个无向图。1:在有向图中找到所有的B型结构,在V型结构中的两个父节点之间添加一条无向边。2:将所有有向边变为无向边。由此产生的图称之为道德图,令父节点相连的过程称之为“道德化”。基于道德图我们能够直观迅速的找到变量之间条件独立性。,2.2:EM算法,第2页,极大似然估计(Maximum Likelihood Estimate,MLE):当一件事情发生时,我们取寻求这个的这件事情发生的最大可能的原因。Eg:一个小故事:有一个业余的猎人
16、新手和一名资深猎人,他们一人一把枪地跑去打猎,砰地一声枪响,一头小鹿应声倒地,这时候问你:更可能的情况是猎人打中了还是新手打中了?在这个故事里,【发生的某事件X】是小鹿被打中,【我们关心的事情A】是谁打中了小鹿,【A的可能的情况】有猎人打中或新手打中,【极大似然估计Ahat】是猎人打中。估计类条件概率常用一种策略是:先假定我们的样本具有某种概率分布,然后基于样本对概率分布的参数进行估计。假设我们现在有样本集D,我们知道Dc为样本集D中的第c类样本的集合。假设这些样本独立分布,则参数c对于数据集Dc的似然是,2.2:EM算法,第2页,对参数c对进行极大似然估计。就是去寻找能最大化P(Dc| c)
17、的参数值c 。直观上看,极大似然就是在试图在c 所有可能的取值中。找到一个能使数据出现的“可能性”最大的值。为了方便计算我们通常将其写成对数形式,在连续属性情形下,假设概率密度函数P(x|c)N(c,c) c =1/|Dc| x c = 1/|Dc| x (c)(c)T,2.2:EM算法,第2页,在前面的讨论中假设样本的所有属性都是可以被观察到的,即所有样本都是“完整”的,但是实际我们的样本往往都是不完整的,例如:西瓜的根蒂已经脱落我们就无法判断其是“蜷缩”还是“硬挺的”在这种未观测到变量的情况下,是否仍然能够对参数进行无偏估计呢?隐变量:Z,已经观察到的变量XLL(|X,Z) = lnP(X,Z| )由于上式中Z是隐变量无法直接求解,我们可以通过对Z计算期望,啦最大化已观测到的数据对数的“边际似然”(marginal likelihood),