分类:朴素贝叶斯分类方法

       朴素贝叶斯分类方法的特点是基于概率方法实现分类,这在诸多的分类方法中比较少见。贝叶斯方法都有所耳闻,之所以称为“朴素”贝叶斯方法,是因为在分类时,假定了“各变量间相互独立”的条件,这个条件算是比较强的了,大大简化了分类时的计算,但同时也丢失了一些分类准确性,毕竟不是所有变量都相互独立。为了弱化“各变量间相互独立”条件的影响,人们又提出了基于贝叶斯方法的其它分类方法,如贝叶斯信念网络。总之,我们在数据挖掘时希望“各变量间相互独立”条件是成立的,但实际并非那样,因此在需要考虑变量间存在相关性的问题,或许在提取数据特征的时候,我们可以做到从源头去满足“各变量间相互独立”条件,这样最好了。扯远了,还是介绍一下朴素贝叶斯分类方法吧。

1.任务

       分类

2.结构

    2.1  贝叶斯定理的应用

       在其它一些分类方法中(如决策树、基于规则的分类、K最邻近分类等),分类的结果是100%确定的(尽管不一定对),而在朴素贝叶斯分类方法中,对于待分类样本X,可能出现算得其有70%的可能性属于类y_{1},有25%的可能性属于类y_{2},有5%的可能性属于类y_{3},这是朴素贝叶斯分类方法的特别之处,依据计算结果的大小,最终当然有理由认为X属于类y_{1}

      对朴素贝叶斯分类器的训练也即是生成一张概率表,为了生成这张概率表,我们先引入贝叶斯定理,对贝叶斯理论这里就不多说了,这里直接引入贝叶斯公式,然后说明该公式是如何在分类过程中作用的

                                                                         P(Y|X)=\frac{P(X|Y)P(Y)}{P(X)}

       P(Y)表示类别的先验概率,可以理解为当我们对待分类样本X的取值一无所知时,将其分为不同类的概率。在训练朴素贝叶斯模型时有数据样本,这些样本就是总体分布规律的体现,我们可以按照以下公式确定P(Y)

                                                                                     P(y_{i})=\frac{n_{i}}{N}

P(y_{i})表示类y_{i}的先验概率,n_{i}表示训练集中属于类y_{i}的样本个数,N表示训练集中包含的样本数

        P(X|Y)表示在已知类别下,样本X取某组值的概率。由于训练集中包含多个变量,因此在非“朴素”条件下计算P(X|Y)是非常困难的,因为不知道诸多变量之间是否存在相关性以及相关程度如何,而在“朴素”条件下,计算X任意一组取值的条件概率则变得简单,假设训练集中包含变量个数为d

                                              P(X=\left \{ X_{1}=x_{1}, X_{2}=x_{2}, ...,X_{d}=x_{d} \right \}|Y=y)=\prod_{i=1}^{d}P(X_{i}=x_{i}|Y=y)

       P(X)表示样本取某组值X=\left \{ X_{1}=x_{1}, X_{2}=x_{2}, ...,X_{d}=x_{d} \right \}的概率。这个值在计算时是一个固定值,我们在确定样本X的类别时,并不是真的计算出其属于各类的概率,而是要比较其属于各类概率的大小,最终找出最大的概率值。

2.2  条件概率的计算方式

       对于条件概率P(X|Y)的计算,一般有两种方式,对应着两种不同的情况,一种是待分类样本所有的取值情况在训练集中均存在,另外一种情况是待分类样例出现了训练集中没有的变量,或者已有变量上的某个值(针对离散取值的变量)。在训练集较大的情况下,第一种情况是比较常见的。

       情况一

       第一种情况下的条件概率的计算思路比较直接,P(X_{i}=x_{i}|Y=y)的计算方法如下

                                                                         P(X_{i}=x_{i}|Y=y)=\frac{n(X_{i}=x_{i})}{n(Y=y)}

其中n(Y=y)表示训练集中属于类Y=y的样本数,n(X_{i}=x_{i})表示在属于类Y=y的样本中,第 i 个变量X_{i}取值为x_{i}的样本数

        举个例子说明以上的内容,现需要依据个人房产情况、婚姻状况来判断其时候会拖欠银行贷款,训练集如下表

                                                                         

计算可以得到:
        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

        以上的条件概率计算,是以样本特征取值为离散值的情况说明的,对于特征连续取值的情况,有两种方法计算其条件概率:

(1)   将连续的取值离散化,用相应的离散区间替换连续属性值,通过计算类y的训练样本落入X_{i}对应区间的比例来估计条件概率P(X_{i}|Y=y),显然,估计的误差有离散的方法决定。

(2)   可以假设连续特征服从某种概率分布,然后使用训练数据估计概率分布的参数。高斯分布常用来表示连续特征的类条件概率分布,该分布的均值为u,方差为\sigma ^{2}

                                                                 P(X_{i}=x_{i}|Y=y_{i})=\frac{1}{\sqrt{2\pi }\sigma _{ij}}e^{\frac{(x_{i}-u_{ij})^{2}}{2\sigma _{ij}^{2}}}

均值u_{ij}可以用样本均值\bar{x}来估计,方差\sigma _{ij}可以用样本方差s^{ij}来估计。还是用上表的数据,用连续值特征——年收入来说明该方法,当一个人不会拖欠贷款时,我们假设它的年收入服从高斯分布,则

                                                     \bar{x}=\frac{125+100+70+120+60+220+75}{7}=110

                                                    s^{2}=\frac{ (125-110)^{2}+(100-110)^{2}+...+(220-100)^{2}+(75-100)^{2} }{6}=2975

                                                      s=\sqrt{2975}=54.54

给定一个测试记录,当年收入为120K时其条件概率为

                                                        P(120K|Y=No)=\frac{1}{\sqrt{2\pi }54.54}e^{\frac{(120-110)^{2}}{2*2975}}=0.0072

       事实上,对于连续值的概率密度函数,任何一点上的概率值均为0,我们应该计算X_{i}落在区间X_{i}+ \varepsilon内的概率值,\varepsilon是一个非常小的常数,这样可以近似的认为该区间内的概率密度不变。在计算P(X)时,也会有这样一个\varepsilon,应该\varepsilon在计算过程中会抵消掉,或者说我们是需要比较那个类下的后验概率最大,只要计算过程中 \varepsilon 固定,不抵消也无所谓,所以仍然可以采用上面的计算方式。

情况二

      在上面的例子也出现了P(婚姻状况=已婚|Yes)=0,依照朴素贝叶斯分类方法,包含该值所有的条件概率均为0,此时无法分类。对于离散型变量而言,对于这种情况一般采用 m估计方法来计算条件概率

                                                                          P(X_{i}=x_{i}|Y=y_{j})=\frac{n_{c}+\lambda }{n+\lambda m}

式中:

        n_{c}:类y_{j}所包含的样本中,第 i 个变量X_{i}取值为x_{i}的样本的个数

         n:类y_{j}所包含的样本个数

        m:第 i 个变量取值空间中包含值的个数

         \lambda:区间[0,1]上的参数,一般取1

        对于P(婚姻状况=已婚|Yes)的计算,采用m估计方法,计算得到的条件概率为

                                     

                                                                              P=\frac{0+1}{3+3}=\frac{1}{6}

       需要说明的是,情况二中介绍的条件概率计算方法也可以应用于情况一中,但是在同一个朴素贝叶斯模型中,训练和测试、使用时必须使用同一种条件概率计算方法。

3.评分函数

     分类正确率

4.搜索、优化方法

      正如在第2节所说的,训练朴素贝叶斯即是生成一张概率表,表中记录着训练集中每个变量的每个取值的条件概率(连续型变量时则是估计概率分布的参数)、各类的先验概率,在训练贝叶斯分类器时,因此在训练阶段只需要扫描一次数据集即可,在扫描每个样本时需要记录以上的信息。

猜你喜欢

转载自blog.csdn.net/huguozhiengr/article/details/82938582