您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 朴素贝叶斯分类算法以及Matlab实现
朴素贝叶斯分类算法及其的Matlab实现汇报人:18108036林杰民18108037余鹏18108020马健什么是分类从数学角度来说,分类问题可做如下定义:已知集合,C={ω1,ω2,…,ωn}和I={x1,x2,…,xm,…}确定映射规则ω=f(x),使得任意的x∈I有且仅有一个ωi∈C使得ωi=f(xi)成立。其中C叫做类别集合,其中每一个元素是一个类别,而I叫做项集合,其中每一个元素是一个待分类项,f叫做分类器。分类算法的任务就是构造分类器f。这里要着重强调,分类问题往往采用经验性方法构造映射规则,即一般情况下的分类问题缺少足够的信息来构造100%正确的映射规则,而是通过对经验数据的学习从而实现一定概率意义上正确的分类,因此所训练出的分类器并不是一定能将每个待分类项准确映射到其分类,分类器的质量与分类器构造方法、待分类数据的特性以及训练样本数量等诸多因素有关。贝叶斯定理贝叶斯定理:一般来说,事件A在事件B已经发生的条件下发生的概率与事件B在事件A已经发生的条件下发生的概率是不一样的。但是这个两者是有一定的联系的:P(B|A)P(A)=P(A|B)P(B)那么对上述公式进行变形就得到贝叶斯公式的经典表达形式:P(A|B)=P(B|A)P(A)/P(B)P(A|B)是已知B发生后A的条件概率,也由于得自B的取值而被称作A的后验概率。P(B|A)是已知A发生后B的条件概率,也由于得自A的取值而被称作B的后验概率。P(A)是A的先验概率(或边缘概率)。之所以称为“先验”是因为它不考虑任何B方面的因素。P(B)是B的先验概率(或边缘概率)。按照以上术语,贝叶斯定理也可以表述为:后验概率=(相似度×先验概率)/标准化常量,即:后验概率与先验概率与相似度的乘积成正比。朴素贝叶斯思想基础朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。——极大后验假设通俗来说,就好比这么个道理,你在街上看到一个黑人,我问你你猜这哥们哪里来的,你十有八九猜非洲。为什么呢?因为黑人中非洲人的比率最高,当然人家也可能是美洲人或亚洲人,但在没有其它可用信息下,我们会选择概率最大的类别,这就是朴素贝叶斯的思想基础。那它朴素在哪里?朴素贝叶斯分类假定:在给定实例类标记的前提下,实例的属性值之间是相互条件独立的。朴素贝叶斯分类器工作原理举个例子来理解一下通过建立一个分类器说明文本是否涉及science。给定以下训练集,如下表所示TextCategoryAgoodsubjectScienceThewarisoverNotscienceAverycleanacademyScienceAnexcellentprofessorScienceItwasaclosewarNotscience用贝叶斯定理可以逆转条件概率:因而只需要比较:的大小只要计算句子“Averyclosesubject”多少次出现在“science”的训练集中,将其除以总数,就可以获得P(averyclosesubject|science)。这便会涉及问题:训练集中并没有出现“Averyclosesubject”。所以这个概率是零。除非要分类的每个句子都出现在训练集中,否则模型不会很有用。我们采用朴素贝叶斯的独立假设,这对句子中的每个单词进行切分。作变形:P(averyclosesubject)=P(a)×P(very)×P(close)×P(subject),P(Averyclosesubject|science)=P(a|science)×P(very|science)×P(close|sciecne)×P(subject|science)首先,计算每个类别的先验概率:对于训练集中的给定句子,P(science)=3/5;P(notscience)=2/5;然后,在计算P(a│science)=2/10。(10个单词中出现2次)P(very│science)=1/10P(subject│science)=1/10但是,close不会出现在任何science的样本中,即:P(close│science)=0。这样会使得计算的最终概率为零。因此,使用拉普拉斯平滑的方法,将每个计数初始值设为1,但为了平衡这一点,将可能的词数(有15个不同的词)加到除数。即得到:每个类别的先验概率:P(science)=3+1/5+2;P(notscience)=2+1/5+2;特别地P(close│science)=0+1/10+15其他如下表P(averyclosesubject|science)*P(science)=P(a|science)×P(very|science)×P(close|sciecne)×P(subject|science)×P(science)=1.8432*10-5P(averyclosesubject|notscience)*P(notscience)=P(a|notscience)×P(very|notscience)×P(close|notsciecne)×P(subject|notscience)×P(notscience)=4.8255*10-61.8432*10-54.8255*10-6显然,“Averyclosesubject”是science类!wordP(word|science)P(word|notscience)AVeryCloseSubject15101215911151011159101591115910151010151011朴素贝叶斯分类的一个基本流程图对每一个类别计算P(x|yi)P(yi)以P(x|yi)P(yi)的最大项作为x的所属类别确定特征属性获取训练样本对每一个类别计算P(yi)对每一个特征属性计算所有划分的条件概率准备工作阶段应用测试阶段总结从上面的整个程序的实现,可以发现,整个朴素贝叶斯分类分为三个阶段。①准备阶段。包括数据搜集,数据导入以及数据清洗阶段。获得可以进行分析的质量比较好的结果。然后将数据划分为训练集和测试集。②构建阶段。构建分类器,进行数据训练。主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计,并将结果记录。其输入是特征属性和训练样本,输出是分类器。这一阶段是机械性阶段,根据前面讨论的公式可以由程序自动计算完成。③第三阶段——应用阶段。这个阶段的任务是使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系。这一阶段也是机械性阶段,由程序完成。朴素贝叶斯算法成立的前提是各个属性之间是相互独立的。当数据集满足这个独立性假设的时候,分类的准确率较高,否则就可能不是很好。朴素贝叶斯分类算法的特点①这个算法比较的就简单,但是却很高效,在朴素贝叶斯的假设前提之下,分类结果准确率很高。②同样,如果属性之间存在一个相关性联系的话,这个分类的精度就会大大降低。因为此时的独立性假设就会不成立,导致计算得到的条件概率均出现不同程度的偏差。改进方法为此学者们提出了许多改朴素贝叶斯分类器的的方法,概括起来主要有五大类:①结构扩展,这类方法用有向边来表达属性之间的依赖关系;②属性选择,这类方法从原始的属性空间中搜索出一个最佳的属性归约子集;③属性加权,这类方法给属性赋予不用的权值;④局部学习,又称为实例选择,这类方法利用局部学习原理在测试实例的邻域构建朴素贝叶斯分类器;⑤实例加权,这类方法给每个训练实例赋予不同的权值。相关知识:混淆矩阵如有150个样本数据,这些数据分成3类,每类50个。分类结束后得到的混淆矩阵为:预测类1类2类3实际类14320类25451类32349每一列之和为50,表示50个样本,第一列说明:类1的50个样本有43个分类正确,5个错分为类2,2个错分为类3。主讲人:林杰民PPT制作人:马健余鹏——内容来自某个下午观看CSDNAiYong_SJTU博主提供的文章后三个骚年讨论的结果感谢您的观看THANKYOUFORYOURWATCHING
本文标题:朴素贝叶斯分类算法以及Matlab实现
链接地址:https://www.777doc.com/doc-3179766 .html