zoukankan      html  css  js  c++  java
  • 朴素贝叶斯分类

            在很多的应用中,属性集与类别之间的关系是不确定的,换句话说,尽管测试样本的属性值与训练样本相同,但是也不一定能正确的预测其类别,其中一个原因是噪声的存在,另一个原因是某些影响分类的属性并没有出现在属性集中。贝叶斯方法都有所耳闻,之所以称为“朴素”贝叶斯方法,是因为在分类时,假定了“各变量间相互独立”的条件,这个条件算是比较强的了,大大简化了分类时的计算,但同时也丢失了一些分类准确性,毕竟不是所有变量都相互独立。为了弱化“各变量间相互独立”条件的影响,人们又提出了基于贝叶斯方法的其它分类方法,如贝叶斯信念网络。总之,我们在数据挖掘时希望“各变量间相互独立”条件是成立的,但实际并非那样,因此在需要考虑变量间存在相关性的问题,或许在提取数据特征的时候,我们可以做到从源头去满足“各变量间相互独立”条件,这样最好了。扯远了,还是介绍一下朴素贝叶斯分类方法吧。

    1.  贝叶斯定理的应用

           在其它一些分类方法中(如决策树、基于规则的分类、K最邻近分类等),类别预测结果是唯一的,而在朴素贝叶斯分类方法中,对于待分类样本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} 
ight }|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} 
ight }的概率,由于总体分布未知,要想准确的计算该值是不可能的,但好在对于一个待分类样本,该值在计算时是一个固定值,可以不用计算,我们在确定样本X的类别时,并不是真的计算出其属于各类的概率,而是要比较其属于各类概率的大小,最终找出最大的概率值。

    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

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

    • 将连续的取值离散化,用相应的离散区间替换连续属性值,通过计算类y的训练样本落入X_{i}对应区间的比例来估计条件概率P(X_{i}|Y=y),显然,估计的误差由离散的方式决定。
    • 可以假设连续特征服从某种概率分布,然后使用训练数据估计概率分布的参数。高斯分布常用来表示连续特征的类条件概率分布,该分布的均值为u,方差为sigma ^{2}

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

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

                                                         ar{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{2pi }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.  朴素贝叶斯分类方法的优缺点

       3.1 优点

    • 对孤立的噪声点和缺失值,朴素贝叶斯分类器是健壮的
    • 对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练
    • 适用于文本分类

      3.2  缺点  

      • 在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好
      • 需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳,这实际上是贝叶斯方法的常见问题
      • 由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率,这也是对噪声和确实值保持健壮性带来的副作用
      • 对输入数据的表达形式很敏感
  • 相关阅读:
    如何在仪表板中播放视频
    根据条件显示表格背景色
    如何个性化设置柱形图(条形图)柱子粗细、圆角和颜色?
    如何设置报表参数的日期区间?
    妙用这3个函数,实现各种你意想不到的条件格式化
    利用组合图对数据按百分比区间进行对比展示的实例
    报表传参跳转到仪表板的实现过程
    Wyn仪表板中的图表,如何针对每个字段设置自定义颜色
    Wyn仪表板中设置完整数据格式的方法
    Wyn门户及仪表板颜色设置方式汇总
  • 原文地址:https://www.cnblogs.com/hgz-dm/p/10886199.html
Copyright © 2011-2022 走看看