模式识别之贝叶斯---朴素贝叶斯(naive bayes)算法及实现

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

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

[important]

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

            2、基本的模式识别概念

[begin]

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

  

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

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

  目的:对于一系列事物我们已知他们的特征向量X(x1,x2,x3.....),以及他们一定属于类别集W={w1,w2,w3.....}中的某

一类,根据以上知识给出一个确定取值的特征向量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|ww=男)与p(x|ww=女)的区别就表示了男生与女

    生在身高上的区别。

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

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

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

    式P(wj|x)=p(x|wj)P(wj)p(x)。在两类问题中p(x)=∑2j=1p(x|wj)P(wj),

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

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

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

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

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

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

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

   */

  解决方法:

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

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

    特征向量为类别i的可能性*/,那么显然我们可以令gi(x)=p(wi|x)=p(x|wj)P(wj)p(x)

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

    wi,否则判为wj。

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

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

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

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

    那么,在我们的gi(x)中我们也假设特征向量X中的每一个xj也互相独立,那么就有gi(x)=P(wj)∏nj=1p(xj|wi)

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

  /*

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

      设身高用x1表示,体重用x2表示

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

    于任意给定的特征向量X=(x1,x2),求出max{P(wi)∏nj=1p(xi|wj)}对应的最大类别i,即

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

  */

  意义:

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

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

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

  不足:

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

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

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

[end]

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

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

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

http://www.cnblogs.com/nslogmeng/p/4438215.html

时间: 04-19

模式识别之贝叶斯---朴素贝叶斯(naive bayes)算法及实现的相关文章

Microsoft Naive Bayes 算法——三国人物身份划分

Microsoft朴素贝叶斯是SSAS中最简单的算法,通常用作理解数据基本分组的起点.这类处理的一般特征就是分类.这个算法之所以称为“朴素”,是因为所有属性的重要性是一样的,没有谁比谁更高.贝叶斯之名则源于Thomas Bayes,他想出了一种运用算术(可能性)原则来理解数据的方法.对此算法的另一个理解就是:所有属性都是独立的,互不相关.从字面来看,该算法只是计算所有属性之间的关联.虽然该算法既可用于预测也可用于分组,但最常用于模型构建的早期阶段,更常用于分组而不是预测某个具体的值.通过要将所有

数据挖掘十大经典算法(9) 朴素贝叶斯分类器 Naive Bayes

贝叶斯分类器 贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类.眼下研究较多的贝叶斯分类器主要有四种,各自是:Naive Bayes.TAN.BAN和GBN. 贝叶斯网络是一个带有概率凝视的有向无环图,图中的每个结点均表示一个随机变量,图中两结点 间若存在着一条弧,则表示这两结点相相应的随机变量是概率相依的,反之则说明这两个随机变量是条件独立的.网络中随意一个结点X 均有一个对应的条件概率表(Con

十大经典数据挖掘算法(9) 朴素贝叶斯分类器 Naive Bayes

贝叶斯分类器 贝叶斯分类分类原则是一个对象的通过先验概率.贝叶斯后验概率公式后计算.也就是说,该对象属于一类的概率.选择具有最大后验概率的类作为对象的类属.现在更多的研究贝叶斯分类器,有四个,每间:Naive Bayes.TAN.BAN和GBN. 贝叶斯网络是一个带有概率凝视的有向无环图.图中的每个结点均表示一个随机变量,图中两结点 间若存在着一条弧.则表示这两结点相相应的随机变量是概率相依的,反之则说明这两个随机变量是条件独立的.网络中随意一个结点X 均有一个对应的条件概率表(Conditio

朴素贝叶斯(Naive Bayes)及Python实现

朴素贝叶斯(Naive Bayes)及Python实现 http://www.cnblogs.com/sumai 1.模型 在GDA 中,我们要求特征向量 x 是连续实数向量.如果 x 是离散值的话,可以考虑采用朴素贝叶斯的分类方法. 以垃圾邮件分类为例子,采用最简单的特征描述方法,首先找一部英语词典,将里面的单词全部列出来.然后将每封邮件表示成一个向量,向量中每一维都是字典中的一个词的 0/1值,1 表示该词在邮件中出现,0 表示未出现. 比如一封邮件中出现了“ a”和“ buy”,没有出现“

朴素贝叶斯算法(Naive Bayes)

朴素贝叶斯算法(Naive Bayes) 阅读目录 一.病人分类的例子 二.朴素贝叶斯分类器的公式 三.账号分类的例子 四.性别分类的例子 生活中很多场合需要用到分类,比如新闻分类.病人分类等等. 本文介绍朴素贝叶斯分类器(Naive Bayes classifier),它是一种简单有效的常用分类算法. 回到顶部 一.病人分类的例子 让我从一个例子开始讲起,你会看到贝叶斯分类器很好懂,一点都不难. 某个医院早上收了六个门诊病人,如下表. 症状 职业 疾病 打喷嚏 护士 感冒  打喷嚏 农夫 过敏

[Machine Learning] 朴素贝叶斯算法(Naive Bayes)

生活中很多场合需要用到分类,比如新闻分类.病人分类等等. 本文介绍朴素贝叶斯分类器(Naive Bayes classifier),它是一种简单有效的常用分类算法. 一.病人分类的例子 让我从一个例子开始讲起,你会看到贝叶斯分类器很好懂,一点都不难. 某个医院早上收了六个门诊病人,如下表. 症状 职业 疾病 打喷嚏 护士 感冒  打喷嚏 农夫 过敏  头痛 建筑工人 脑震荡  头痛 建筑工人 感冒  打喷嚏 教师 感冒  头痛 教师 脑震荡 现在又来了第七个病人,是一个打喷嚏的建筑工人.请问他患

机器学习笔记之朴素贝叶斯(Naive Bayes)原理

为什么叫朴素贝叶斯? 朴素是指特征条件独立:贝叶斯是指基于贝叶斯定理. $x=\frac{{-b}\pm\sqrt{b^2-4ac}}{2a}$ $p(y=c_k|x)=\dfrac{\prod_{i=1}^{M}p(x^i|y=c_k)p(y=c_k)}{\sum_kp(y=c_k)\prod_{i=1}^{M}P(x^i|y=c_k)}$....(2) $$ % MathType!MTEF!2!1!+-% feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2

机器学习笔记:朴素贝叶斯方法(Naive Bayes)原理和实现

本文主要描述了朴素贝叶斯分类方法,包括模型导出和学习描述.实例部分总结了<machine learning in action>一书中展示的一个该方法用于句子感情色彩分类的程序. 方法概述 学习(参数估计) 实现:朴素贝叶斯下的文本分类 模型概述 朴素贝叶斯方法,是指 朴素:特征条件独立 贝叶斯:基于贝叶斯定理 根据贝叶斯定理,对一个分类问题,给定样本特征x,样本属于类别y的概率是 p(y|x)=p(x|y)p(y)p(x)......(1) 在这里,x是一个特征向量,将设x维度为M.因为朴素

朴素贝叶斯(naive bayes)

#coding=utf-8 #Naive Bayes #Calculate the Prob. of class:clsdef P(data,cls_val,cls_name="class"): cnt = 0.0 for e in data: if e[cls_name] == cls_val: cnt += 1 return cnt/len(data) #Calculate the Prob(attr|cls)def PT(data,cls_val,attr_name,attr_v