贝叶斯软件genle教程_一文读懂蒙特卡罗方法和应用贝叶斯推理

贝叶斯方法与推论,本文应作为我的教程的背景,该教程使用(Py)Stan进行轻松的的应用贝叶斯推理,以及使用r-INLA进行(近似)贝叶斯回归的介绍。

在本文中,我将提供有关贝叶斯推理和蒙特卡洛方法的非常简短,自成体系的介绍,希望可以激发您通过我所包括的一些参考文献进行更深入的研究。

992fb92f60ac036cc41ce62d53109ed8.png

Image by imarksm from Pixabay

您可能听说过贝叶斯推理/回归/建模/分析……您可能听说过,或者您可能只是在通过之前才遇到过它,而没有真正怀疑它的用途,或没有任何良好的入门资源。

现实情况是,贝叶斯推论[1]比其频频论推论要复杂得多,并且大多数人在学术界或非常专业的工业应用中真正使用过它。 但是,它提供了一个非常丰富的框架,可以在推理过程中欣赏,并最终利用更多信息。 此外,它以一种可笑的方式提升了概率与应用统计之间的联系-真正的贝叶斯模型是一个生成模型。

对于本系列文章,我将采用(传统)基于似然的建模方法。

5分钟贝叶斯推断

贝叶斯推理使我们可以将一些先入为主的信念(即先验的信念)纳入我们的建模中。 进行实验后,我们可以从后验概率分布中采样,以更好地了解目标参数的行为,而不必寻找允许我们最大化似然性的参数值(最大似然估计) 。

18b40c4f3e24ab09405d7a802af9ca1d.png

The primordial Bayesian identity in the context of model fitting and inference.

简单来说,我声明模型参数()的先验分布,并将其乘以观察到的数据的可能性(D)。 为了使该数量充当概率密度函数,我必须将其除以归一化常数。 然后获得后验分布函数。

请注意,上面的归一化常数是很棘手的,当我们使用蒙特卡洛从后验分布中进行这种推断时,我们可以消除这一数量而不会失眠。

您可能会问:为什么这样做?

更好的科学,更严格的推论,正则化,数值稳定性,昂贵的数据获取,这并不能完全考虑MLE,还有许多其他原因。

您可能会问:什么是好的先验?

· 可牵引性? 共轭! 例如,正常先验x正常似然会产生正常后验!

· 科学相关性

· 正则化。 在标准线性回归的情况下,您的回归/ beta服务器上的N(0,1)可以用作L2正则化。

理想情况下,先验条件应该永远不要看数据。

您可能会问:那里有什么样的先验条件?

· 没有信息的(固定的)先验。 在大多数情况下,更具体地说,在下面的抛硬币问题中,原始的无先验先验将是均匀的分布。

· 先验信息薄弱。 我在下面的抛硬币问题中声明的beta优先级信息不足,因为我不抛弃theta参数空间中的间隔或点,而我赞成"公平"。

· 信息先验(通常基于专家意见或扎实的科学知识。

例如,假设我在地板上找到一枚硬币,并且想知道它是否公平。 我声明p = 是在给定的抛硬币中硬币将产生"正面"(y = 1)的概率。 那么q = 1-是硬币产生"尾巴"(y = 0)的概率。 请注意,可以使用以下函数形式将硬币的这种行为建模为bernoulli随机变量:

259a9effe731625100576d640bf3fab5.png

假设我抛硬币四次,并观察到它总是给我"反面"。如果我采用"最大似然"框架,则我将得到以下ML估计值(样本比例):

6d0e56db7617b0136176fcb4f861dca6.png

在我们的情况下,以上结果为0。 但这有点太极端了……具有相等表面积的两个面意味着硬币应该有一个非零的概率落在"正面"上(尽管很小)。 我们会立即注意到,如果一侧比另一侧小得多。

现在,正如贝叶斯主义者所说,我们遇到了同样的问题。 在自己扔硬币之前,我们需要对硬币建立先验的信念。 根据我的经验,硬币通常是公平的,因此我认为这种硬币很可能是公平的,并且很有可能不是。 然后,我将进行实验,以了解这枚硬币是否符合我的信念。 哦,我得到了相同的结果{0,0,0,0}。

为了获得有效(信息量有限)的先验知识,我将使用带有a,b个非负整数的beta(a,b)分布。 该先验是有道理的,因为伽马分布的域是[0,1],并且to在这里对应于概率,并且不能小于0或大于1。设置a = b = u其中u是一个正整数,得出a 分布对称约0.5。 此外,β分布与伯努利分布共轭(也与二项分布共轭,因为二项式随机变量由伯努利随机变量之和组成)。

caaae016c6289c4b31bd163f3dbf3d74.png

Simulation of a beta(5,5) distribution

然后,我考虑以下模型:

e0d87c451bfbca72e0cc3b49627206c8.png

这导致:

34cbd5253e21b2f269d800b209c63812.png

在此,C≥0表示归一化常数,出于本申请的目的,不必对其进行估计。

如果我们在上面的先验中设置a = b = 5,则Stan [2]-有关如何执行此操作的信息,请参见教程-收益率和mean的近似后均值0.36 <0.5。 因此,我们的估算表明存在偏差的硬币,没有立即变为0。

5分钟蒙特卡洛方法

出于本教程的目的,蒙特卡洛方法[3]将允许我们从模型参数的后验分布中进行采样。

用于估计实值可积函数f(x)的积分(I)(例如0≤x≤1)的最简单的蒙特卡洛方法表明,我们在[0,1 ],为每个x_ {i}计算f(x}),然后求和并求平均值。 我们要求I

e98d7ecad44fea031cb953802df3ff8d.png

As K goes to infinity, this vanilla Monte Carlo estimate should converge to the value of the integra

上面的内容很容易,但是通过观察以下内容,我们实际上可以使用更多的统计知识:

07f450daa8001f97f7ff02e5861f390b.png

We can think of the integral I as the expected value of f(x) and the below quantity as its unbiased

我们的估计量只是一个近似值,因此我们应该量化其准确性:

8e88d00756249817c4157469346cabc2.png

Here we simply change the notation a bit and show the formula for the standard error

那么,现在我们有了均值的无偏估计和标准误差的估计,该怎么办? 让我们调用中心极限定理,这对于足够大的K是合理的。

ece4863dc67d95ab0be693bb8f89e5ba.png

使用上述方法,我们可以为积分的估计量建立95%的置信区间:

f2c48dbaad04c1b3a82618fee9ee5d44.png

上面的方法非常幼稚且不准确,尤其是随着目标(概率)在维数,多峰等方面的增长。然而,这为您提供了MC方法的要点:从分布中采样以近似于另一个分布或感兴趣的数量。

请注意,蒙特卡洛方法是一个非常活跃的研究领域,具有非常丰富的理论和应用程序,我鼓励您阅读有关它们的更多信息。 蒙特卡洛计算引擎(PyMC3,Stan,BUGS等)上也有几个包,可以轻松地集成到Python,R和其他现代统计/机器学习软件中。

以下是一些非常基本的入门方法:

· 重要抽样

· 拒绝采样

· Metropolis-Hastings算法(马尔可夫链蒙特卡洛)

· 奖励:模拟退火(优化)

LaTeX和数学交流

最后一件事。 如果您对开发简洁,准确地传达数学/统计思想的能力很认真,那么我鼓励您开始使用LaTeX [5]。 LaTeX是功能强大的排版系统,可让您编写漂亮的方程式并将其无缝呈现在文档中。 我在本文档和所有工作中的所有数学表达式中都使用LaTeX。

结论

贝叶斯推理和计算最近凭借出色的计算硬件和软件获得了辉煌的复兴。 此外,贝叶斯方法跨越了活跃的研究领域,涉及统计学,数学,计算机科学,人口统计学,经济学以及许多其他领域。

以下是现代ML和统计学研究中的一些最热门主题,这些主题依赖或大量使用贝叶斯推理框架:

· 因果推论

· 可解释性(DL和RL)

· 贝叶斯超参数优化(AlphaGo)

· 多任务学习

· RL中的探索与开发

· 高效,计算稳定的MCMC(HMC)

参考文献

[1] R. Neal,关于ML的贝叶斯推理教程(2004),2004 NeurIPS。

[2] B. Carpenter等人,《斯坦:一种概率编程语言》(2017年),《统计软件》。

[3] C. Robert和G. Casella,《蒙特卡洛统计方法》(2005年),《 Springer Texts in Statistics》。

[4] D. Wackerley等人,《数学统计及其应用》(2014年),参与学习

[5] LaTeX3项目,LaTeX-文件准备系统(1985年),LaTeX项目公共许可证(

(本文翻译自Sergio E. Betancourt的文章《15-Minute Conceptual and Painless Introduction to Monte Carlo Methods and Applied Bayesian Inference》,参考:https://towardsdatascience.com/conceptual-background-for-painless-introduction-to-applied-bayesian-regression-using-pystan-c8f744e3823f)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

看动画轻松理解时间复杂度(一)

算法&#xff08;Algorithm&#xff09;是指用来操作数据、解决程序问题的一组方法。对于同一个问题&#xff0c;使用不同的算法&#xff0c;也许最终得到的结果是一样的&#xff0c;比如排序就有前面的十大经典排序和几种奇葩排序&#xff0c;虽然结果相同&#xff0c;但在过程…

win10切第二屏幕_Win10特有的31个快捷键,装逼利器,赶快收藏吧!学习电脑知识...

很多快捷键不同版本系统基本相同的&#xff0c;不过&#xff0c;今天推送的这篇更多偏向于win10&#xff0c;因为win10将来必定会形成主流&#xff0c;所以还是值得学习。【WinX】 打开简易版开始菜单。【Wini】 打开设置面板。【WinL】 快速锁屏【WinE】 启动资源管理器&#…

java学习(116):arraylist集合实现类

import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; //员工信息类 //date类 public class test50 {private String name;private String sex;private Date birth;public void showme(){System.out.println(this.getName());System.out.p…

redis存储数据类型_Redis与Memcahe的区别最全整理

经常看到大家只能对比redis和memecache的前两项区别【持久化】和【数据类型】&#xff0c;这里&#xff0c;给整理了最全的memcache和redis的区别&#xff0c;欢迎交流哦缓存(1)【持久化能力】Redis支持持久化&#xff0c;memcache也支持但一般不做持久化(重启丢失数据)(2)【数…

java学习(117):list迭代器和包含方法

import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; //员工信息类 //date类 public class test50 {private String name;private String sex;private Date birth;public void showme(){System.out.println(this.getName());System.out.p…

某项目的双代号网络图如下所示_2019一级建造师项目管理知识点大全3

更多精彩内容&#xff0c;点击 蓝字 关注我们1Z203000 建设工程项目进度控制1Z203010 建设工程项目进度控制与进度计划系统>>> 1Z203011 项目进度控制的目的考点 1&#xff1a;项目进度控制的工作环节 项目管理各方都有进度控制的任务&#xff0c;但其控制的目标和…

java学习(118):vector类

import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; //员工信息类 //date类 public class test50 {private String name;private String sex;private Date birth;public void showme(){System.out.println(this.getName());System.out.p…

Ipython\Jupyter数据分析工具

使用Python进行数据分析优点   1 Python大量的库为数据分析和处理提供了完整的工具集   2 比起R和Matlab等其他主要用于数据分析的编程语言&#xff0c;Python更全能   3 Python库一直在增加&#xff0c;算法的实现采用更具有创新性的方法   4 Python能和很多语言对接&…

分页的limit_20.MySQL中的LIMIT(分页)

对于一次性查询出的大量记录&#xff0c;不仅不便于阅读查看&#xff0c;还会浪费系统效率。MySQL中提供了一个关键字LIMIT&#xff0c;可以限定记录的数量&#xff0c;也可以指定查询从哪一条记录开始(通常用于分页)。1.准备CREATE DATABASE mahaiwuji;USE mahaiwuji;CREATE T…

java学习(120):set的iterator

public class Goods {//商品实体类private String number;//商品编号private String name;//商品价格private double price;//商品单价private int quantity;//商品数量public void setNumber(String number) {this.number number;}public String getNumber() {return numbe…

深入浅出etcd系列 – 心跳和选举

作者&#xff1a;宝爷 校对&#xff1a;DJ 1、绪论 etcd作为华为云PaaS的核心部件&#xff0c;实现了PaaS大多数组件的数据持久化、集群选举、状态同步等功能。如此重要的一个部件&#xff0c;我们只有深入地理解其架构设计和内部工作机制&#xff0c;才能更好地学习华为云Kube…

java学习(121):treeset排序集合

//treeset排序集合 import java.util.*;public class test61{public static void main(String[] args){TreeSet treenew TreeSet();//创建一个采用默认树形自然排序的对象tree.add(new Integer(50));tree.add(new Integer(150));tree.add(new Integer(250));tree.add(new Integ…

修改value_EXCEL批量名称修改

!!嘿嘿,今天给大家更新一章网上算是比较热的一个EXCEL技巧,当然这个是用VBA才能做到的,那就是名称的批量修改.打个比方吧.如果今天你要整理一下,你过往的一些照片,或者文件,这些文件或者照片要按照编辑时间和事件名称来进行编辑,那么你会怎么办?或者说,今天我到西湖去玩了一趟…

java学习(122):treeset自定义排序

//自定义排序 import java.util.*; public class test62 {public static void main(String[] args){TreeSet treenew TreeSet();//创建一个采用默认树形自然排序的对象tree.add(new Integer(50));tree.add(new Integer(150));tree.add(new Integer(250));tree.add(new Integer(…

运行指定代码_JavaScript 运行机制(Event Loop)详解

一、为什么JavaScript是单线程&#xff1f;JavaScript语言的一大特点就是单线程&#xff0c;也就是说&#xff0c;同一个时间只能做一件事。那么&#xff0c;为什么JavaScript不能有多个线程呢&#xff1f;这样能提高效率啊。JavaScript的单线程&#xff0c;与它的用途有关。作…

Java 支付宝支付,退款,单笔转账到支付宝账户(单笔转账到支付宝账户)

上次分享了支付宝订单退款的代码,今天分享一下支付宝转账的操作. 现在是有一个余额提现的功能,本来是打算做提现到银行卡的,但是客户嫌麻烦不想注册银联的开放平台账户,就说先提现到支付宝就行,二期再做银行卡的提现. 先在支付宝APP里添加此功能,需要签约. 此API官方参数文档 …

java学习(123):treeset排序集合

import java.util.Comparator;public class GoodsSorts implements Comparator {public int compare(Object o1,Object o2){Goods g1(Goods)o1;Goods g2(Goods)o2;System.out.println("调用排序方法");if(g1.getPrice()>g2.getPrice()){return -1;}else if(g1.get…

java学习(124):小综合案例

public class Province {private String name;//省份名称private long area;//土地面积private boolean general;//是普通省份还是特殊省份public String getName() {return name;}public void setName(String name) {this.name name;}public long getArea() {return area;}pu…

论文发表在什么期刊上_医学论文发表期刊论文范文

普通期刊是国内期刊中底数最多、选择范围最广、受众最广的期刊类型。这对国内作家来说一定不陌生。选择出版普通期刊的作者总是很多&#xff0c;无论是大学生还是发表专业职称的专业人士。写普通期刊并不难。普通期刊对论文的要求大多是论文的基本要求&#xff0c;大多数人都能…

[Docker]Docker拉取,上传镜像到Harbor仓库

需求因为项目的需求,需要制作一个基于tomcat的镜像.那么前提就是,需要有tomcat的基础镜像. 怎么做我的思路跑偏了,本来以为是需要将tomcat下载下来,然后通过docker命令,让它成为镜像的.结果后来和老大一沟通,才发现自己的思路偏的不是一点儿半点儿 如果需要tomcat镜像,可以从Do…