推荐前期阅读:http://blog.csdn.net/u011995719/article/details/76732663

推荐阅读:拉普拉斯修正

7.3朴素贝叶斯分类器

关键词: 朴素贝叶斯;拉普拉斯修正
上一小节我们知道贝叶斯分类器的分类依据是这公式:P(c∣x)=P(x,c)P(x)=P(c)⋅P(x∣c)P(x)P(c\mid x)=\frac{P(x,c)}{P(x)}=\frac{P(c)\cdot P(x\mid c)}{P(x)}P(c∣x)=P(x)P(x,c)​=P(x)P(c)⋅P(x∣c)​ ,对于每个样本而言,分母P(x)=∑i=1mP(x∣ci)⋅P(ci)P(x)= \sum _{i=1}^{m}P(x\mid c_{i})\cdot P(c_{i})P(x)=∑i=1m​P(x∣ci​)⋅P(ci​) 是相同的,因此在做分类时,可以不计算分母。只需要考虑先验概率:P(c)P(c)P(c) 以及似然:P(x∣c)P(x\mid c)P(x∣c) 。先看先验概率 P(c)P(c)P(c),当给定训练集D,那么 P(c)P(c)P(c)则是固定的,所以也不需要经过复杂计算,直接统计数据集D中每个类别的占比,占比当作该类别的概率(大数定律);再看看如何计算似然:P(x∣c)P(x\mid c)P(x∣c) ,解释一下其中的x和c,c在这里表示某一个具体的类别; x是一个具体样本,有明确的值的样本; P(x∣c)P(x\mid c)P(x∣c) 就表示,在类别c中,取值为x的样本 出现的概率是多大,依旧采用大数定律,统计训练集D中有多少就认为概率有多大 。更具体的,假如样本是二维空间的点,c有正例和负例。那么要求P(x=(0,1)∣c=正例)P(x=(0,1 )\mid c=正例)P(x=(0,1)∣c=正例) 的概率,我们就要找正例的那堆样本当中,取值为(0,1)的样本所占的比例作为P(x=(0,1)∣c=正例)P(x=(0,1 )\mid c=正例)P(x=(0,1)∣c=正例) 的概率。

然而现实是很骨干的,假如现在要计算的是数字类别“7”下,x=(0,1…,0)这一种样本出现的概率,假设样本 有784个属性(2828的图片),且每个像素点的取值为0或者1,那么 样本x的可能取值就是2^784 ≈ 110^236 ! 如果没有足够多的数据,我们根本没办法去计算某一个具体样本x=(0,1…,0)在类别“7”当中出现的概率P(x=(0,1,...,0)∣类别="7")P(x=(0,1,...,0)\mid 类别="7")P(x=(0,1,...,0)∣类别="7") ,因为极有可能,我们的训练集D中没有样本 ,这一种组合, 也就是说784个属性的联合概率很难求出。

为了避开这个障碍,**朴素贝叶斯分类(naïve Bayes classifier)**出场啦,其采用了“属性条件独立性假设”,啥意思呢?对于上面那个例子,假设784个属性值(像素点)是独立的,那么我们的似然就可以这么计算 $P(x=(0,1,…,0)\mid 类别=7)=P(第一个属性值=0\mid 类别为7)\cdot P(第二个属性值=1\mid 类别为7) … \cdot P(第784个属性值=1\mid 类别为7) $

单独看第一个属性,假设类别数字7有样本10个,但是第一个属性值只有0或者1,我们就可以计算出10个样本当中,第一个属性值=0的概率是多少,以及=1的概率是多少,因此就可以把P(第一个属性值=0∣类别为7)P(第一个属性值=0\mid 类别为7)P(第一个属性值=0∣类别为7) 求出来了。
因此,基于属性条件独立性假设,后验概率可依据如下公式计算(d表示有d个属性):
P(c∣x)=P(x,c)P(x)=P(c)⋅P(c∣x)P(x)=P(c)P(x)⋅∏i=1dP(xi∣c)P(c\mid x)=\frac{P(x,c)}{P(x)}=\frac{P(c)\cdot P(c\mid x)}{P(x)}=\frac{P(c)}{P(x)}\cdot \prod _{i=1}^{d}P(x_{i}\mid c)P(c∣x)=P(x)P(x,c)​=P(x)P(c)⋅P(c∣x)​=P(x)P(c)​⋅∏i=1d​P(xi​∣c)

最终的朴素贝叶斯分类器表达式为:
hnb(x)=arg⁡max⁡P(c)∏i=1dP(xi∣c)h_nb(x)=\arg \max P(c) \prod _{i=1}^{d}P(x_{i}\mid c)hn​b(x)=argmaxP(c)∏i=1d​P(xi​∣c)

讲个简单例子来使用朴素贝叶斯分类器进行分类:
某个医院早上收了六个门诊病人,如下表。

这里有两个属性,分别是症状,职业;疾病则为类别,共三种类别,分别是感冒,过敏,脑震荡。
现在又来了第七个病人,是一个打喷嚏的建筑工人。请问他患上感冒的概率有多大?根据贝叶斯公式,有

假定"打喷嚏"和"建筑工人"这两个特征是独立的,因此,上面的等式就变成了

这是可以计算的。

由于计算类条件概率(似然)的时候,利用了独立性假设,将每个属性的概率连乘,若某个属性值在训练样本中没有与某个类别同时出现过,那么概率则为0,很显然判别将会出问题,为了避免其他属性携带的信息被训练集中未出现的属性值“抹去”,在估计概率值时通常进行“平滑”(smoothing),常用**“拉普拉斯修正”(Laplacian correction)**。具体操作如下:令m表示训练集D中可能的类别数,NiN_{i}Ni​ 表示第i个属性可能的取值数(如上面的数字识别,第i个属性可能的取值为0或者1,那么 NiN_{i}Ni​ 为2),修正的先验概率以及类条件概率(似然)分别为:
P(c)^=∣Dc∣+1∣D∣+N\hat{P(c)}=\frac{\left | D_{c} \right |+1}{\left | D \right |+N}P(c)^​=∣D∣+N∣Dc​∣+1​
P^(xi∣c)=∣Dc,xi∣+1∣Dc∣+Ni\hat{P}(x_{i}\mid c)=\frac{\left | D_{c,x_{i}} \right |+1}{\left | D_{c} \right |+N_{i}}P^(xi​∣c)=∣Dc​∣+Ni​∣Dc,xi​​∣+1​
通过拉普拉斯修正,就可以避免因训练集样本不充分而导致概率估值为零的问题。

【机器学习-西瓜书】七、朴素贝叶斯分类器相关推荐

  1. 西瓜书笔记7:贝叶斯分类器

    目录 相关概率知识 贝叶斯-全概率公式 先验概率.后验概率.似然概率 7.1 贝叶斯决策论 7.2 极大似然估计 极大似然估计公式 均值方差估计公式推导 概率知识复习 高斯分布 最大似然估计 7.3 ...

  2. 【朴素贝叶斯学习记录】西瓜书数据集朴素贝叶斯实现

    朴素贝叶斯学习记录2 本文主要根据西瓜书的朴素贝叶斯公式推导以及例题解答为基础进行学习. 该全过程主要解决了以下几个问题: 朴素贝叶斯的数学表达式是如何求得 朴素贝叶斯与贝叶斯的差别在哪里 朴素贝叶斯 ...

  3. 机器学习与R之朴素贝叶斯分类器

    朴素贝叶斯 1联合概率分布 p(x,y)=p(y)P(x|y)  或者p(A交B)=p(A)xp(B)  p(A交B)不容易求,假设条件独立拆分成两个事件的乘积 2基本假设条件独立性 3利用贝叶斯定理 ...

  4. 【一起入门MachineLearning】中科院机器学习第3课-朴素贝叶斯分类器

    专栏介绍:本栏目为 "2021秋季中国科学院大学周晓飞老师的机器学习" 课程记录,不仅仅是课程笔记噢- 每周上两小节课,每周更新两篇博客,如果感兴趣的话,就和我一起入门Machin ...

  5. 【周志华机器学习】七、贝叶斯分类器

    文章目录 参考资料 1. 基本概念 1.1 贝叶斯公式 1.2 贝叶斯决策论 1.2.1 判别式模型 and 生成式模型 1.3 极大似然法 2. 朴素贝叶斯分类器 3. 半朴素贝叶斯分类器 4. E ...

  6. 机器学习实验 - 朴素贝叶斯分类器

    目录 一.报告摘要 1.1 实验要求 1.2 实验思路 1.3 实验结论 二.实验内容 2.1 方法介绍 2.2 实验细节 2.2.1 实验环境 2.2.2 实验过程 2.2.3 实验与理论内容的不同 ...

  7. 机器学习实战 朴素贝叶斯分类器

    基于概率论的分类方法: 朴素贝叶斯 我的微信公众号: s406205391; 欢迎大家一起学习,一起进步!!! k-近邻算法和决策树会给出"该数据属于哪一类"的明确回答.不过,分类 ...

  8. 机器学习算法 - 朴素贝叶斯分类器

    ​ 一.算法简介 1.1 背景 监督学习分为生成模型 (generative model) 与判别模型 (discriminative model) 判别模型:SVM, LR, KNN, NN, CR ...

  9. 机器学习:朴素贝叶斯分类器,决策函数向量化处理,mask使用技巧

    文章目录 前面实现的朴素贝叶斯分类器,决策函数是非向量化的: 借助于numpy向量化处理,相当于并行计算,注意mask使用技巧,用途较广: 前面实现的朴素贝叶斯分类器,决策函数是非向量化的: 前面提到 ...

  10. sklearn朴素贝叶斯分类器_python机器学习:方法链和朴素贝叶斯分类器

    今天我们在学习朴素贝叶斯分类器之前,我们先来总结下前面经常用到的内容,方法链:在scikit-learn中所有模型的fit方法返回的都是self.我们用一行代码初始化模型并拟合,对应代码如下:logr ...

最新文章

  1. 流形学习之LLE(LocallyLinearEmbedding)模型
  2. IOS 其他 - 在真机调试的时候,将NSLog日志存入文件并保存到document目录
  3. 完美解决LINK : fatal error LNK1104: cannot open file Debug/xx.exe的问题
  4. Vue全家桶实战02_【从入门到放弃系列】
  5. 关于CEdit控件的透明
  6. linux系统命令学习系列8-文件相关操作touch,rm,mv,cat,head,tail命令
  7. 【转】Sections Headers for Android ListViews
  8. NVIDIA Nsight Eclipse 安装
  9. 生产订单管理系统软件哪家好?
  10. Java毕设项目电影票网上订票系统计算机(附源码+系统+数据库+LW)
  11. 单词发音网页 (文本处理 python)
  12. 静态背景下运动目标检测 matlab_基于深度学习的视频目标检测综述
  13. Linux搜索日志关键字的2种方法
  14. 数据分析之Excel的基本功能(下)
  15. 如何使用百度云加速提升网站访问速度
  16. mysql 5.7 xbackup_mysql5.7备份
  17. EMP微前端-Vue和React项目互相调用
  18. Labview串口通讯驱动包
  19. python3调用USB高帧率摄像头
  20. 用Python绘制北京近一年来空气质量热力图,看看北京的沙尘暴真的多吗?

热门文章

  1. SAP打印出库单需求
  2. 0429《与孩子一起学编程》读书笔记1
  3. 转载:YUM常用命令介绍
  4. 《Image Effects 》第一章学习笔记(2)
  5. [预告]将要推出编程方式事务管理祥解!
  6. git更新pull报错Pulling 1 repository Remote does not have refs/heads/rel5.1 available for fetch
  7. 使用STS创建Spring boot project报错:Project build error: Non-resolvable parent POM for
  8. RestTemplate远程接口调用
  9. Scrapy框架(持久化,去重,深度控制,cookie)
  10. 常用的关系型数据库的优劣与选择