从贝叶斯定理说开去

article/2025/9/24 12:37:22

从贝叶斯定理说开去


罗朝辉 (http://kesalin.github.io/)
CC 许可,转载请署名并保留出处

简介

贝叶斯定理是18世纪英国数学家托马斯·贝叶斯(Thomas Bayes)提出得重要概率论理论。以下摘一段 wikipedia 上的简介:

所谓的贝叶斯定理源于他生前为解决一个“逆概”问题写的一篇文章,而这篇文章是在他死后才由他的一位朋友发表出来的。在贝叶斯写这篇文章之前,人们已经能够计算“正向概率”,如“假设袋子里面有 N 个白球,M 个黑球,你伸手进去摸一把,摸出黑球的概率是多大”。而一个自然而然的问题是反过来:“如果我们事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或好几个)球,观察这些取出来的球的颜色之后,那么我们可以就此对袋子里面的黑白球的比例作出什么样的推测”。这个问题,就是所谓的逆向概率问题。

贝叶斯定理的思想出现在18世纪,但真正大规模派上用途还得等到计算机的出现。因为这个定理需要大规模的数据计算推理才能凸显效果,它在很多计算机应用领域中都大有作为,如自然语言处理,机器学习,推荐系统,图像识别,博弈论等等。

定义

贝叶斯定理是关于随机事件 A 和 B 的条件概率:

贝叶斯定理

其中P(A|B)是在 B 发生的情况下 A 发生的可能性。

在贝叶斯定理中,每个名词都有约定俗成的名称:

P(A)是 A 的先验概率,之所以称为“先验”是因为它不考虑任何 B 方面的因素。
P(A|B)是已知 B 发生后 A 的条件概率,也由于得自 B 的取值而被称作 A 的后验概率。
P(B|A)是已知 A 发生后 B 的条件概率,也由于得自 A 的取值而被称作 B 的后验概率。
P(B)是 B 的先验概率,也作标淮化常量(normalizing constant)。

按这些术语,贝叶斯定理可表述为:

后验概率 = (相似度 * 先验概率)/标淮化常量

也就是说,后验概率与先验概率和相似度的乘积成正比。

另外,比例P(B|A)/P(B)也有时被称作标淮相似度(standardised likelihood),Bayes定理可表述为:

后验概率 = 标淮相似度 * 先验概率

条件概率就是事件 A 在另外一个事件 B 已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在 B 发生的条件下 A 发生的概率”。

联合概率表示两个事件共同发生(数学概念上的交集)的概率。A 与 B 的联合概率表示为联合概率

推导

我们可以从条件概率的定义推导出贝叶斯定理。

根据条件概率的定义,在事件 B 发生的条件下事件 A 发生的概率为:

贝叶斯定理

同样地,在事件 A 发生的条件下事件 B 发生的概率为:

贝叶斯定理

结合这两个方程式,我们可以得到:

贝叶斯定理

这个引理有时称作概率乘法规则。上式两边同除以 P(A),若P(A)是非零的,我们可以得到贝叶斯定理:

贝叶斯定理

解释

通常,事件 A 在事件 B 发生的条件下的概率,与事件 B 在事件 A 发生的条件下的概率是不一样的;然而,这两者是有确定关系的,贝叶斯定理就是这种关系的陈述。

贝叶斯公式的用途在于通过己知三个概率来推测第四个概率。它的内容是:在 B 出现的前提下,A 出现的概率等于 A 出现的前提下 B 出现的概率乘以 A 出现的概率再除以 B 出现的概率。通过联系 A 与 B,计算从一个事件发生的情况下另一事件发生的概率,即从结果上溯到源头(也即逆向概率)。

通俗地讲就是当你不能确定某一个事件发生的概率时,你可以依靠与该事件本质属性相关的事件发生的概率去推测该事件发生的概率。用数学语言表达就是:支持某项属性的事件发生得愈多,则该事件发生的的可能性就愈大。这个推理过程有时候也叫贝叶斯推理。

示例

示例一:应当根据新情况更新先验概率

《决策与判断》第十二章中讲到人们都有保守主义情结,即使出现了新信息,也不愿意根据新信息来更新先验概率。用前面解释里面的话说就是:新信息是 B 事件不断发生,人们本应该根据这个信息去更新 A 事件发生的概率,但人们却更愿意固守之前估计的 A 事件发生的概率。

书中举了这样一个调查案例:

假设有两个各装了100个球的箱子,甲箱子中有70个红球,30个绿球,乙箱子中有30个红球,70个绿球。假设随机选择其中一个箱子,从中拿出一个球记下球色再放回原箱子,如此重复12次,记录得到8次红球,4次绿球。问题来了,你认为被选择的箱子是甲箱子的概率有多大?

调查结果显示,大部分人都低估了选择的是甲箱子的概率。根据贝叶斯定理,正确答案是96.7%。下面容我来详细分析解答。

刚开始选择甲乙两箱子的先验概率都是50%,因为是随机二选一(这是贝叶斯定理二选一的特殊形式)。即有:

P(甲) = 0.5, P(乙) = 1 - P(甲);

这时在拿出一个球是红球的情况下,我们就应该根据这个信息来更新选择的是甲箱子的先验概率:

P(甲|红球1) = P(红球|甲) × P(甲) / (P(红球|甲) × P(甲) + (P(红球|乙) × P(乙)))
P(红球|甲):甲箱子中拿到红球的概率
P(红球|乙):乙箱子中拿到红球的概率

因此在出现一个红球的情况下,选择的是甲箱子的先验概率就可被修正为:

P(甲|红球1) = 0.7 × 0.5 / (0.7 × 0.5 + 0.3 × 0.5) = 0.7

即在出现一个红球之后,甲乙箱子被选中的先验概率就被修正为:

P(甲) = 0.7, P(乙) = 1 - P(甲) = 0.3;

如此重复,直到经历8次红球修正(概率增加),4此绿球修正(概率减少)之后,选择的是甲箱子的概率为:96.7%。

我写了一段 Python 代码来解这个问题:

<figure class="code" style="margin: 0px 0px 1.5em; padding: 0px; border: 0px; font-family: 'PT Serif', Georgia, Times, 'Times New Roman', serif; font-stretch: inherit; line-height: 27.5999984741211px; font-size: 18px; vertical-align: baseline; -webkit-box-shadow: rgba(0, 0, 0, 0.0588235) 0px 0px 10px; box-shadow: rgba(0, 0, 0, 0.0588235) 0px 0px 10px; color: rgb(34, 34, 34); background: none rgb(248, 248, 248);

http://chatgpt.dhexx.cn/article/VpaxVuLu.shtml

相关文章

小白之通俗易懂的贝叶斯定理

小白之通俗易懂的贝叶斯定理 贝叶斯定理的产生以及意义什么是贝叶斯定理&#xff1f;贝叶斯定理的应用案例贝叶斯定理套路生活中的贝叶斯思维 转载自&#xff1a;https://mp.weixin.qq.com/s/lR3eeSWYHJDAJ9kJUzXc7w 贝叶斯定理的产生以及意义 1、贝叶斯定理的产生来源 英国…

通俗地理解贝叶斯公式(定理)

通俗地理解贝叶斯公式&#xff08;定理&#xff09; 朴素贝叶斯&#xff08;Naive Bayesian algorithm&#xff09;是有监督学习的一种分类算法&#xff0c;它基于“贝叶斯定理”实现&#xff0c;该原理的提出人是英国著名数学家托马斯贝叶斯。贝叶斯定理是基于概率论和统计学…

WebPack实战 WebPack打包Vue项目

文章目录 前言一、使用webpack来进行vue-cli模块化开发二、Webpack配置区分开发环境和生产环境三、vue项目打包3.1、config—index.js文件3.2、build—webpack.prod.conf.js 文件3.3、element ui 字体文件加载出错3.4、路由跳转出现js访问404问题 四、关闭Webpack的debug模式五…

vscode使用webpack打包

vscode使用webpack打包 下载webpack初始化项目打包 .js文件打包.js.csswebpack全局安装与局部安装 webpack作用就是将多个不同的.js文件或者.css文件打包为一个文件,减少请求量 有大佬的帖子写的很详细,各种资源的打包方式都有: https://blog.csdn.net/chen4565/article/detai…

webpack打包html

webpack打包html 1.生产环境与开发环境的区别2.打包html3.安装html插件4.在配置文件中引入我们的插件5.在我们的配置文件的最下方写入html配置6.打包完成生成一个index文件7.在文件中写入其他内容8.打包后的内容展示9.改变title的内容10.打包后的效果展示11.打包多个页面12.压缩…

webpack打包json文件

项目里新增了json文件&#xff0c;webpack报错如下&#xff1a; webpack本身是支持json文件读取的&#xff0c;这个报错是babel-loader在报错&#xff0c;也就是说&#xff0c;打包的时候&#xff0c;babel-loader去解析了json文件。babel是js的编译工具&#xff0c;可以把js、…

React 使用webpack打包

一、项目创建 1、新建一个项目文件夹&#xff0c;打开终端&#xff0c;切换到到项目目录下&#xff1a; npm init -y 这时候使用webstorm等高级的编辑器打开项目执行下面步骤效果会更直观。 2、新建一个文件夹public&#xff0c;在文件夹内创建index.html文件&#xff0c;添加…

webpack打包工具的基本使用

目录 一、webpack是什么&#xff1f; 二、webpack的基本使用 1、初始化项目 2、安装webpack及其依赖 3、使用 3.1 配置webpack&#xff1a; 3.2 在package.js文件中添加打包命令 3.3 执行打包命令 三、webpack相关插件 插件一&#xff1a;HtmlWebpackPlugin 插件二&a…

webpack打包优化

目录 概述 打包优化-路由懒加载 问题 那什么是路由懒加载呢? 路由懒加载中的魔法注释 小结 打包优化-包大小分析 包大小分析 打包优化-去掉console-log webpack配置排除打包-整体分析 回顾 提问 思路 webpack配置排除打包-打包瘦身 目标 使用方式 webpack配置…

webpack打包工具的使用方法

目录 一、webpack打包工具 1、简介 2.npm补充 3.webpack一系列的步骤 1.npm init -y初始化文件生成package.json文件 2.npm install jquery -S安装jquery包&#xff0c; 3.卸载包的时候&#xff0c;用npm uninstall jquery -S(如果需要卸载的话) 4.在根目录上新建src文…

webpack 打包chunk

chunk的含义以及出现的情况 webpack特定术语在内部用于管理捆绑过程&#xff0c;输出束&#xff08;bundle&#xff09;由块组成。 是webpack 根据功能拆分出来的代码片段&#xff0c;包含三种情况 官方: 1.入口起点&#xff1a;使用entry配置手动地分离代码 **2.防止重复…

webpack打包报错

在执行npm run build对项目进行打包的时候遇到webpack打包报错的问题 在网上找到各种方法去解决&#xff0c;什么node版本不兼容啊重装node啊&#xff0c;什么saas没装好python环境啊&#xff0c;webpack版本兼容问题啊&#xff01;总之各种说法都看着去尝试解决了&#xff0c;…

webpack打包css

webpack打包 1.打包css2.打包逻辑1-1.webpack打包css逻辑 3.打包css4.打包成独立的css文件5.添加样式前缀6.格式校验7.压缩css8.我们为什么要用这个打包工具呢9.webpack的打包顺序10.总结 1.打包css 2.打包逻辑 1-1.webpack打包css逻辑 非js文件打包 需要对应的loadercss-loa…

初识webpack打包

初识webpack打包&#xff0c;小白入门 前言&#xff1a; webpack是一款基于node的构建工具&#xff0c;其中一大特色就是打包 因为现在前端已经工程化开发&#xff0c;写的代码已经不能直接在浏览器上运行了 这时候webpack会帮你把代码进行编译&#xff0c;打包成浏览器识别的…

webpack打包分析

分析一&#xff1a;打包的时间分析 如果我们希望看到每一个loader、每一个Plugin消耗的打包时间&#xff0c;可以借助于一个插件&#xff1a;speed-measure-webpack-plugin注意&#xff1a;该插件在最新的webpack版本中存在一些兼容性的问题&#xff08;和部分Plugin不兼容&am…

如何使用Webpack打包

简单的说了一下webpack是干嘛的&#xff0c;和webpack如何安装&#xff0c;如何进行打包&#xff0c;步骤很详细&#xff0c;感兴趣的同学可以试着操作一下。 文章目录 1、webpacks是什么&#xff1f;2、Webpack安装3、初始化项目4、使用webpack进行JS打包5、使用webpack进行CS…

webpack打包优化配置

文章目录 前言不进行任何打包配置代码分离splitChunkruntimeChunk动态导入 css文件处理css文件提取css文件压缩css实现Tree Shaking js实现Tree shakingTerserscope Hoisting打包优化没效果打包界面显示分析总结 前言 之前使用webpack进行项目搭建配置时&#xff0c;都是操作一…

webpack打包路径更改_webpack打包教程

创建package.json文件 命令:npm init 安装webpack npm install --save-dev webpack npm install --save-dev webpack-cli 全局安装: npm install --global webpack webpack-cli 打包 默认entry入口 src/index.js 默认output出口 dist/main.js 打包模式: webpack --mode deve…

Vue基础知识总结 9:vue webpack打包原理

&#x1f3c6;作者简介&#xff1a;哪吒&#xff0c;CSDN2022博客之星Top1、CSDN2021博客之星Top2、多届新星计划导师✌、博客专家&#x1f4aa;&#xff0c;专注Java硬核干货分享&#xff0c;立志做到Java赛道全网Top N。 &#x1f3c6;本文收录于&#xff0c;Java基础教程系列…

webpack 打包流程

流程梳理 在开始之前我们先对于整个打包流程进行一次梳理。 这里仅仅是一个全流程的梳理&#xff0c;现在你没有必要非常详细的去思考每一个步骤发生了什么&#xff0c;我们会在接下来的步骤中去一步一步带你串联它们。 整体我们将会从上边5个方面来分析Webpack打包流程: 初…