| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Python 贝叶斯概率推断序列数据概率和先验、似然和后验图可视化 -> 正文阅读 |
|
[人工智能]Python 贝叶斯概率推断序列数据概率和先验、似然和后验图可视化 |
原文链接:http://tecdat.cn/?p=24191原文出处:拓端数据部落公众号在这篇文章中,我将集中讨论一个给定一个短数据序列的推断概率的例子。我将首先介绍如何用贝叶斯方法进行期望推理的理论,然后在 Python 中实现该理论,以便我们能够处理这些想法。为了使文章更容易理解,我将只考虑一小组候选概率。我能够最小化推理的数学难度,同时仍然能够得到非常好的结果,包括先验、似然和后验图。 ?具体来说,我将考虑以下情况:
概率我的出发点是写出数列的概率,就好像我知道0或1的概率一样。当然,我不知道这些概率——找到这些概率是我们的目标——但这是先验的有用的地方。例如,我们的示例数据系列的概率,不需要具体说明 p0的值,可以写成: 我使用 p1=1?p0 来写出 p0的概率。我还可以以更紧凑的方式写出上述概率:? ? 上面给出的概率的形式称为?伯努利过程?。我也可以用非常通用的方式来写这个概率,而不是具体关于数据系列 D 或概率 p0,如:? n0 和 n1 表示数据系列中 0 和 1 的数量。 通过替换相关的计数和概率,我可以将一般形式与特定示例联系起来。我首先计算上面给出的数据系列和概率的似然值: ? 检查结果,我发现 p0 = 0.6的可能性最大,略高于 p0 = 0.8。这里有几点需要注意:
进行上述计算的能力使我能够很好地应用贝叶斯定理并获得所需的后验 pmf。在继续讨论贝叶斯定理之前,我想再次强调似然函数的一般形式?: ?写下对数似然也很有用: 因为当我在下面创建一些 Python 代码时,这种形式增加了数值稳定性。需要明确的是,我使用的是自然(以 e 为底)对数,即 loge(x)=ln(x)。 先验我已经决定了部分先验——选择 p0∈{0.2,0.4,0.6,0.8} 作为我将考虑的一组概率。剩下的就是为每个候选 p0 分配先验概率,这样我就可以从正确归一化的先验 pmf 开始。假设先验相等,这是一种推理: 其中使用 A1表示我所做的假设。以上信息构成了先验的?pmf。 贝叶斯定理和后验接下来,我使用?上面定义的?似然?和?先验pmf 来推断 p0 的潜在值。也就是说,我将使用贝叶斯定理来计算?给定似然和先验的?后验pmf。后验有形式: 换句话说,这是?给定数据序列?D?和假设?A1的?p0??的概率,我可以使用贝叶斯定理计算后验:? ? 其中先验 P(p0|A1)是红色,似然 P(D|p0) 是黑色,后验 P(p0|D,A1)是蓝色的。 这使我的 p0信息从假设(A1)更新到假设 + 数据(d,A1) :? 我可以通过定义边际似然函数来简化贝叶斯定理 :? 我可以将贝叶斯定理写成以下形式: 后验部分应该被看作是一组方程,对应于 p0的每个候选值,就像我们对似然和先验所做的那样。 最后,对于理论,我计算了 p0 的后验 pmf。让我们从计算依据开始(我知道上面的似然和先验的所有值): 因此,贝叶斯定理中的分母等于 9.57440e-04。现在,完成后验 pmf 计算。? 第一,? ? 第二,? ? 第三,? 最后,? ? 回顾在 Python 代码之前,让我们稍微回顾一下结果。使用数据和贝叶斯定理我已经从?先验的?pmf 到?后验pmf 在贝叶斯设置中,这个后验 pmf 是我们推断 p0的答案,反映了我们对给定假设和数据的参数的知识。通常人们想报告一个单一的数字,但这个后验反映了相当多的不确定性。一些选择是:
然而,报告的推论,沟通不确定性是工作的一部分。在实际操作中,后面的图确实有助于完成任务。所以,让我们离开理论,在 Python 中实现这些想法。 用 Python 编写推理代码首先,代码导入 numpy 和 matplotlib。使用 ggplot 样式来绘图。
首先,我创建了一个类来处理?似然。该类接收数据序列并提供一个接口,用于计算给定概率 p0的似然。你能够在方法中找到对数似然方程(对于边际情况需要特别注意)。?
接下来我为先验的?pmf创建一个类?。给定 p0 的候选值列表,默认情况下会创建一个均匀先验。如果需要其他,可以传递先验概率来覆盖此默认值。下面我举个例子。
最后,我为后验构造一个类,??它采用数据和先验类的一个实例构造后验 pmf。plot() 方法提供了一个非常好的推理可视化,包括?先验、?似然?和?后验的图。 请注意,后验的所有计算都是使用对数概率完成的。这对于数值精度来说是绝对必要的,因为概率可能变化很大,可能非常小。
例子让我们测试一下代码。首先,我将复制我们在理论例子中所做的例子,以确保一切正常:
请注意后验 pmf 如何很好地表明 p0=0.6 和 p0=0.8 都有很大的概率——这里存在不确定性!这是有道理的,因为我们只有一个长度为 10 的数据系列,而且只有四个候选概率。另外,请注意:?
接下来,让我们考虑设置一个强先验——偏好 p0 的一个值。使用我们的 Python 代码很容易看到这个先验对结果后验的影响:
注意以下几点:
最后,让我们用更多的候选概率(这里是100)和更长的数据序列来做一个例子。
注意几点:
最受欢迎的见解 4.R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 6:15:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |