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

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

[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语法编辑公式。

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

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

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

    Microsoft朴素贝叶斯是SSAS中最简单的算法,通常用作理解数据基本分组的起点.这类处理的一般特征就是分类.这个算法之所以称为“朴素”,是因为所有属性的重要性是一样的,没有谁比谁更高.贝叶斯之名 ...

  2. (转载)微软数据挖掘算法:Microsoft Naive Bayes 算法(3)

    介绍: Microsoft Naive Bayes 算法是一种基于贝叶斯定理的分类算法,可用于探索性和预测性建模. Naïve Bayes 名称中的 Naïve 一词派生自这样一个事实:该算法使用贝叶 ...

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

    贝叶斯分类器 贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类.眼下研究较多的贝叶斯分类器主要有四种, ...

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

    贝叶斯分类器 贝叶斯分类分类原则是一个对象的通过先验概率.贝叶斯后验概率公式后计算,也就是说,该对象属于一类的概率.选择具有最大后验概率的类作为对象的类属.现在更多的研究贝叶斯分类器,有四个,每间:N ...

  5. 朴素贝叶斯分类法 Naive Bayes ---R

    朴素贝叶斯算法 [转载时请注明来源]:http://www.cnblogs.com/runner-ljt/ Ljt   勿忘初心  无畏未来 作为一个初学者,水平有限,欢迎交流指正. 朴素贝叶斯分类法 ...

  6. 基于Naive Bayes算法的文本分类

    理论 什么是朴素贝叶斯算法? 朴素贝叶斯分类器是一种基于贝叶斯定理的弱分类器,所有朴素贝叶斯分类器都假定样本每个特征与其他特征都不相关.举个例子,如果一种水果其具有红,圆,直径大概3英寸等特征,该水果 ...

  7. Python机器学习算法 — 朴素贝叶斯算法(Naive Bayes)

    朴素贝叶斯算法 -- 简介 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法.最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Baye ...

  8. 【机器学习实战】第4章 朴素贝叶斯(Naive Bayes)

    第4章 基于概率论的分类方法:朴素贝叶斯 朴素贝叶斯 概述 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.本章首先介绍贝叶斯分类算法的基础——贝叶斯定理.最后,我们 ...

  9. 【sklearn朴素贝叶斯算法】高斯分布/多项式/伯努利贝叶斯算法以及代码实例

    朴素贝叶斯 朴素贝叶斯方法是一组基于贝叶斯定理的监督学习算法,其"朴素"假设是:给定类别变量的每一对特征之间条件独立.贝叶斯定理描述了如下关系: 给定类别变量\(y\)以及属性值向 ...

随机推荐

  1. windows下进程管理常用命令

    1.查看当前正在运行的进程 tasklist 注: /im 后为映像名称参数:/f  为强行终止,可以通过 taskkill /? 查看更多帮助 2.强制杀死映像名称为imagename的进程,映像名 ...

  2. 《暗黑世界V1.4》API说明文档

    <暗黑世界V1.4>API说明文档 阵法位置示意图 上方:                        下方:      账号注册   100 请求信息 { username   str ...

  3. WebDriver API——第1部分

    The API definitions in this chapter shows the absolute location of classes. However the recommended ...

  4. 【Linux】VMware上安装Linux操作系统

    Vmware上安装Linux系统 1. 文件菜单选择新建虚拟机 2. 选择经典类型安装,下一步. 3. 选择稍后安装操作系统,下一步. 4. 选择Linux系统,版本选择CentOS 64位. 给虚拟 ...

  5. poj - 1953 - World Cup Noise(dp)

    题意:n位长的01序列(0 < n < 45),但不能出现连续的两个1,问序列有多少种. 题目链接:id=1953" target="_blank">h ...

  6. 【TP3.2】Call to a member function display() on a non-object问题的解决

    Call to a member function display() on a non-object问题的解决

  7. SpringMVC学习小结

    配置web.xml: <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-cl ...

  8. 解决 SQL Server2012附加出错的问题

    附加数据库出错 无法打开文件号 0 的文件 操作系统错误 根据错误提示:权限不足,添加相应权限就OK 步骤:1,右键单击要附加的数据库,选择安全选项卡选择用户:“Authenticated Users ...

  9. $("#SpecialAptitude").on("change",function(){CheckType($(this))})$("#SpecialAptitude").on("change",CheckType($(this)))

    $("#SpecialAptitude").on("change",function(){CheckType($(this))})$("#Specia ...

  10. 自实现部分string类的功能

    #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class MyString { publi ...