通过一个具体实例来快速理解贝叶斯定理
简介
贝叶斯定理是概述中很基本也是最常用的一个定理,也是自然语言处理中一个最基本的公式。它的公式并不复杂,但是理解起来还是有点困难。网上有很多文章介绍如何它是什么或如何使用,但是很少有文章通过具体的实例来说明。因此,为了便于大家理解,本文特使用一个带有数字的具体示例进行演示。希望通过本文能够让更多的初学者快速掌握这条定理的内涵。
贝叶斯定理
首先,让我们认识一下贝叶斯定理:给定事件集合 A={A1,A2,...,An}\mathbb{A} = \{A_1, A_2,...,A_n\}A={A1,A2,...,An},满足 0≤Ai≤10 \leq A_i \leq 10≤Ai≤1,P(Ai∩Aj)=0(i≠j)P(A_i \cap A_j) = 0(i\neq j)P(Ai∩Aj)=0(i=j),且 ∑i=1nAi=1\sum_{i=1}^n A_i = 1∑i=1nAi=1 ,那么贝叶斯定理可以表示为:
P(Ai∣B)=P(B∣Ai)P(Ai)∑j=1nP(B∣Aj)P(Aj)P(A_i | B) = \frac{P(B|A_i) P(A_i)}{\sum_{j=1}^n P(B | A_j) P (A_j)}P(Ai∣B)=∑j=1nP(B∣Aj)P(Aj)P(B∣Ai)P(Ai)
注意:在表达式中有 iii 和 jjj 两个变量,其含义如下:
- iii 表示需要计算的第 iii 项的A 的基本事件;
- jjj 只是用于计算所有 A\mathbb{A}A 的基本事件之和,与 iii 完全无关。
这个公式在记忆的时候有一定的难度,过一段时间不用很容易忘记,所以只有真正理解了才会容易记忆。那么下面我们来详细分析一下。
首先,A\mathbb{A}A 不是一个单独的事件,而是一系列的事件组成,它们两两不相容且总概率为1。这样的事件很多,比如:
- A1\mathbb{A}_1A1 = {春,夏,秋,冬}
- A2\mathbb{A}_2A2 = {1/1, 1/2, …, 12/31}
- A3\mathbb{A}_3A3 = {汉族,回族,满族,…}
- A4\mathbb{A}_4A4 = {男, 女}
- A5\mathbb{A}_5A5 = {A, B, AB, O, 其他}
- A6\mathbb{A}_6A6 = {中国,日本,韩国,…}
这样的事件非常多,只要特别记住基本事件互相独立且总和为1即可。
然后我们再来看BBB。BBB是另一件事件,这个事情与A相互独立,所以可以同时发生,比如对于 A1\mathbb{A}_1A1,我们可以选择一个事件 BBB= 出门购物,7点前起床,打球,晴天等,都是完全无关的事件。
当我们有了一系列的事件 Ai{A_i}Ai 和一个事件B时,那么在 AiA_iAi 的条件下,B发生的概率,即 P(B∣Ai)P(B | A_i)P(B∣Ai) 都是可以求得的,那么根据条件概率就可以计算 P(B∣A)P(B | \mathbb{A})P(B∣A) 的概率。P(B∣A)=P(AB)P(A)P(B|\mathbb{A}) = \frac{P(\mathbb{A}B)}{P(\mathbb{A})}P(B∣A)=P(A)P(AB)顺带提一句,这个公式变形可得:P(B)=P(B∣A1)P(A1)+P(B∣A2)P(A2)+...+P(B∣An)P(An)=∑i=1nP(B∣Ai)P(Ai)P(B) = P(B|A_1)P(A_1) + P(B|A_2)P(A_2) + ...+P(B|A_n)P(A_n)=\sum_{i=1}^n P(B|A_i)P(A_i)P(B)=P(B∣A1)P(A1)+P(B∣A2)P(A2)+...+P(B∣An)P(An)=i=1∑nP(B∣Ai)P(Ai)即是全概率公式。
当我们需要求某个基本事件 AiA_iAi 的概率时,可以假设在条件 AiA_iAi 发生的情况下,B的发生概率为 pip_ipi,即:P(B∣Ai)=piP(B | A_i) = p_iP(B∣Ai)=pi,即在不同 AiA_iAi 条件下 B 的发生概率。那么我们反过来,利用在B的条件下,发生 AiA_iAi 的概率就可以使用以下公式:P(Ai∣B)=pi∑j=1npjP(A_i | B) = \frac{p_i}{\sum_{j=1}^n p_j}P(Ai∣B)=∑j=1npjpi即,AiA_iAi 在B的条件下发生的概率,比上 所有的 AiA_iAi 在 B 的条件下发生的概率之和。可以理解为(注,只是为了方便记忆,实际上是有区别的):Ai=P(Ai)∑j=1nP(Aj)A_i = \frac{P(A_i)}{\sum_{j=1}^n P(A_j)}Ai=∑j=1nP(Aj)P(Ai)也就是原来的基本定义。
实例说明
有四个名子集合 N={Rose,Jack,Nancy,John}\mathbb{N}=\{Rose, Jack, Nancy, John\}N={Rose,Jack,Nancy,John},现在随机抽取一个名子,则会有对应有4个基本事件:A1={Rose},A2={Jack},A3={Nancy},A4={John}A_1=\{Rose\}, A_2=\{Jack\}, A_3=\{Nancy\}, A_4=\{John\}A1={Rose},A2={Jack},A3={Nancy},A4={John}。为了简化说明,设每个名子在抽取时选中的几率一样,即 P(A1)=P(A2)=P(A3)=P(A4)=25%P(A_1) = P(A_2) = P(A_3) = P(A_4) = 25\%P(A1)=P(A2)=P(A3)=P(A4)=25%。再设另一件 B={namei∣namei包括字母o}B = \{name_i| name_i 包括字母o\}B={namei∣namei包括字母o}。求P(Ai∣B)P(A_i|B)P(Ai∣B)的概率。
根据贝叶斯定理的公式,欲求 P(Ai∣B)P(A_i | B)P(Ai∣B),我们可以通过计算第4列的 P(B∣Ai)P(Ai)P(B | A_i) P(A_i)P(B∣Ai)P(Ai) 和P(B∣Ai)P(B | A_i)P(B∣Ai) 获得。为此,我们列了以下表,列代表需要计算的内容,行代表第 iii 个事件对应的数据。
1:AiA_iAi |
2:P(BP(BP(B| Ai)A_i)Ai)
|
3:P(Ai)P(A_i)P(Ai) |
4:P(BP(BP(B| Ai)A_i)Ai) P(Ai)P(A_i)P(Ai)
|
5:P(BP(BP(B| Ai)A_i)Ai)
|
---|---|---|---|---|
A1A_1A1 | 100% | 25% | 25% | 50% |
A2A_2A2 | 0% | 25% | 0% | 0% |
A3A_3A3 | 0% | 25% | 0% | 0% |
A4A_4A4 | 100% | 25% | 25% | 50% |
如上表所示,现在对每列的情况进行说明。
第1列对应事件 AiA_iAi。
第2列表示当事件发生时,事件 BBB 的发生概率。比如,当 A1A_1A1 发生时,即名子为 Rose
时,事件 BBB 发生的概率是100%,因为 Rose
中一定包括字母o。所以,对于 A1A_1A1 和 A4A_4A4 的均为100%,而为 A2A_2A2 和 A3A_3A3 的概率为0%。
第3列计算每个事件 AAA 发生的概率,由于是相同概率,所以都是25%。
第4列是第2列和第3列的乘积,也是公式中右侧表达式的分子。
第5列是所要求的最终结果,现在分子已经有了,再计算分母即可,根据现有的数据,我们可以简单代入即可求得右侧表达式分母的值,即:∑j=1nP(B∣Aj)P(Aj)=25%+0%+0%+25%=50%\sum_{j=1}^{n} P(B|A_j)P(A_j)= 25\%+0\%+0\%+25\% = 50\%j=1∑nP(B∣Aj)P(Aj)=25%+0%+0%+25%=50%
所以,将第4列的值,除以 50%,即可求得 P(B∣Ai)P(B|A_i)P(B∣Ai) 的值。
注意:P(B∣A)P(B|A)P(B∣A) 是一个条件概率,即在 AAA 发生时,BBB 发生的概率。而 P(AB)P(A_B)P(AB) 表示的是 AAA 和 BBB 同时发生的概率。虽然两者中A都已经发生,但是本质区别在于B是否发生:在条件概率中B可能发生,可能不发生;而在后面B一定发生。举例来说,A表示下雨,B表示在家。比如小张下雨天在家的几率是50%,即P(B|A)=50%,但是P(AB)可能只有10%,因为下雨也是有概率的,还有不下雨的情况,比如下雨的几率为20%,非雨天的几率为80%。那么根据公式 P(AB)=P(A∣B)P(A)P(AB) = P(A|B) P(A)P(AB)=P(A∣B)P(A),即下雨又在家的几率为 50% * 20% = 10%。
小结
根据以上计算结果,我们可以看出贝叶斯定理就是在 P(Ai)P(A_i)P(Ai),P(B)P(B)P(B) 和 P(B∣Ai)P(B|A_i)P(B∣Ai) 已知的情况下,求 P(Ai∣B)P(A_i|B)P(Ai∣B)。以本示例来说,就是在已经所有抽样名称,是不是包括字母o 和 抽样发生是不是B,然后再求出是某字母的情况下求Ai求B的概率。
所以,当我们知道了某事件 A\mathbb{A}A 以后,可以进一步求得在事件 AiA_iAi 发生时,P(B) 也发生的概率,然后以此反推,求出在不同 AiA_iAi 的情况下求出 BBB 发生的概率。实际上就是在已经A条件下发生B的概率,再反过来在B的条件下发生A的概率,是一个通过先验求出后验结果的过程。
通过一个具体实例来快速理解贝叶斯定理相关推荐
- 形象快速理解贝叶斯定理
理解概率概念对于机器学习工程师或数据科学专业人员来说是必须的.许多数据科学挑战性问题的解决方案本质上是从概率视角解决的.因此,更好地理解概率将有助于更有效地理解和实现这些算法. 每当你阅读任何概率书. ...
- 两个相邻盒子的边框怎么只显示一个_一篇文章带你快速理解盒子模型「经典案例」...
今天带大家快速理解盒子模型,直接上代码: css盒子 我的css盒子测试模型 上面代码没有任何难度,只是写了一个div标签,大家已经知道,div标签是块级元素,所以会占满一行: 但是我们也注意到了图片 ...
- 如何在几天时间内快速理解一个陌生行业?
在当今的商业化社会,迅速去了解一个行业成为职场的一种必备的技能! 例如:你准备去一个全新的行业,那么如何在一周内快速建立起对新行业的认知? 1.首先建立起对这个行业的整体认知: 2.然后寻找新行业和你 ...
- 一个经典实例理解继承与多态原理与优点(附源码)---面向对象继承和多态性理解得不够深刻的同学请进...
一 引子 都说面向对象的4大支柱是抽象,封装,继承与多态.但是一些初涉编程的开发人员,体会不到继承与多态的妙用,本文就试以一个经典实例来诠释继承与多态的用武之地.本实例的需求来自<重构>一 ...
- Java快速创建大量对象_3分钟 快速理解JVM创建对象的步骤!
原标题:3分钟 快速理解JVM创建对象的步骤! 我们平时创建一个对象只需要new.然而我们知道对象的创建到底经历了哪些呢?实际上只不过仅仅的3步就完成了.先来看看完整的创建过程,再来一步一步的分析. ...
- 网络编程懒人入门(二):快速理解网络通信协议(下篇)
1.前言 本文上篇<网络编程懒人入门(一):快速理解网络通信协议(上篇)>分析了互联网的总体构思,从下至上,每一层协议的设计思想.基于知识连贯性的考虑,建议您先看完上篇后再来阅读本文. 本 ...
- 快速理解Spark Dataset
1. 前言 RDD.DataFrame.Dataset是Spark三个最重要的概念,RDD和DataFrame两个概念出现的比较早,Dataset相对出现的较晚(1.6版本开始出现),有些开发人员对此 ...
- 快速理解网络通信协议
1.正文引言 我们每天使用互联网,你是否想过,它是如何实现的? 全世界几十亿台电脑,连接在一起,两两通信.上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置, ...
- python tkinter计算器实例_Python+tkinter使用80行代码实现一个计算器实例
Python+tkinter使用80行代码实现一个计算器实例 本文主要探索的是使用Python+tkinter编程实现一个简单的计算器代码示例,具体如下. 闲话不说,直奔主题.建议大家跟着敲一遍代码, ...
最新文章
- notepad++的好用快捷键整理
- File Transfer(并查集)
- P2680 运输计划
- git 在ssh情况下提交代码
- 【渝粤题库】陕西师范大学164204 供应链与物流管理 作业
- zabbix增加手机端4个url地址的返回值
- kubernetes service 原理解析
- sklearn模型使用贝叶斯优化调参(以随机森林为例)
- PCL——连接两个点云的字段
- php实现中间件6,THINKPHP6 实现中间件
- JavaWeb——springMVC请求数据绑定分类解析(深度好文)
- 使用EncryptByPassPhrase和DecryptByPassPhrase对MS SQLServer某一字段时行加密和解密
- 思维导图的用处是什么?绘制思维导图技巧分享
- 通证实战派— WBTO区块链孵化工厂(企业痛点终结站)
- 【使用指南】ComponentOne Enterprise .NET开发控件集
- iOS 播放视频的基本步骤
- SCCM更新卡住恢复处理方法
- Linux内核“问题门” - 学习问题、经验集锦
- QQ截屏快速获取像素颜色
- 趋势:固态存储打破传统存储的I/O瓶颈
热门文章
- 驻云科技:上海云栖大会原力觉醒
- PostgreSQL 多元线性回归 - 2 股票预测
- 计算机在围棋面前一筹莫展
- Gson直接将json转list示例 (TypeToken)以及通过内联函数结合reified简化代码
- line-hight-(行高)解析
- 【OCM】Oracle 11g OCM 考试大纲
- 浏览器兼容性测试问题
- xcode 报Remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=4099 The connec...
- 串口提示非旺久原装的解决办法--驱动替换法
- 原生js之理解作用域