统计学习-MCMC采样与MH采样简介

初探MCMC采样方法和MH采样方法
    在之前介绍的文章中,我们介绍了基本的采样方法。在了解简单的采样方法后,本次文章将会介绍MCMC采样方法与优化的MH采样方法,这两种方法对于一些高维度特征的数据可以进行比较合理的采样。
    MCMC采样方法其实就是蒙特卡洛马尔科夫链的采样方法,因为这两个术语的英文简写都是MC,所以我们使用MCMC采样来代替。MH采样方法的英文是Metropolis-Hasting,它是一种基于MCMC采样的优化方法,在实际机器学习问题中使用较多。下面我们开始介绍这两种方法:
    首先是MCMC方法,该方法里的蒙特卡洛方法是一种计算数值积分的方法,将一些很难从解析形式求解的定积分转为基于概率分布的级数求和的方法进行逼近求解。但是要使用蒙特卡洛方法最重要的是需要事先明确概率分布的函数,如果是简单的分布形式比如F分布、Gamma分布等,可以通过与均匀分布进行映射变换得到;而对于复杂分布或者不常见分布,则需要进行“接受-拒绝采样”来进行逼近原始的复杂分布,这种思路就是用一个简单的分布形式比如正态分布去完全覆盖原有的复杂分布,也就是下图的两个分布形式,如果每次抽样落在灰色区域的时候就拒绝抽样,反之则接受抽样。

    其实要介绍的是MCMC方法里的马尔科夫链方法,这种马尔可夫链假设的是当前状态只和之前的一个状态有关系存在,和之前的历史状态都无关。那么这种非周期的马尔可夫链就有一个比较好的性质,也就是会收敛到一个稳态的分布。使用马尔可夫链方法进行抽样的时候,只需要明确状态转移矩阵和初始的状态,就可以得出后续的样本点,从而得到所需的采样样本。对于马尔可夫链其实还有一种非常重要的细致平稳条件,在所有的状态里任意取i、j两个状态,都满足G(i)P(i,j)=G(j)P(j,i) ,而MCMC采样和MH采样的基本原理也是根据这个性质延伸得到的。
    对于MCMC采样方法,我们可以在细致平稳条件加上概率b(i,j)得到,也就是将原来的等式约束进行放松,得到G(i)P(i,j)b(i,j)=G(j)P(j,i)b(j,i) ,所以整个MCMC采样的步骤如下所示:
    1)初始化相关的采样参数,比如需要的样本数N,状态转移矩阵T,平稳分布G,转移状态次数的阈值U等参数
    2)从一个任意的简单的分布进行采样,得到初始状态值x0
    3)对于当前状态t=0到N+U-1的状态之中,重复下述的4-5-6步骤:
    4)从条件概率分布T(x|x(t))中进行采样得到样本x(k)
    5)从均匀分布进行采样,得到样本v
    6)使用之前的宽松的细致平稳条件进行判断,即样本v是否满足小于G(x(k))T(x(k),x(t)) ,如果满足的话就接受转移,并且让x(t+1)=x(k) ,否则就不接受转移,让x(t+1)=x(t)
    通过上述步骤后最终得到的就是基于平稳分布的样本集。但是由于接受的转移概率比较小,所以这种MCMC方法很难得到真正的样本,因为很多样本都会被拒绝转移,整体的采样效率较低。
    对于MH方法,其实步骤和上述的MCMC采样方法相似,它只是将阈值放大了5倍,对于阈值b(i,j)的公式进行修正:b(i,j)=min(G(j)T(j,i)/G(i)T(i,j),1) 从而得到MH采样方法,其他步骤和MCMC方法完全一样。但是需要注意的是,MH采样和MCMC方法一样,对于特征较多的情况也是比较难使用的。
    总的来说,MCMC采样方法和MH采样方法都是比较合理的采样方法,但是MH采样是MCMC采样方法的简化版,所以在实际问题中使用MH采样的比较多。MCMC采样在数学上是比较严谨和稳定的,但是满足它采样接受率的样本比较少,也就是说总是会采样失败,这种时候对原来的方法进行改进以后也就是MH方法,可以有效避免上述问题。MCMC方法和MH采样是在数据特征不多的时候,被广泛使用的采样方法,当维度变得很多的时候会使用其他的采样方法,这个在后续的文章会进行介绍。而对于初学者则需要了解这类采样方法的原理,方便在实际问题中更好地进行使用。

泛统计理论初探——初探MCMC采样和MH采样相关推荐

  1. MCMC(二):MCMC采样和M-H采样

    在前面<MCMC(一):蒙特卡罗方法和马尔科夫链>中,我们讲到给定一个概率平稳分布 π \pi π, 很难直接找到对应的马尔科夫链状态转移矩阵 P P P.而只要解决这个问题,我们就可以找 ...

  2. MCMC详解2——MCMC采样、M-H采样、Gibbs采样(附代码)

    MCMC是一种随机采样方法,用来处理一些复杂运算的近似求解.在HMM.LDA等模型中都有重要应用. 上一篇 MCMC详解1--蒙特卡洛方法 目录 1,马尔科夫链模型 1.1 马尔科夫链转移矩阵的性质 ...

  3. MCMC采样和M-H采样

    MCMC(一)蒙特卡罗方法 MCMC(二)马尔科夫链 MCMC(三)MCMC采样和M-H采样 MCMC(四)Gibbs采样 在MCMC(二)马尔科夫链中我们讲到给定一个概率平稳分布ππ, 很难直接找到 ...

  4. 泛统计理论初探——初探Gibbs采样

    统计学习-Gibbs采样简介 初探Gibbs采样方法     在上一篇文章中,我们介绍了MCMC抽样和MH抽样的方法,在本次文章中将会介绍Gibbs抽样方法,这种方法其实是基于MCMC抽样的一种优化方 ...

  5. 泛统计理论初探——余弦距离简介

    统计学习-余弦距离简介 介绍余弦距离 在衡量变量之间距离的时候,我们发现可以用欧式距离.绝对值距离,本文我们将来介绍另一种距离,即余弦距离.余弦距离在实际问题中经常用到,由于它的计算方法是把各个维度的 ...

  6. 泛统计理论初探——KNN

    数据挖掘-knn KNN算法 KNN算法是机器学习里较为简单和初级的算法,也称为最近邻算法.可以算的上是学习数据挖掘的入门算法,在大赛中,该算法一般用来作为插值来用,一般不会直接使用该算法来进行预测. ...

  7. 泛统计理论初探——孤立森林简介

    数据挖掘-孤立森林方法 孤立森林算法简介 孤立森林是一种用于异常检测的算法,本文将对该算法进行简介,包括算法的理念.步骤.以及使用场景.常见的异常检测方法主要是统计学课本上学到一些方法,比如六西格玛方 ...

  8. MCMC(三):Gibbs采样

    在<MCMC(二):MCMC采样和M-H采样>中,我们讲到了M-H采样已经可以很好的解决蒙特卡罗方法需要的任意概率分布的样本集的问题. 但是M-H采样有两个缺点:一是需要计算接受率,在高维 ...

  9. MCMC_Gibbs/MH采样的简单案例R代码实现

    文章目录 练习:用程序实现正态分布均值.方差的后验分布抽样. 题目背景 Gibbs抽样(详细公式推导) Gibbs采样R代码实现 μ\muμ的更新函数 σ2\sigma^2σ2的更新函数 主函数 案例 ...

最新文章

  1. 教程:1、Linux简介
  2. 编程猫python讲师面试_【编程猫教师面试】在BOSS问了我很多,问我为什么选择编程猫,问我了解编程猫吗?-看准网...
  3. 工作思路 + 邮件问题
  4. 关于meta便签详解
  5. 前端学习(525):等分布局
  6. 红帽高级总监谈 OpenJDK 的未来:Java 的未来从未如此光明
  7. 关闭ie烦人的提示信息
  8. 遗传算法求解TSP问题(Python)
  9. 精品餐饮业奢华西餐专业PPT-朴尔PPT
  10. 数组排序 向大佬低头 时间算法
  11. 目标与哲学---论《道德情操论》与…
  12. 百度BD09加密经纬度转国测局GCJ02经纬度
  13. 第15章 实时时钟DS1302
  14. Android扫码功能--华为统一扫码服务
  15. ffmpeg视频转动图gif和Webp
  16. Windows“自动修复”无法修复
  17. 输入法半角和全角的快捷转换_电脑操作快捷键
  18. android+模拟人体扫描,人体模型模拟器app
  19. 2019轨道交通大会丨粤港澳大湾区地铁产业大会
  20. 大专毕业,一年工作经验,每天都是CRUD。如何实现月薪从7k到10k?

热门文章

  1. 华为智慧屏 招一招即可分享运动状态,搜索运动教程,同时还可通过手机操控智慧屏
  2. Android Device Administration 设备管理器——实现一键锁屏
  3. 图像分类的 PyTorch 实现 (CIFAR10)
  4. css加载更多动画效果,css3实现loading动画效果
  5. 博为小帮软件机器人实现一键报税,程序猿还是很强的。。。
  6. 码出高效:java开发手册_Java 11手册:Java专家分享他们在Java 11方面的最佳和最差的经验
  7. iphone php格式视频播放,iPhone能播放什么格式的视频 支持视频格式
  8. 利用fixed把div浮动在底部
  9. 汽车电子_EMC测试_CE电流法整改
  10. Python 从身份证中提取出生日期/性别/年龄/生肖/星座/省份/城市/城市等级/区县(2019划分标准)