# 【深度干货】专知主题链路知识推荐#5-机器学习中似懂非懂的马尔科夫链蒙特卡洛采样（MCMC）入门教程01

【导读】主题链路知识是我们专知的核心功能之一，为用户提供AI领域系统性的知识学习服务，一站式学习人工智能的知识，包含人工智能（ 机器学习、自然语言处理、计算机视觉等）、大数据、编程语言、系统架构。使用请访问专知 进行主题搜索查看 - 桌面电脑访问www.zhuanzhi.ai, 手机端访问www.zhuanzhi.ai 或关注微信公众号后台回复" 专知"进入专知，搜索主题查看。今天给大家继续介绍我们独家整理的机器学习——马尔科夫链蒙特卡洛采样（MCMC）方法。

## 1、从随机变量分布中采样

### 举例

```1 %% Explore the Normal distribution N( mu , sigma )
2 mu = 100; % the mean
3 sigma = 15; % the standard deviation
4 xmin = 70; % minimum x value for pdf and cdf plot
5 xmax = 130; % maximum x value for pdf and cdf plot
6 n = 100; % number of points on pdf and cdf plot
7 k = 10000; % number of random draws for histogram
8
9 % create a set of values ranging from xmin to xmax
10 x = linspace( xmin , xmax , n );
11 p = normpdf( x , mu , sigma ); % calculate the pdf
12 c = normcdf( x , mu , sigma ); % calculate the cdf
13
14 figure( 1 ); clf; % create a new figure and clear the contents
15
16 subplot( 1,3,1 );
17 plot( x , p , 'k−' );
18 xlabel( 'x' ); ylabel( 'pdf' );
19 title( 'Probability Density Function' );
20
21 subplot( 1,3,2 );
22 plot( x , c , 'k−' );
23 xlabel( 'x' ); ylabel( 'cdf' );
24 title( 'Cumulative Density Function' );
25
26 % draw k random numbers from a N( mu , sigma ) distribution
27 y = normrnd( mu , sigma , k , 1 );
28
29 subplot( 1,3,3 );
30 hist( y , 20 );
31 xlabel( 'x' ); ylabel( 'frequency' );
32 title( 'Histogram of random values' );```

Listing 1.1: Matlab code to visualize Normal distribution.

## 1.2 从非标准分布中采样

### 1.2.1 用离散变量进行逆变换采样（Inverse transform sampling）

```1 % Simulate the distribution observed in the
2 % human random digit generation task
3
4 % probabilities for each digit
5 theta = [0.000; ... % digit 0
6 0.100; ... % digit 1
7 0.090; ... % digit 2
8 0.095; ... % digit 3
9 0.200; ... % digit 4
10 0.175; ... % digit 5
11 0.190; ... % digit 6
12 0.050; ... % digit 7
13 0.100; ... % digit 8
14 0.000 ] ... % digit 9
15
16 % fix the random number generator
17 seed = 1; rand( 'state' , seed );
18
19 % let's say we draw K random values
20 K = 10000;
21 digitset = 0:9;
22 Y = randsample(digitset,K,true,theta);
24 % create a new figure
25 figure( 1 ); clf;
26
27 % Show the histogram of the simulated draws
28 counts = hist( Y , digitset );
29 bar( digitset , counts , 'k' );
30 xlim( [ −0.5 9.5 ] );
31 xlabel( 'Digit' );
32 ylabel( 'Frequency' );
33 title( 'Distribution of simulated draws of human digit generator' );```

Listing 1.2: Matlab code to simulate sampling of random digits.

Figure 1.2.1: Illustration of the inverse transform procedure for generating discrete random variables. Note that we plot the cumulative probabilities for each outcome. If we sample a uniform random number of U = 0.8, then this yields a random value of X = 6

### 1.2.2 连续变量的逆变换采样

1. 获得均匀分布U∼Uniform(0,1)
1. 重复上述采样过程

。从而引出了下面的从Exponental(λ)分布中采样随机数的步骤：

1. 获得均匀分布
1. 重复上述采样过程

### 1.2.3 拒绝采样

1. 选择一个容易采样的分布q(θ)
2. 确定常量c，使对所有θ的有cq(θ)≥p(θ)
3. 从建议分布q(θ)中采样一个建议样本θ
4. 从区间[0,cq(θ)]采样一个数u
5. 如果u>p(θ)则拒绝，否则接受
6. 重复步骤3,4,5，直到达到要求的样本数量；每个接受的样本都是从p(θ)中获得的

## 后续介绍MCMC，敬请期待！

MCMC matlab tutorial 电子版本：http://pan.baidu.com/s/1i48vyr7

## Reference

Mark Steyver. Computational Statistics with Matlab. 2011

0 条评论

• ### 专知主题链路知识推荐#1——马尔科夫链蒙特卡洛采样(附代码)

【导读】主题链路知识是我们专知的核心功能之一，为用户提供AI领域系统性的知识学习服务，一站式学习人工智能的知识，包含人工智能（ 机器学习、自然语言处理、计算机视...

• ### 【深度干货】专知主题链路知识推荐#7-机器学习中似懂非懂的马尔科夫链蒙特卡洛采样（MCMC）入门教程02

【导读】主题链路知识是我们专知的核心功能之一，为用户提供AI领域系统性的知识学习服务，一站式学习人工智能的知识，包含人工智能（ 机器学习、自然语言处理、计算机视...

• ### 方法总结：教你处理机器学习中不平衡类问题

【导读】在构建机器学习模型的时候，你是否遇到过类样本不平衡问题？本文就讨论一下如何解决不同程度的类样本不平衡问题。本文整理了数据科学研究者Devin Soni发...

• ### 点云采样

点云采样的方法有很多种，常见的有均匀采样，几何采样，随机采样，格点采样等。下面介绍一些常见的采样方法。

• ### Gibbs采样

MCMC采样和M-H采样中我们讲到细致平衡条件，即如果非周期马尔可夫链状态转移矩阵P和概率分布π(x)对于所有的i,j满足下列方程，则称概率分布π(x)是状态转...

• ### geotrellis使用（十六）使用缓冲区分析的方式解决投影变换中边缘数据值计算的问题

Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 问题探索 ...

• ### 【专业技术】音频专业参数揭秘

存在问题： 声音是游戏必备的要数，汤姆猫你变声又多少人没玩过？那在底层我们是怎么去做的呢？ 解决方案： 我们就以PCM文件格式来侃侃音频模数话 P...

• ### 当随机采样遇见插值，微软亚研提出节省推理计算量的新范式

近年来，随着深度学习的不断发展，视觉领域出现了越来越多的高精度模型，但这些模型所需的计算量也越来越大。因此，如何在推理阶段避免冗余的计算在近年来成为研究热点。

• ### 马尔可夫链蒙特卡洛（MCMC）算法

在之前的推送中我们了解到什么是马尔可夫链（Markov Chain)。下面我们来介绍一下马尔可夫链蒙特卡洛算法（Markov Chain Monte Carlo...

• ### 计算机控制技术课程配套教材习题解答（第4、5章）

pdf版下载地址：http://pan.baidu.com/s/1hrKoza8