《贝叶斯方法:概率编程与贝叶斯推断》——1.2 我们的贝叶斯框架

简介:

本节书摘来异步社区《贝叶斯方法:概率编程与贝叶斯推断》一书中的第1章,第1.2节,作者:【加】Cameron Davidson-Pilon(卡梅隆 戴维森-皮隆),更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.2 我们的贝叶斯框架

我们感兴趣的估计,可以通过贝叶斯的思想被解释为概率。我们对事件A有一个先验估计——例如,在准备测试之前,我们对代码中的漏洞就有了一个先验的估计。

接下来,观察我们的证据。继续拿代码漏洞为例:如果我们的代码通过了X个测试,我们会相应地调整心里的估计。我们称这个调整过后的新估计为后验概率。调整这个估计值可以通过下面的公式完成,这个公式被称为贝叶斯定理,得名于它的创立者托马斯·贝叶斯。

9f10d1d02c003421c8a4cbd5f41dfe86904b3acc

上面的公式并不等同于贝叶斯推论,它是一个存在于贝叶斯推论之外的数学真理。在贝叶斯推论里它仅仅被用来连接先验概率P(A)和更新的后验概率P(A|X)。

1.2.1 不得不讲的实例:抛硬币

几乎所有统计书籍都包含一个抛硬币的实例,那我也从这个开始着手吧。假设你不确定在一次抛硬币中得到正面的概率(剧透警告:它是50%),你认为这里肯定是存在某个比例的,称之为p,但是你事先并不清楚p大概会是多少。

我们开始抛硬币,并记录下每一次抛出的结果——正面或反面,这就是我们的观测数据。一个有趣的问题是:“随着收集到越来越多的数据,我们对p的推测是怎么变化的呢?”

说得更具体一些,当面对着很少量的数据或拥有大量数据时,我们的后验概率是怎么样的呢?下面,我们按照观测到的越来越多的数据(抛硬币数据),逐次更新我们的后验概率图。

在图中我们用曲线表示我们的后验概率,曲线越宽,我们的不确定性越大。如图1.2.1所示,当我们刚刚开始观测的时候,我们的后验概率的变化是不稳定的。但是最终,随着观测数据(抛硬币数据)越来越多,这个概率会越来越接近它的真实值p=0.5(图中用虚线标出)。

注意到图中的波峰不一定都出现在0.5那里,当然它也没有必要都这样。应该明白的是我们事前并不知道p会是多少。事实上,如果我们的观测十分的极端,比如说抛了8次只有1次结果是正面的,这种情况我们的分布会离0.5偏差很多(如果缺少先验的知识,当出现8次反面1次正面时,你真的会认为抛硬币结果是公平的吗?)。随着数据的累积,我们可以观察到,虽然不是每个时候都这样,但越来越多地,概率值会出现在p=0.5。

下面这个实例就简单地从数据角度演示一下贝叶斯推断。

898d8ad43a490713143e5bfc07ecaf1b237c9137

1.2.2 实例:图书管理员还是农民

下面这个故事灵感来自于Daniel Kahneman的《思考,快与慢》一书,史蒂文被描述为一个害羞的人,他乐于助人,但是他对其他人不太关注。他非常乐见事情处于合理的顺序,并对他的工作非常细心。你会认为史蒂文是一个图书管理员还是一个农民呢?从上面的描述来看大多数人都会认为史蒂文看上去更像是图书管理员,但是这里却忽略了一个关于图书管理员和农民的事实:男性图书管理员的人数只有男性农民的1/20。所以从统计学来看史蒂文更有可能是一个农民。

怎么正确地看待这个问题呢?史蒂文实际上更有可能是一个农民还是一个图书管理员呢?把问题简化,假设世上只有两种职业——图书管理员和农民,并且农民的数量确实是图书管理员的20倍。

设事件A为史蒂文是一个图书管理员。如果我们没有史蒂文的任何信息,那么P(A)=1/21=0.047。这是我们的先验。现在假设从史蒂文的邻居们那里我们获得了关于他的一些信息,我们称它们为X。我们想知道的就是P(A|X)。由贝叶斯定理得:

c6e921d35340c0bd1d72a48f703424ddd1c25087

我们知道P(A)是什么意思,那P(X|A)是什么呢?它可以被定义为在史蒂文真的是一个图书管理员的情况下,史蒂文的邻居们给出的某种描述的概率,即如果史蒂文真的是一个图书管理员,他的邻居们将他描述为一个图书管理员的概率。这个值很可能接近于1。假设它为0.95。

P(X)可以解释为:任何人对史蒂文的描述和史蒂文邻居的描述一致的概率。现在这种形式有点难以理解,我们将其做一些逻辑上的改造:

66f32e88795bb2530c0c6397026067c88015e327

其中~A表示史蒂文不是一个图书管理员的事件,那么他一定是一个农民。现在我们知道P(X|A)和P(A),另外也可知P(~A)=1-P(A)=20/21。现在我们只需要知道P(X|~A),即在史蒂文为一个农民的情况下,史蒂文的邻居们给出的某

种描述的概率即可。假设它为0.5,这样,screenshot

结合以上:

2e7427c7e1ae305f0dac72cbed875e1223390460

这个值并不算高,但是考虑到农民的数量比图书管理员的数量多这么多,这个结果也非常合理了。在图1.2.2中,对比了在史蒂文为农民和史蒂文为图书管理员时的先验和后验概率。

%matplotlib inline
from IPython.core.pylabtools import figsize
import numpy as np
from matplotlib import pyplot as plt
figsize(12.5, 4)
plt.rcParams['savefig.dpi'] = 300
plt.rcParams['figure.dpi'] = 300
 
colors = ["#348ABD", "#A60628"]
prior = [1/21., 20/21.]
posterior = [0.087,1-0.087]
plt.bar([0, .7], prior, alpha=0.70, width=0.25,
       color=colors[0], label="prior distribution",
       lw="3", edgecolor="#348ABD")
 
plt.bar([0+0.25, .7+0.25], posterior, alpha=0.7,
       width=0.25, color=colors[1],
       label="posterior distribution",
       lw="3", edgecolor="#A60628")
 
plt.xticks([0.20, 0.95], ["Librarian", "Farmer"])
plt.title("Prior and posterior probabilities of Steve's\
         occupation")
plt.ylabel("Probability")
plt.legend(loc="upper left");```    
在我们得到X的观测值之后,史蒂文为图书管理员的概率增加了,虽然增加的不是很多,史蒂文为农民的可能性依旧是相当大的。

这是一个关于贝叶斯推断和贝叶斯法则的一个简单的实例。不幸的是,除了在人工结构的情况下,要执行更加复杂的贝叶斯推断所使用到的数学只会变得更加的复杂。在后面我们将看到执行这种复杂的属性分析并没有必要。首先,我们必须扩充我们的建模工具。下一章的概率分布,如果你已经对它很熟悉了,可以选择跳过(或只是浏览一下),但是对于不熟悉的读者,下一章是很有必要的。

<div style="text-align: center"><img src="https://yqfile.alicdn.com/4b85e09b5edce751598572df5b6dd09064f5de3f.png" width="" height="">
相关文章
叠加定理
叠加定理(Superposition principle)是物理学中的一个原理,它适用于线性系统,描述了当系统受到多个独立输入时,系统响应的叠加关系。 根据叠加定理,当一个线性系统同时受到多个输入时,系统的响应等于每个输入单独作用时系统的响应的叠加。换句话说,系统的总响应等于各个输入分别作用时系统的响应的总和。
553 0
|
运维 监控 Java
研发规范第十三讲:阿里 - 如何进行项目稳定性建设
研发规范第十三讲:阿里 - 如何进行项目稳定性建设
974 1
|
人工智能 安全 算法
利用AI技术提升网络安全防御能力
【10月更文挑战第42天】随着人工智能技术的不断发展,其在网络安全领域的应用也日益广泛。本文将探讨如何利用AI技术提升网络安全防御能力,包括异常行为检测、恶意软件识别以及网络攻击预测等方面。通过实际案例和代码示例,我们将展示AI技术在网络安全防御中的潜力和优势。
|
7月前
|
前端开发 JavaScript Android开发
《深度剖析:React Native与Flutter在社交应用中混合原生组件开发》
React Native通过JavaScript桥接机制调用原生组件,适合快速开发社交应用功能,如分享、相机等,但性能上可能在高并发场景下存在瓶颈。Flutter采用Dart语言和Skia引擎自绘制UI,跨平台一致性更强,热重载支持状态保留,提升开发效率,但在特定原生功能集成时需更多适配工作。两者各有优势:React Native社区成熟、上手容易;Flutter性能优越、代码统一。开发者需根据项目需求、团队技术栈及性能要求选择合适框架。
229 25
|
安全 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
——深入探索LAMP栈下的高效数据交互与处理技巧 ####
|
机器学习/深度学习 数据采集 数据挖掘
Pandas中的行序反转与列序反转
Pandas中的行序反转与列序反转
442 3
|
9月前
|
存储 自然语言处理 数据可视化
行政人员必读:如何选择适合企业需求的会议管理软件
在现代企业运营中,会议管理是提高效率的关键。选择合适的会议管理软件需考虑操作简便、高性价比、适配多种场景及实时数据分析等因素。二维码会议管理系统因其便捷、低成本、高效签到和防作弊机制,成为中小企业的理想选择。草料二维码等平台提供免费服务,支持灵活定制和实时数据同步,帮助企业提升会议组织效率并节省资源。
|
编解码 物联网 计算机视觉
实战 | 猫猫、少女、FLUX、ControlNet
魔搭社区集结了来自多个组织的 FLUX ControlNet 模型,魔搭社区的开源项目 DiffSynth-Studio 为这些模型提供了支持,今天就随我们一起,体验一下这些 FLUX ControlNet 模型的神奇生成能力。
|
UED
鸿蒙next版开发:音频并发策略扩展(ArkTS)
在HarmonyOS 5.0中,音频并发策略通过ArkTS的AudioSessionManager接口管理多个音频流的交互和优先级。本文介绍了如何自定义音频焦点策略,包括激活、停用音频会话及注册回调函数,并提供了示例代码。适用于多媒体、通信和游戏应用。
293 4
|
人工智能 自然语言处理 搜索推荐
科技云报到:澳门旅游局x百度智能云:打造懂游客的智能客服
科技云报到:澳门旅游局x百度智能云:打造懂游客的智能客服
515 8