从贝叶斯公式到朴素贝叶斯算法
Posted 小象
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从贝叶斯公式到朴素贝叶斯算法相关的知识,希望对你有一定的参考价值。
源 | 大数据每日评论 文 | 数据挖掘机
壹
贝叶斯公式
贝叶斯公式是概率论中一个非常重要的公式,该公式之前并未受到重视,后来在垃圾邮件分类中使用了贝叶斯公式衍生出来的贝叶斯分类器很好的解决了这一问题,在概率论中,有很多公式都非常重要,其推理过程也比较复杂,本文将仅从贝叶斯公式开始讲起,逐步过渡到贝叶斯分类器。
首先,贝叶斯公式的引出可以用如下的方式来很好的图形化:
从上面图形可以看出,在整个样本空间S中,存在两个事件A和B,其中AB=AB表示A和B的共同部分,也就是A和B同时发生的情况,此处用P(x)表示在样本空间S中事件X发生的概率,假设S=1,P(A)=0.3,P(B)=0.4,P(AB)=0.1,并且规定P(A|B)表示在事件B发生的条件下,事件A发生的概率。则根据之前学的集合知识可知:
P(A|B)=P(AB)/P(B)=0.1/0.4=0.25
即条件概率P(A|B)等于A和B同时发生的部分AB占B的比例,同时,根据定义可以知道:P(B|A)=P(AB)/P(A),然后,根据这两个公式中共同部分P(AB),则可以得到:P(AB)=P(B|A)P(A)=P(A|B)P(B),即得到公式:
P(A|B) = P(B|A)P(A)/P(B)
贰
朴素贝叶斯分类器
贝叶斯分类器是在贝叶斯公式的基础上变化而来,然而,在构建贝叶斯分类器的时候有一个问题较难解决,即在训练样本中各个属性之间往往是存在联系的,也就是属性之间互相影响,一个变化另一个也随着变化,这给计算带了了极大难度。
为了避免这一问题,需要假设各个属性之间是相互独立的,即他们之间不存在影响关系,而是独立的对结果产生影响,这也就是贝叶斯分类器被称之为朴素贝叶斯分类器的原因,即是简单朴素的情况,不考虑复杂情况。
假设在样本集合中,c表示样本所对应的类别(只考虑离散情况),x表示样本,xi表示样本x第i属性的取值,则根据前面的贝叶斯公式有:
其中,d为属性的数目,相当于样本x在每个属性上取值上的的概率之积。
基于以上公式就可以得到贝叶斯的判定准则
如上就是朴素贝叶斯分类器,令Dc表示训练集D中第c类样本组成的集合,根据公式可知P(c)=,即为先验概率,然后表示Dc中在第i个属性上取值为xi的样本组成的集合,于是条件概率:
若属性i是连续属性,则此时需要考虑用概率密度函数去表达,假定P(|c),其中分别表示第c类样本在第i个属性上取值的均值和方差,则有如下公式:
从上面的理论推导得到贝叶斯分类器后,下面开始构建一个贝叶斯分类器对西瓜数据集里面的”编号1”进行分类,此处使用的数据集为《机器学习》周志华版本里面的西瓜数据集3.0。
于是可以得到类的先验证概率:
然后,接着可以计算类条件下各个属性的概率:
从上面的计算结果可以看出,最终计算出”编号1”是好瓜和坏瓜的概率分别为0.063和0.000069,也就是判断为好瓜的概率远大于是坏瓜的概率,即通过贝叶斯分类器判断后,该瓜为“好瓜“。
需要注意的是,在进行计算概率的时候,会因为某些属性值的不存在而造成概率为0的情况,比如在好瓜里面,敲声=清脆,很明显此条没有,若是根据公式计算,则为0/8=0。
为了解决这一问题,引入了拉普拉斯修正,即假设N表示训练数据集D中的类别数,Ni表示第i个属性的取值数,则可以推导出如下公式:
所以,根据上述公式算出来的概率会变成如下:
P(好瓜=是)=(8+1)/(17+2)=0.474,P(好瓜=否)=(9+1)/(17+2)=0.526,这样拉普拉斯修正避免了因训练集样本不充分而导致的概率值为零的问题。
通过上面的推导和实例,已经对朴素贝叶斯算法有了较为全面的认识,下面将把前面所有讲的东西进行一下归纳和总结,然后整理出朴素贝叶斯算法的通用算法模型:
输入:训练数据集T={((x1,y1),(x2,y2),(x,y),…,(x2,y2))},其中,xi=(xi(1),xi(2),…,xi(n))T,xij表示的是第i个样本的第j个特征,xij={aj1, aj2, aj3,…, , ajSj},其中ajl表示的是第j个特征里面可能的取值里面的第l个值,j=1,2,…n,l=1,2,..,Sj,yi={c1 ,c2, …,ck};对于实例x:
输出:实例x的分类
(1) 计算先验概率和条件概率
(2) 对于给定的实例x=(,计算
(3) 确定实例x的类别
-END-
原创声明:本文为大数据每日评论原创文章,转载请联系后台。
以上是关于从贝叶斯公式到朴素贝叶斯算法的主要内容,如果未能解决你的问题,请参考以下文章