朴素贝叶斯分类
在很多的应用中,属性集与类别之间的关系是不确定的,换句话说,尽管测试样本的属性值与训练样本相同,但是也不一定能正确的预测其类别,其中一个原因是噪声的存在,另一个原因是某些影响分类的属性并没有出现在属性集中。贝叶斯方法都有所耳闻,之所以称为“朴素”贝叶斯方法,是因为在分类时,假定了“各变量间相互独立”的条件,这个条件算是比较强的了,大大简化了分类时的计算,但同时也丢失了一些分类准确性,毕竟不是所有变量都相互独立。为了弱化“各变量间相互独立”条件的影响,人们又提出了基于贝叶斯方法的其它分类方法,如贝叶斯信念网络。总之,我们在数据挖掘时希望“各变量间相互独立”条件是成立的,但实际并非那样,因此在需要考虑变量间存在相关性的问题,或许在提取数据特征的时候,我们可以做到从源头去满足“各变量间相互独立”条件,这样最好了。扯远了,还是介绍一下朴素贝叶斯分类方法吧。
1. 贝叶斯定理的应用
在其它一些分类方法中(如决策树、基于规则的分类、K最邻近分类等),类别预测结果是唯一的,而在朴素贝叶斯分类方法中,对于待分类样本,可能出现算得其有70%的可能性属于类,有25%的可能性属于类,有5%的可能性属于类,这是朴素贝叶斯分类方法的特别之处,依据计算结果的大小,最终当然有理由认为属于类。
对朴素贝叶斯分类器的训练也即是生成一张概率表,为了生成这张概率表,我们先引入贝叶斯定理,对贝叶斯理论这里就不多说了,这里直接引入贝叶斯公式,然后说明该公式是如何在分类过程中作用的
表示类别的先验概率,可以理解为当我们对待分类样本的取值一无所知时,将其分为不同类的概率。我们可以按照以下公式确定
表示类的先验概率,表示训练集中属于类的样本个数,表示训练集中包含的样本数
表示在已知类别下,样本取某组属性值的概率。由于训练集中包含多个变量,因此在非“朴素”条件下计算是非常困难的,因为不知道诸多变量之间是否存在相关性以及相关程度如何,而在“朴素”条件下,计算任意一组取值的条件概率则变得简单,假设训练集中包含变量个数为
表示样本取某组值的概率,由于总体分布未知,要想准确的计算该值是不可能的,但好在对于一个待分类样本,该值在计算时是一个固定值,可以不用计算,我们在确定样本的类别时,并不是真的计算出其属于各类的概率,而是要比较其属于各类概率的大小,最终找出最大的概率值。
2. 条件概率的计算方式
对于条件概率的计算,一般有两种方式,对应着两种不同的情况,一种是待分类样本所有的取值情况在训练集中均存在,另外一种情况是待分类样例出现了训练集中没有的变量,或者已有变量上的某个值(针对离散取值的变量)。在训练集较大的情况下,第一种情况是比较常见的。
情况一
第一种情况下的条件概率的计算思路比较直接,的计算方法如下
其中表示训练集中属于类的样本数,表示在属于类的样本中,第 个变量取值为的样本数
举个例子说明以上的内容,现需要依据个人房产情况、婚姻状况来判断其时候会拖欠银行贷款,训练集如下表
计算可以得到:
P(有房=是|No)=3/7 P(有房=否|No)=4/7
P(有房=是|Yes)=0 P(有房=否|Yes)=1
P(婚姻状况=单身|No)=2/7 P(婚姻状况=离婚|No)=1/7 P(婚姻状况=已婚|No)=4/7
P(婚姻状况=单身|Yes)=2/3 P(婚姻状况=离婚|Yes)=1/3 P(婚姻状况=已婚|Yes)=0
以上的条件概率计算,是以样本特征取值为离散值的情况说明的,对于特征连续取值的情况,有两种方法计算其条件概率:
- 将连续的取值离散化,用相应的离散区间替换连续属性值,通过计算类的训练样本落入对应区间的比例来估计条件概率,显然,估计的误差由离散的方式决定。
- 可以假设连续特征服从某种概率分布,然后使用训练数据估计概率分布的参数。高斯分布常用来表示连续特征的类条件概率分布,该分布的均值为,方差为
均值可以用样本均值来估计,方差可以用样本方差来估计。还是用上表的数据,用连续值特征——年收入来说明该方法,当一个人不会拖欠贷款时,我们假设它的年收入服从高斯分布,则
给定一个测试记录,当年收入为120K时其条件概率为
事实上,对于连续值的概率密度函数,任何一点上的概率值均为0,我们应该计算落在区间内的概率值,是一个非常小的常数,这样可以近似的认为该区间内的概率密度不变。在计算时,也会有这样一个,应该在计算过程中会抵消掉,或者说我们是需要比较那个类下的后验概率最大,只要计算过程中 固定,不抵消也无所谓,所以仍然可以采用上面的计算方式。
情况二
在上面的例子也出现了P(婚姻状况=已婚|Yes)=0,依照朴素贝叶斯分类方法,包含该值所有的条件概率均为0,此时无法分类。对于离散型变量而言,对于这种情况一般采用 估计方法来计算条件概率
式中:
:类所包含的样本中,第 个变量取值为的样本的个数
:类所包含的样本个数
:第 个变量取值空间中包含值的个数
:区间[0,1]上的参数,一般取1
对于P(婚姻状况=已婚|Yes)的计算,采用估计方法,计算得到的条件概率为
需要说明的是,情况二中介绍的条件概率计算方法也可以应用于情况一中,但是在同一个朴素贝叶斯模型中,训练和测试、使用时必须使用同一种条件概率计算方法。
3. 朴素贝叶斯分类方法的优缺点
3.1 优点
- 对孤立的噪声点和缺失值,朴素贝叶斯分类器是健壮的
- 对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练
- 适用于文本分类
3.2 缺点
- 在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好
- 需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳,这实际上是贝叶斯方法的常见问题
- 由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率,这也是对噪声和确实值保持健壮性带来的副作用
- 对输入数据的表达形式很敏感