对在许多应用中,属性集和类变量之间的关系是不确定的尽管测试记录的属性集和某些训练样本相同,但是也无法确定地预测其类标号。这种情况产生的原因,可能是由于噪声,或者出现了某些影响分类的因素,却没有包含在分析中【例】考虑一个人的饮食和锻炼的频率来预测他是否患有心脏病由于遗传、吸烟过量、酗酒等影响因素没有考虑进去所以,不能确定地给出其是否患有心脏病(类标号)的判断转而求解:某一测试记录属于某一分类的概率5.3贝叶斯分类器5.3.1贝叶斯定理5.3.2贝叶斯定理在分类中的应用5.3.3朴素贝叶斯分类5.3.4贝叶斯误差率(略)5.3.5贝叶斯信念网络(简介)5.3.1贝叶斯定理考虑两个队之间的足球比赛:队0和队1。假设65%的比赛队0胜出,剩余的比赛队1获胜。队0获胜的比赛中只有30%是在队1的主场,而队1获胜的比赛中75%是主场获胜,如果下一场比赛在队1的主场进行,哪一支球队最有可能胜出?我们的目的是计算即对1在主场获胜的概率5.3.1贝叶斯定理对条件概率P(Y|X)、P(X|Y),有P(X,Y)=P(Y|X)×P(X)=P(X|Y)×P(Y)每个记录用一个d维特征向量X=(x1,x2,…,xd)表示假定有k个类y1,y2,…,yk.给定X,X属于yj类的后验概率P(yj|X)满足贝叶斯(Bayes)定理MAP(maximumposteriorihypothesis,最大后验假设)将X指派到具有最大后验概率P(yj|X)的类yj,即将X指派到P(X|yj)P(yj)最大的类yj)()()|()|(XPjyPjyXPXjyP5.3.2贝叶斯定理在分类中的应用后验概率:在比较不同Y值的后验概率时:分母P(X)总是常数,因此可以忽略。先验概率P(Y)可以通过计算训练集中属于每一个类的训练样本所占的比例容易地估计。对于类条件概率P(X|Y)的估计比较麻烦。根据类条件概率P(X|Y)的估计方法不同,贝叶斯分类的不同实现方法包括:5.3.3朴素贝叶斯分类5.3.5贝叶斯信念网络)()()|()|(XPYPYXPXYP5.3.3朴素贝叶斯分类朴素贝叶斯分类(NaïveBayesClassifier)工作原理:基于条件独立假设给定一个未知的数据样本X,分类法将预测X属于具有最高后验概率的类.即,未知的样本分配给类yj,当且仅当根据贝叶斯定理,我们有由于P(X)对于所有类为常数,只需要最大化P(X|yj)P(yj)即可.jikiyPyPij,1),|()|(XX)()()|()|(XXXPyPyPyPjjj5.3.3朴素贝叶斯分类估计P(yj)类yj的先验概率可以用下式估计P(yj)=nj/n其中,nj是类yj中的训练样本数,而n是训练样本总数估计P(X|yj)为便于估计P(X|yj),假定类条件独立----给定样本的类标号,假定属性值条件地相互独立.于是,P(X|Y=yj)可以用下式估计其中,P(xi|yj)可以由训练样本估值dijijyxPyP1)|()|(X5.3.3朴素贝叶斯分类估计P(xi|yj)设第i个属性Ai是分类属性,则P(xi|yj)=nij/nj其中nij是在属性Ai上具有值xi的yj类的训练样本数,而nj是yj类的训练样本数设第i个属性Ai是连续值属性把Ai离散化假定Ai服从高斯分布其中,ij,ij分别为给定yj类的训练样本在属性Ai上的均值和标准差222)(21)|(ijijixijjieyxP5.3.3朴素贝叶斯分类朴素贝叶斯分类器所需要的信息(计算步骤)计算每个类的先验概率P(yj)P(yj)=nj/n其中,nj是yi类的训练样本数,而n是训练样本总数对于离散属性Ai,设的不同值为ai1,ai2,…,ail,对于每个类yj,计算后验概率P(aik|yj),1klP(aik|yj)=nikj/nj其中nikj是在属性Ai上具有值aik的yj类的训练样本数,而nj是yj类的训练样本数对于连续属性Ai和每个类yj,计算yj类样本的均值ij,标准差ij。利用高斯分布估计P(xi|yj)5.3.3朴素贝叶斯分类例:P(Yes)=3/10P(No)=7/10P(有房=是|No)=3/7P(有房=否|No)=4/7P(有房=是|Yes)=0P(有房=否|Yes)=1P(婚姻状况=单身|No)=2/7P(婚姻状况=离婚|No)=1/7P(婚姻状况=已婚|No)=4/7P(婚姻状况=单身|Yes)=2/3P(婚姻状况=离婚|Yes)=1/3P(婚姻状况=已婚|Yes)=0年收入:类=No:样本均值=110样本方差=2975类=Yes:样本均值=90样本方差=25Tid有房婚姻状况年收入拖欠贷款12345678910是否否是否否是否否否单身已婚单身已婚离婚已婚离婚单身已婚单身125K100K70K120K95K60K220K85K75K90KNoNoNoNoYesNoNoYesNoYes5.3.3朴素贝叶斯分类X=(有房=否,婚姻状况=已婚,年收入=$120K)计算P(X|No)和P(X|Yes)P(X|No)=P(有房=否|No)P(婚姻状况=已婚|No)P(年收入=$120K|No)=4/74/70.0072=0.0024P(X|Yes)=P(有房=否|Yes)P(婚姻状况=已婚|Yes)P(年收入=$120K|Yes)=101.2109=0计算P(X|No)P(No)和P(X|Yes)P(Yes)P(X|No)P(No)=0.00240.7=0.00168P(X|Yes)P(Yes)=00.3=0因为P(X|No)P(No)P(X|Yes)P(Yes),所以X分类为No5.3.3朴素贝叶斯分类问题如果诸条件概率P(Xi=xi|Y=yj)中的一个为0,则它们的乘积(计算P(X|Y=yj)的表达式)为0很可能每个P(X|Y=yj)都为0解决方法使用m估计:原估计:P(Xi=xi|Y=yj)=nij/njm估计:P(Xi=xi|Y=yj)=(nc+mp)/n+m5.3.3朴素贝叶斯分类对孤立的噪声点的鲁棒性个别点对概率估计的影响很小容易处理缺失值在估计概率时忽略缺失值的训练实例对不相关属性的鲁棒性各类在不相关属性上具有类似分布类条件独立假设可能不成立使用其他技术,如贝叶斯信念网络(BayesianBeliefNetworks,BBN)朴素贝叶斯分类的特点5.3.5贝叶斯信念网络贝叶斯信念网络(Bayesianbeliefnetwork)允许在变量的子集间定义类条件独立性因果关系图模型表示变量之间的依赖给出联合概率分布的说明图示节点:随机变量边:依赖X,Y是Z的父节点/前驱,并且Y是P的父节点/前驱Z和P之间没有依赖关系图中没有环XYZP5.3.5贝叶斯信念网络变量LungCance(LC)值的条件概率表(CPT),给出其双亲结点FamilyHistory和Smoke的每个可能值的组合的条件概率5.3.5贝叶斯信念网络给出了LungCancer的CPT.对于其双亲值的每个可能组合,表中给出了LungCancer的每个值的条件概率.例如,由左上角和右下角,我们分别看到P(LungCancer=“yes”|FamilyHistory=“yes”,Smoker=“yes”)=0.8P(LungCancer=“no”|FamilyHistory=“no”,Smoker=“no”)=0.9对应于属性或变量Z1,…,Zn的任意元组(z1,…,zn)的联合概率由下式计算其中,P(zi|parents(zi))的值对应于Zi的CPT中的表目ninZParentsiziPzzP11))(|(),...,(5.3.5贝叶斯信念网络BBN提供了一种用图形模型来捕获特定领域的先验知识的方法。网络还可以用来对变量间的因果依赖关系进行编码构造网络可能既费时又费力。然而,一旦网络结构确定下来,添加新变量就十分容易贝叶斯网络很适合处理不完整的数据。对有属性遗漏的实例可以通过对该属性的所有可能取值的概率求和或求积分来加以处理因为数据和先验知识以概率的方式结合起来了,所以该方法对模型的过分拟合问题是非常鲁棒的附录:朴素贝叶斯算法的matlab求解朴素贝叶斯算法在matlab中可通过调用统计工具箱中的NaiveBayesClassification类中函数来实现。主要是由fit函数和predict函数实现,其中fit函数用于对于训练数据进行拟合,predict函数对于测试数据进行朴素贝叶斯分类。NaiveBayes.fit函数的语法和使用规则如下:nb=NaiveBayes.fit(training,class)其中,输入参数training是训练样本的属性,class是测试样本的属性,在使用时,training和的class的数据行数必须相等;输出参数nb含有拟合的各种参数和结果,包含了求解得到的先验概率分布,可以用来对测试样本进行分类。NaiveBayes.predict函数的语法和使用规则如下:cpre=predict(nb,test)其中,输入参数nb是之前的拟合结果,test是测试样本的属性;输出参数nb含有拟合的过程得到的先验概率分布;输出参数cpre是根据先验概率分布得到的对测试样本的分类结果。post=posterior(nb,test)输出参数post是得到的对测试样本的分类后验概率估计值。