简单理解蒙德卡洛算法(附实例)
零基础都能理解的蒙德卡洛算法(附实例)
- 前言
- 什么是蒙特卡洛?
- 例1: 通过均匀抽样计算π\piπ值
前言
最近的研究项目需要用到马尔可夫链蒙特卡洛算法(Markov Chain Monte Carlo: MCMC),但之前一直不是很明白蒙特卡洛算法的具体原理(很多概率模型直接有调用MCMC的包,所以之前一直不是深入了解过)。前些日子重新认真的学习了一下蒙特卡洛算法,在此配上几个实例讲解一下。
什么是蒙特卡洛?
蒙特卡洛这个名字来源于摩纳哥赌城“蒙特卡洛”(统计学大师Nicholas Metropolis在1947年命名“Monte Carlo method”)。蒙特卡洛是一种统计模拟方法,具体方法是依赖随机样本来对目标做近似(refers to algorithms that rely on repeated random sampling to obtain numerical results)。相比其他统计学算法,蒙特卡洛的强大在于它的简单灵活已经容易实现(虽然不能得到真实值,但在样本基础足够大的时候可以无限逼近于真实值)。
简单的说,蒙特卡洛是尝试使用一些
例1: 通过均匀抽样计算π\piπ值
蒙德卡洛是一种可以估算π\piπ值的算法。这个例子就是假设我们有随机数生成器,那么我们能不能通过随机样本来估算π\piπ呢?
- 假设我们在一个xxx ~ Uniform(−1,1)Uniform(-1,1)Uniform(−1,1), yyy ~ Uniform(−1,1)Uniform(-1,1)Uniform(−1,1) 的平面内进行随机采样,那么这些点落在如上图中绿色圆内的概率是多大呢?我们可以计算出:
P(随机采样点落在圆内)P(随机采样点落在圆内)P(随机采样点落在圆内)= 圆的面积正方形的面积\frac{圆的面积}{正方形的面积}正方形的面积圆的面积 = π×r2(2r)2\frac{\pi\times r^{2}}{{(2r)}^{2}}(2r)2π×r2 = π4\frac{\pi}{4}4π , (r=1r = 1r=1)
假设我们随机取样nnn个点,每次落在圆内的概率为PPP,那么落圆内点数量的期望就是
E(随机采样点落在圆内)=P∗n=π×n4E(随机采样点落在圆内)= P*n = \frac{\pi\times n}{4}E(随机采样点落在圆内)=P∗n=4π×n
注意这里是期望,并不是实际落在圆内的点的个数,当取样数越多事,真实值落在圆内的点将无限接近于π×n4\frac{\pi\times n}{4}4π×n - 我们如何判断我们随机取样的(x,y)(x, y)(x,y)是否落在圆内呢?可以通过很简单的圆方程计算,如果(x,y)(x, y)(x,y)满足x2+y2<1x^2 + y^2 < 1x2+y2<1,那么该采样点落在圆内。
- 假设我们发现mmm个点落在圆内,在nnn足够大的前提下,我们就能近似的得到m≈π×n4m \approx \frac{\pi\times n}{4}m≈4π×n,经过简单变化,我们就能够估算π≈4×mn\pi \approx\frac{4\times m}{n}π≈n4×m。
后续案例之后补。。。
简单理解蒙德卡洛算法(附实例)相关推荐
- 简单理解线性规划的单纯形算法
自己写的,csdn的markdown不怎么会用,所以在知乎写的. 文章-理解线性规划的单纯形算法
- 二分图带权最大匹配费用流_简单理解二分图与匈牙利算法
最近在看DETR等论文时时,看到了使用了二分图的最大匹配,对于没有计算机基础的我表示直接上来???,因此本篇博客主要介绍什么是二分图,以及二分图的匹配的匈牙利算法. 首先我们来看看二分图的定义: 二分 ...
- C语言实现简单而通用的字典算法(附完整源码)
C语言实现简单而通用的字典 "字典"的特殊数据类型定义 实现以下6个接口 完整头文件 完整源文件 main 测试文件 "字典"的特殊数据类型定义 typedef ...
- CPD配准算法及代码的简单理解(Coherent Point Drift)
我的毕业设计用到了CPD算法,以及CPD代码工具包,当时刚开始接触CPD时在网上没找到几篇教程或是经验总结的东西.现在毕设做完了,就结合我的理解写一篇文章.可能写的会有点乱,因为我也是一时兴起想要做一 ...
- 字符串匹配算法Java_如何简单理解字符串匹配算法?
这篇文章来说说如何简单理解KMP,BM算法.之前看过一些文章说,KMP算法很难理解. 可我并不觉得. 我反而觉得它容易理解.平时我们写java代码的时候, 判断一个字符串是否存在包含另一个字符串都是直 ...
- 从零开始的AI·吃透kNN算法,学完我悟了(附实例代码)
从零开始的AI系列 从零开始的AI·机器学习の基本概念 从零开始的AI·决策树原来这么好理解(附实例代码) 从零开始的AI·朴素贝叶斯?拿来吧你(附实例代码) 文章目录 从零开始的AI系列 前言 一. ...
- 从零开始的AI·决策树原来这么好理解(附实例代码)
从零开始的AI系列 从零开始的AI·机器学习の基本概念 从零开始的AI·吃透kNN算法,学完我悟了(附实例代码) 从零开始的AI·朴素贝叶斯?拿来吧你(附实例代码) 文章目录 从零开始的AI系列 前言 ...
- 协同过滤算法的简单理解《推荐系统实践》
协同过滤算法的简单理解 本文主要是讲解一下<推荐系统实践>中UserCF和ItemCF这两种基于领域的推荐算法,写出自己的理解. UserCF(基于用户的协同过滤算法) 这种推荐算法的出发 ...
- php xml对象解析_php解析xml 的四种简单方法(附实例)
XML处理是开发过程中经常遇到的,PHP对其也有很丰富的支持,本文只是对其中某几种解析技术做简要说明,包括:Xml parser, SimpleXML, XMLReader, DOMDocument. ...
最新文章
- Oracle之唯一性约束(UNIQUE Constraint)使用方法具体解释
- [转帖]Linux中的15个基本‘ls’命令示例
- 基于 abp vNext 和 .NET Core 开发博客项目 - 集成Hangfire实现定时任务处理
- mysql字段简索引_MySQL优化看这一篇就够了
- 赛题解析|初赛赛道三:服务网格控制面分治体系构建
- python字典{:4}_升级您的Python技能:检查字典
- Fragment学习3--底部tab布局
- iOS | NSProxy
- 50.9. 触发器(Trigger)
- 自动登录SAP系统(流星程序集之十八)
- MySql常用函数大全
- 从入门到精通 - Fayson带你玩转CDH
- 四川大学计算机学院优秀毕业论文,(完整版)四川大学本科_毕业论文(设计)_有关规定...
- 驾照科二科三训练总结
- 几何平均详解,及其与算术平均、调和平均、均方根的关系
- 青春有多9,我爱我所有
- Nodejs之NestJS之pkg打包
- 5月17号软件资讯更新合集....
- android短信拦截与发送,有效拦截苹果iMessage垃圾短信的几个方法
- 飞桨day-04 NLP实践作业