Processing math: 0%
随笔 - 11  文章 - 0  评论 - 17  阅读 - 9001

朴素贝叶斯(naive bayes)算法及实现

处女文献给我最喜欢的算法了 ⊙▽⊙

---------------------------------------------------我是机智的分割线----------------------------------------------------

[important]

  阅读之前你需要了解:1、概率论与数理统计基础

            2、基本的模式识别概念

[begin]

  贝叶斯决策论是模式分类问题最基础的概念,其中朴素贝叶斯更是由于其简洁成为学习模式分类问题的基础。

  

  朴素贝叶斯的理论基础:源于概率论中的贝叶斯公式:P(w_j|x)=\frac{p(x|w_j)P(w_j)}{p(x)},其中w_j代表类别jx代表特征。

我们将P(w_j)称为先验概率,p(x|w_j)称为条件概率。

 

  目的:对于一系列事物我们已知他们的特征向量X(x_1,x_2,x_3.....),以及他们一定属于类别集W=\{w_1,w_2,w_3.....\}中的某

一类,根据以上知识给出一个确定取值的特征向量X的事物,判断它的类别。

  /*如:给定几个学生的特征及类别:

身高(cm) 体重(kg) 性别
171 56
168 48
175 55
165 50

      根据以上知识,现在有一身高为169cm,体重49kg的学生,判断性别。

  */

  思路:当前我们的知识只有有限个已知的特征及类别(我们称之为训练集),根据他们来判断给定特征集合的类别(我

们称之为测试集

      step1:假设我们已知学生中的男女比例为2:1,那么当我们遇到一个学生是男生的概率是2/3,女生的概率

    是1/3。这是我们唯一可以利用的信息,当新来一个同学时,在观察之前需要我们立即给出判断,那么我们似乎可

    以遵循这样的判别规则:P(w|_{w=男})>P(w|_{w=女}),则判定为男,否则判定为女。在一次判断中,

    这种规则是合理的,但当我们进行多次判断时,会发现会一直得到相同的结果。显然,单一的判断条件并不能给我

    们有效的解决问题的方法。

      step2:在实际的判断过程中我们并不会只利用单一的信息,我们再引入学生的身高信息,来提高我们判断的

    准确性。假定身高x是一个连续的随机变量,其分布取决于性别的状态,表示成p(x|w),这就是条件概率密度函数

    表示类别为w时x的概率密度函数。因此,p(x|w_{w=男})p(x|w_{w=女})的区别就表示了男生与女

    生在身高上的区别。

      step3:现在,假设我们已经知道了先验概率p(w1),p(w2)/*w_1代表男生类别,w_2代表女

      生类别*/,也知道了条件概率密度p(x|w_j)(j=1,2)。那么处于类别w_j,并具有特征值x的模式的联合概率

    密度我们可以写成以下形式p(w_j,x)=P(w_j|x)p(x)=p(x|w_j)P(w_j),整理上式,我们就可以得到贝叶斯公

    式P(w_j|x)=\frac{p(x|w_j)P(w_j)}{p(x)}在两类问题中p(x)=\sum_{j=1}^{2}{p(x|w_j)P(w_j)}

    这就是贝叶斯公式在分类问题中的解释。

      step4:观察贝叶斯公式我们可以发现 ,通过观测x的值我们可以将先验概率P(w_j)转化为后验概率的形式P(w_j|x)

    即假设特征值x已知的条件下类别属于w_j的概率。我们又称p(x|w_j)w_j关于x似然函数,即

    在其他条件都相等的情况下,使得p(x|w_j)取值较大的w_j更有可能是真是类别。

   /*重点理解p(x|w_j)p(w_j|x)的含义:

      p(x|w_j)表示已知类别为w_j的前提下,特征为X的概率。是分类之前的已知知识,成为条件概率。

      p(w_j|x)表示已知特征向量为X,求其属于类别w_j的概率。是分类的判断条件,成为后验概率。

   */

 

  解决方法:

    有了上面的铺垫,我们现在可以尝试解决分类的问题。

      step1:要根据输入的对象特征向量X来判断其类别,假设我们已经建立了一个判别函数g_i(x)/*表示

    特征向量为类别i的可能性*/,那么显然我们可以令g_i(x)=p(w_i|x)=\frac{p(x|w_j)P(w_j)}{p(x)}

    对每一个类别w_j我们可以分别计算其g(x)的取值。还可以得出判别规则为:若g_i(x)>g_j(x),则判为

    w_i,否则判为w_j

      step2:由概率论知识我们还可以将g_i(x)简化为g_i(x)=p(x|w_j)P(w_j)的形式/*或者用其对数式表

    示g_i(x)=lnp(x|w_j)+lnP(w_j),效果相同*/。然后根据判断条件找出最符合的类别。

      到这里就结束了吗?nonononono,上面的理论只能称之为贝叶斯理论,他还不够“朴素”。

      step3:概率论中我们有这样的结论:对于p(a,b,c),若a,b,c互相独立,则有p(a,b,c)=p(a)p(b)p(c)

    那么,在我们的g_i(x)中我们也假设特征向量X中的每一个x_j也互相独立,那么就有g_i(x)=P(w_j)\prod_{j=1}^{n}p(x_j|w_i)

    这便是朴素贝叶斯的表达式。

 

  /*

    下面我们可以解决学生的性别判断问题了:

      设身高用x_1表示,体重用x_2表示

      那么根据训练集知识,我们可以分别求出p(x_1|w_j)p(x_2|w_j)在所有类别下的概率分布,然后对

    于任意给定的特征向量X=(x_1,x_2),求出max\{P(w_i)\prod_{j=1}^{n}p(x_i|w_j)\}对应的最大类别i,即

    就是特征向量X的朴素贝叶斯预测类别。

  */

 

  意义:

      "模式识别中的贝叶斯理论由于其权威性、一致性和典雅性而被列为最优美的科学公式之一。"

      在模式分类,数据挖掘等领域中,贝叶斯理论占据着重要地位,而朴素贝叶斯理论更是在实践中有着重要应用。作为一个

    理论,从统计学的观点出发,讨论出了具有指导意义的方法。其背后的哲学意义也发人深省(感兴趣的同学可以深入探讨)。

  不足:

      贝叶斯理论比较依赖于先验知识,对于先验知识模糊或缺失的情况还需要其他理论作补充(可以想想为什么)。

      朴素贝叶斯理论的条件独立假设在实际中会影响判断结果,尤其是特征之间相关度较高的时候。(有没有解决的方法)。

 

实现:(第一次写文章,没想到断断续续写了好久,看来还是太年轻=_=,实现后面再补吧)

 

[end]

收获:梳理了一遍朴素贝叶斯的知识,写文章时顺遍学习了LaTex语法编辑公式。

  欢迎交流指正讨论,随意转载,请注明作者及出处。😀

 

参考资料:模式分类(Pattern Classification)第二版,(美)Richard O.Duda ,机械工业出版社

 

posted on   NSLogMeng  阅读(1091)  评论(4编辑  收藏  举报
努力加载评论中...

点击右上角即可分享
微信分享提示