个人网站:红色石头的机器学习之路
CSDN博客:红色石头的专栏
知乎:红色石头
微博:RedstoneWill的微博
GitHub:RedstoneWill的GitHub
微信公众号:AI有道(ID:redstonewill)

说起朴素贝叶斯,很多人会被它复杂的公式和易混淆的概念搞得晕头转向、不知所以。本文,我将以最通俗的语言,尽量减少复杂公式的使用,白话讲解朴素贝叶斯算法的原理,并通过实际的例子,利用朴素贝叶斯思想,解决机器学习问题。让你快速对朴素贝叶斯有直观且形象的理解。

1. 买瓜问题

首先,我们要介绍两个数学概念:先验概率后验概率。是不是又要晕乎乎了?没关系,我们通过一个例子来帮助你理解这两种概率。

最近天气炎热,红色石头来到超市准备买个西瓜,可是没有太多的经验,不知道怎么样才能挑个熟瓜。这时候,作为理科生,红色石头就有这样的考虑:

如果我对这个西瓜没有任何了解,包括瓜的颜色、形状、瓜蒂是否脱落。按常理来说,西瓜成熟的概率大概是 60%。那么,这个概率 P(瓜熟) 就被称为先验概率。

也就是说,先验概率是根据以往经验和分析得到的概率,先验概率无需样本数据,不受任何条件的影响。就像红色石头只根据常识而不根据西瓜状态来判断西瓜是否成熟,这就是先验概率。

再来看,红色石头以前学到了一个判断西瓜是否成熟的常识,就是看瓜蒂是否脱落。一般来说,瓜蒂脱落的情况下,西瓜成熟的概率大一些,大概是 75%。如果把瓜蒂脱落当作一种结果,然后去推测西瓜成熟的概率,这个概率 P(瓜熟 | 瓜蒂脱落) 就被称为后验概率。后验概率类似于条件概率。

知道了先验概率和后验概率,我们再来看看什么是联合概率。红色石头买西瓜的例子中,P(瓜熟,瓜蒂脱落) 称之为联合分布,它表示瓜熟了且瓜蒂脱落的概率。关于联合概率,满足下列乘法等式:

P(瓜熟,瓜蒂脱落)=P(瓜熟|瓜蒂脱落)⋅P(瓜蒂脱落)=P(瓜蒂脱落|瓜熟)⋅P(瓜熟)P(瓜熟,瓜蒂脱落)=P(瓜熟|瓜蒂脱落)⋅P(瓜蒂脱落)=P(瓜蒂脱落|瓜熟)⋅P(瓜熟)

P(瓜熟,瓜蒂脱落)=P(瓜熟|瓜蒂脱落)\cdot P(瓜蒂脱落)=P(瓜蒂脱落|瓜熟)\cdot P(瓜熟)

其中,P(瓜熟 | 瓜蒂脱落) 就是刚刚介绍的后验概率,表示在“瓜蒂脱落”的条件下,“瓜熟”的概率。P(瓜蒂脱落 | 瓜熟) 表示在“瓜熟”的情况下,“瓜蒂脱落”的概率。

接着,红色石头想如何计算瓜蒂脱落的概率呢?实际上可以分成两种情况:一种是瓜熟状态下瓜蒂脱落的概率,另一种是瓜生状态下瓜蒂脱落的概率。瓜蒂脱落的概率就是这两种情况之和。因此,我们就推导出了全概率公式:

P(瓜蒂脱落)=P(瓜蒂脱落|瓜熟)⋅P(瓜熟)+P(瓜蒂脱落|瓜生)⋅P(瓜生)P(瓜蒂脱落)=P(瓜蒂脱落|瓜熟)⋅P(瓜熟)+P(瓜蒂脱落|瓜生)⋅P(瓜生)

P(瓜蒂脱落)=P(瓜蒂脱落|瓜熟)\cdot P(瓜熟)+P(瓜蒂脱落|瓜生)\cdot P(瓜生)

2. 单个特征判断瓜熟

好了,介绍完先验概率、后验概率、联合概率、全概率后,我们来看这样一个问题:西瓜的状态分成两种:瓜熟与瓜生,概率分别为 0.6 与 0.4,且瓜熟里面瓜蒂脱落的概率是 0.8,瓜生里面瓜蒂脱落的概率是 0.4。那么,如果我现在挑到了一个瓜蒂脱落的瓜,则该瓜是好瓜的概率多大?

显然,这是一个计算后验概率的问题,根据我们上面推导的联合概率和全概率公式,可以求出:

P(瓜熟|瓜蒂脱落)=P(瓜熟,瓜蒂脱落)P(瓜蒂脱落)       =P(瓜蒂脱落|瓜熟)⋅P(瓜熟)P(瓜蒂脱落|瓜熟)⋅P(瓜熟)+P(瓜蒂脱落|瓜生)⋅P(瓜生)P(瓜熟|瓜蒂脱落)=P(瓜熟,瓜蒂脱落)P(瓜蒂脱落)=P(瓜蒂脱落|瓜熟)⋅P(瓜熟)P(瓜蒂脱落|瓜熟)⋅P(瓜熟)+P(瓜蒂脱落|瓜生)⋅P(瓜生)

P(瓜熟|瓜蒂脱落)=\frac{P(瓜熟,瓜蒂脱落)}{P(瓜蒂脱落)}\ \ \ \ \ \ \ =\frac{P(瓜蒂脱落|瓜熟)\cdot P(瓜熟)}{P(瓜蒂脱落|瓜熟)\cdot P(瓜熟)+P(瓜蒂脱落|瓜生)\cdot P(瓜生)}

一项一项来看:

条件概率 P(瓜蒂脱落 | 瓜熟) = 0.8

先验概率 P(瓜熟) = 0.6

条件概率 P(瓜蒂脱落 | 瓜生) = 0.4

先验概率 P(瓜生) = 0.4

将以上数值带入上式,得:

P(瓜熟|瓜蒂脱落)=0.8⋅0.60.8⋅0.6+0.4⋅0.4=0.75P(瓜熟|瓜蒂脱落)=0.8⋅0.60.8⋅0.6+0.4⋅0.4=0.75

P(瓜熟|瓜蒂脱落)=\frac{0.8\cdot 0.6}{0.8\cdot 0.6+0.4\cdot 0.4}=0.75

这样,我们就计算得到了瓜蒂脱落的瓜是好瓜的概率是 0.75。注意,以上这种计算后验概率的公式就是利用贝叶斯定理。有点意外吧?不知不觉,可以说你已经掌握了贝叶斯定理的思想了。

3. 多个特征判断瓜熟

为了买到一个熟瓜,红色石头也是拼了。专门在网上搜索了一下。知道判断一个瓜是否熟了,除了要看瓜蒂是否脱落,还要看瓜的形状和颜色。形状有圆和尖之分,颜色有深绿、浅绿、青色之分。要看这么多特征啊?红色石头有点慌,不过没关系,我们可以使用刚刚引入的贝叶斯定理思想来尝试解决这个问题。

现在,特征由原来的 1 个,变成现在的 3 个,我们用 X 表示特征,用 Y 表示瓜的类型(瓜熟还是瓜生)。则根据贝叶斯定理,后验概率 P(Y=ck | X=x) 的表达式为:

P(Y=ck|X=x)=P(X=x|Y=ck)P(Y=ck)∑kP(X=x|Y=ck)P(Y=ck)P(Y=ck|X=x)=P(X=x|Y=ck)P(Y=ck)∑kP(X=x|Y=ck)P(Y=ck)

P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum_kP(X=x|Y=c_k)P(Y=c_k)}

其中,ckckc_k 表示类别,k 为类别个数。本例中,k = 1,2,c1c1c_1 表示瓜熟,c2c2c_2 表示瓜生。上面的公式看似有点复杂,但其实与上一节单特征(瓜蒂是否脱落)的形式是一致的。

有一点需要注意,这里的特征 X 不再是单一的,而是包含了 3 个特征。因此,条件概率 P(X=x | Y=ckckc_k) 假设各个条件相互独立,也就是说假设不同特征之间是相互独立的。这样,P(X=x | Y=ckckc_k) 就可以写成:

P(X=x|Y=ck)=P(X1,⋯,Xn|Y=ck)=Πnj=1P(Xj=xj|Y=ck)P(X=x|Y=ck)=P(X1,⋯,Xn|Y=ck)=Πj=1nP(Xj=xj|Y=ck)

P(X=x|Y=c_k)=P(X^1,\cdots,X^n|Y=c_k)=\Pi_{j=1}^nP(X^j=x^j|Y=c_k)

其中,n 为特征个数,j 表示当前所属特征。针对这个例子,P(X=x | Y=ckckc_k) 可以写成:

P(X=x|Y=ck)=P(X1=x1|Y=ck)P(X2=x2|Y=ck)P(X3=x3|Y=ck)P(X=x|Y=ck)=P(X1=x1|Y=ck)P(X2=x2|Y=ck)P(X3=x3|Y=ck)

P(X=x|Y=c_k)=P(X^1=x^1|Y=c_k)P(X^2=x^2|Y=c_k)P(X^3=x^3|Y=c_k)

这种条件独立性的假设就是朴素贝叶斯法“朴素”二字的由来。这一假设让朴素贝叶斯法变得简单,但是有时候会牺牲一定的分类准确率。

这样,利用朴素贝叶斯思想,我们就可以把后验概率写成:

P(Y=ck|X=x)=P(X=x|Y=ck)P(Y=ck)∑kP(X=x|Y=ck)P(Y=ck)=P(Y=ck)ΠjP(Xj=xj|Y=ck)∑kP(Y=ck)ΠjP(Xj=xj|Y=ck)P(Y=ck|X=x)=P(X=x|Y=ck)P(Y=ck)∑kP(X=x|Y=ck)P(Y=ck)=P(Y=ck)ΠjP(Xj=xj|Y=ck)∑kP(Y=ck)ΠjP(Xj=xj|Y=ck)

P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum_kP(X=x|Y=c_k)P(Y=c_k)}=\frac{P(Y=c_k)\Pi_jP(X^j=x^j|Y=c_k)}{\sum_kP(Y=c_k)\Pi_jP(X^j=x^j|Y=c_k)}

不是说好没有那么多公式的吗?别担心,上面的公式看上去比较复杂,其实只是样本特征增加了,形式上与上一节 P(瓜熟 | 瓜蒂脱落) 是一致的。

现在,红色石头拿起一个西瓜,观察了它的瓜蒂、形状、颜色三个特征,就能根据上面的朴素贝叶斯公式,分别计算 c1c1c_1(瓜熟)和 c2c2c_2(瓜生)的概率,即 P(Y=c1c1c_1 | X=x) 和 P(Y=c2c2c_2 | X=x)。然后再比较 P(Y=c1c1c_1 | X=x) 和 P(Y=c2c2c_2 | X=x) 值的大小:

若 P(Y=c1c1c_1 | X=x) > P(Y=c2c2c_2 | X=x),则判断瓜熟;

若 P(Y=c1c1c_1 | X=x) < P(Y=c2c2c_2 | X=x),则判断瓜生。

值得注意的是上式中的分母部分,对于所有的 ckckc_k 来说,都是一样的。因此,分母可以省略,不同的 ckckc_k,仅比较 P(Y=ckckc_k | X=x) 的分子即可:

P(Y=ck)ΠjP(Xj=xj|Y=ck)P(Y=ck)ΠjP(Xj=xj|Y=ck)

P(Y=c_k)\Pi_jP(X^j=x^j|Y=c_k)

好啦!红色石头终于明白了如何利用朴素贝叶斯法,来判断瓜是否熟了。

4. 朴素贝叶斯分类

红色石头已经了解了贝叶斯定理和朴素贝叶斯法,接下来已经可以很自信地去买瓜了。买瓜之前,还有一件事情要做,就是搜集样本数据。红色石头通过网上资料和查阅,获得了一组包含 10 组样本的数据。这组数据是不同瓜蒂、形状、颜色对应的西瓜是生是熟。我把这组数据当成是历史经验数据,以它为标准。


其中,瓜蒂分为脱落和未脱,形状分为圆形和尖形,颜色分为深绿、浅绿、青色。不同特征组合对应着瓜熟或者瓜生。

现在,红色石头挑了一个西瓜,它的瓜蒂脱落、形状圆形、颜色青色。这时候,红色石头就完全可以根据样本数据和朴素贝叶斯法来计算后验概率。

首先,对于瓜熟的情况:

瓜熟的先验概率: P(瓜熟) = 6 / 10 = 0.6。

条件概率: P(脱落 | 瓜熟) = 4 / 6 = 2 / 3。

条件概率: P(圆形 | 瓜熟) = 4 / 6 = 2 / 3。

条件概率: P(青色 | 瓜熟) = 2 / 6 = 1 / 3。

计算后验概率分子部分:

P(瓜熟) × P(脱落 | 瓜熟) × P(圆形 | 瓜熟) × P(青色 | 瓜熟) = 0.6 × (2 / 3) × (2 / 3) × (1 / 3) = 4 / 45。

然后,对于瓜生的情况:

瓜生的先验概率: P(瓜生) = 4 / 10 = 0.4。

条件概率: P(脱落 | 瓜生) = 1 / 4 = 0.25。

条件概率: P(圆形 | 瓜生) = 1 / 4 = 0.25。

条件概率: P(青色 | 瓜生) = 1 / 4 = 0.25。

计算后验概率分子部分:

P(瓜生) × P(脱落 | 瓜生) × P(圆形 | 瓜生) × P(青色 | 瓜生) = 0.4 × 0.25 × 0.25 × 0.25 = 1 / 160。

因为 4 / 45 > 1 / 160,所以预测为瓜熟。终于计算完了,红色石头很肯定地说这个西瓜瓜蒂脱落、形状圆形、颜色青色,应该是熟瓜。

回到家一看,果然瓜熟了。

5. 总结

本文以红色石头买西瓜的经历,来给大家形象解释了什么是先验概率、后验概率,介绍了贝叶斯定理和朴素贝叶斯法。最后,将朴素贝叶斯法用于如何挑选西瓜,判断西瓜是否熟了。本文以最白话的语言解释了朴素贝叶斯的基本思想和分类过程。不知道红色石头的这次买瓜经历是否对你了解朴素贝叶斯有所帮助呢?


通俗易懂!白话朴素贝叶斯相关推荐

  1. 【转】通俗易懂!白话朴素贝叶斯

    转自博客:https://blog.csdn.net/red_stone1/article/details/80935942 说起朴素贝叶斯,很多人会被它复杂的公式和易混淆的概念搞得晕头转向.不知所以 ...

  2. 白话 贝叶斯公式_通俗易懂!白话朴素贝叶斯

    关键时刻,第一时间送达!阅读本文需要 8 分钟 说起朴素贝叶斯,很多人会被它复杂的公式和易混淆的概念搞得晕头转向.不知所以.本文,我将以最通俗的语言,尽量减少复杂公式的使用,白话讲解朴素贝叶斯算法的原 ...

  3. 《机器学习实战》-04 朴素贝叶斯

    说明: 作业的所有代码都要基于Python3 学习大纲:https://blog.csdn.net/qq_34243930/article/details/84669684 (所有计划均在学习大纲里) ...

  4. 【白话机器学习】算法理论+实战之朴素贝叶斯

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Ad ...

  5. 白话 贝叶斯公式_【白话机器学习】算法理论+实战之朴素贝叶斯

    来自于: AI蜗牛车团队(作者:Miracle8070) 公众号: AI蜗牛车 原文链接:[白话机器学习]算法理论+实战之朴素贝叶斯​mp.weixin.qq.com 有兴趣的同学可以关注我的公众号: ...

  6. 朴素贝叶斯法(Naive Bayes,NB)(结合例子推公式,通俗易懂)

    整合一下学习NB的思路与代码,仅代表个人思想. 目录 算法思想 公式推导 1.问题陈述 2.先验概率分布 3.条件概率分布 4.输入为x的概率 5.用贝叶斯定理求后验概率 7.得到答案 8.简化计算 ...

  7. 朴素贝叶斯—疾病的预测

    1. 朴素贝叶斯理论基础 贝叶斯决策理论方法时统计模型决策中的一个基本方法,基本思想如下: (1)已知类条件概率密度参数表达式和先验概率 (2)利用贝叶斯公式转换成后验概率 (3)根据后验概率大小进行 ...

  8. 什么是贝叶斯定理?朴素贝叶斯有多“朴素”?终于有人讲明白了

    导读:如果有一天,我们知道的统计规律和现实生活发生了冲突,又或者前人的经验不符合亲身经历,那么该怎么办?面对经验与现实的矛盾,我们需要一种应对方案. 作者:徐晟 来源:大数据DT(ID:hzdashu ...

  9. 统计学习方法笔记(李航)———第四章(朴素贝叶斯法)

    推荐阅读:小白之通俗易懂的贝叶斯定理(Bayes' Theorem) 朴素贝叶斯法是一种多分类算法,它的基础是"朴素贝叶斯假设"(假设实例的各个特征具有条件独立性).根据训练集估计 ...

最新文章

  1. tensorflow就该这么学--6(多层神经网络)
  2. 费曼学习法:为何被称为史上最牛的学习法,它的本质究竟是什么?
  3. android静默卸载,Android实践 -- Android静默安装和卸载
  4. 持续更新的Zookeeper知识总结
  5. fork vfork exit _exit (转)
  6. 【转】Android 如何获取SDCard 内存(二)
  7. 手把手教你使用 VuePress 搭建个人博客
  8. NLog自定义字段写入数据库表,示例
  9. 电脑显示器尺寸对照表_三分钟带你了解五花八门的显示器参数,买显示器不在跳坑...
  10. python能做什么-揭秘python都能做什么?
  11. dispimg函数怎么用_excel中的lookup函数究竟该怎么用?如何才能准确理解它的用法?...
  12. jstat 监控调整GC很好用
  13. nod32升级问题解决(20080530)
  14. MyBatis 里面如何配置log4j
  15. 单体架构、SOA架构、微服务架构的优点缺点以及区别联系
  16. Greenplum5推出跨云能力,并与阿里云和腾讯云合作落地
  17. 微信浏览器(jssdk)自定义分享按钮,自定义链接,图片,描述等
  18. 免费在线接线图软件 + 示例
  19. skynet设计原理和使用
  20. 一个Java初学者的体验

热门文章

  1. STM32(Cortex-M3)开发,RVDS和MDK谁优谁劣?
  2. Java中JRE、JDK和JVM的区别
  3. 《Spring技术内幕》——1.4节Spring的应用场景
  4. Android 仿微信 相册多图选择器
  5. WCF部署到IIS异常(详细: 不能加载类型System.ServiceModel.Activation.HttpModule )
  6. Ubuntu16.04LTS安装ROS Kinetic
  7. NYOJ 714 Card Trick
  8. kafka消息存储原理及查询机制
  9. 设置Django关闭Debug后的静态文件路由
  10. SharePoint Set-SPUser 命令拒绝访问