对于大多数朋友而言,贝叶斯(bayesian)统计就像是一种魔法甚至是巫术,当然也有人将其视为一种完全主观的废话。而在贝叶斯方法家族当中,马尔可夫链蒙特卡洛方法(markov chain monte carlo methods)显得尤为神秘。虽然其中确实涉及大量数学知识且需要昂贵的计算资源,但与数据科学领域的众多其它方法一样,其中的基本推理过程同样可以通过非常直观的方式进行归纳。而这正是本文的核心主旨所在。
那么,马尔可夫链蒙特卡洛方法(markov chain monte carlo,简称mcmc)究竟是什么?简而言之:
mcmc.方法用于通过在概率空间中进行随机采样以近似地得出某一感兴趣参数的后验分布。
在本文当中,我将对这句简单的答案进行深入分析——而且不用担心,不涉及任何数学知识。
首先需要讲解一些术语。其中提到的感兴趣参数为用于总结我们所关注的某些现象的相关数字。一般来说,我们会利用统计方法估计此类参数。举例来说,如果我们希望了解成年人的身高水平,那么感兴趣参数很可能是以英寸为单位的平均身高数字。分布代表的则是该参数每个可能值的数学表达以及我们观察到各个数值的具体概率。其中最著名的当数贝尔(钟形)曲线:
在贝叶斯统计方法当中,分布概念还拥有另一项额外解释。贝叶斯不仅仅代表参数的数值,同时亦用于表现每项参数的真实值大小——更具体地讲,贝叶斯可以被理解为我们对于某一参数的确定度。因此,以上贝尔曲线表明我们能够基本确定参数的实际值非常接近于零,但我们认为其真实值高于或者低于此值的可能是相等的。
事实上,人体身高确实遵循一条正常曲线,因此假设我们认定人体平均身高的真实值遵循以下贝尔曲线:
很明显,以上图表所示的结果只可能来源于“巨人族群”——因为可以看到,大多数平均成年人身高为6英尺2英寸(不过其对结果并不是非常确定)。
下面让我们假想这位统计者收集到一批新的数据,其中出现了一部分身高在5英尺到6英尺之间的成年人。我们可以使用以下数据表达这种情况,由此得出的正常曲线能够对这一平均身高数据作出最佳解释:
在贝叶斯统计当中,对于参数的确定度分布被称为先验分布,因为其会在获取任何实际数据之前首先捕捉到我们的确定度水平。似然分布则总结了观测数据所提供的结论,即通过将参数值范围同单项参数相结合以解释我们当前所观察数据的概率。对似然分布的参数值进行最大化估计,能够回答这样一个问题:哪些参数值决定了我们观察到当前数据的概率。如果缺少这种先验概率,我们将无法进一步作出分析。
不过贝叶斯分析的核心,在于将先验分布与似然分布相结合以确定后验分布。配合先验概率,后验分布能够告诉我们哪些参数值能够最大程度提升我们观察到特定数据的概率。在我们的示例中,得出的后验分布结果如下所示:
如上图所示,红色曲线表示后验分布。大家可以将其视为一种先验与可能性的分布平均值。由于先验分布较短且更为分散,因此其代表着一种关于平均人体身高真实值的“不太确定”的预判。与此同时,概率会在相对较窄的范围内进行数据汇总,因此其代表着对真实参数值的“更加确定”的猜测。
当先验概率被合并进来后,该数据(表达为概率)成为假设个体在巨人族群内成长这一弱先验分布结论的主体。尽管统计者仍然认为人类的平均身高比其实际获得的数据略高一些,但其仍更相信实际数据所表达出的结果。
在拥有两条贝尔曲线的情况下,我们能够轻松解出后验分布——使用一条简单的方程式即可轻松将二者结合起来。但如果我们的先验分布与概率分布结果不够理想,又该如何?有时候,利用形状不规律的分布进行数据或者先验概率建模能够带来更准确的结果。如果我们的概率结果需要使用一项包含两个峰值的分布才能确切表达,而且出于某种原因我们需要解释一些非常古怪的先验分布结论,又该如何处理?下面,我以手工方式绘制了一条粗糙的先验分布曲线:
如前所述,存在某些后验分布能够给出每项参数值的具体概率。但单纯从图形上来看,我们很难理解其具体表达的含义,而且这种情况无法通过分析进行解决。这时,我们就需要使用mcmc方法。
mcmc方法允许我们对后验分布的形状进行估计,从而解决这类无法直接计算的问题。这里再次强调,mcmc的全称即为马尔可夫链蒙特卡洛方法。为了理解其工作原理,我将首先介绍蒙特卡洛模拟,而后再讨论马尔可夫链概念。
所谓蒙特卡洛模拟(monte carlo simulations),是指一种通过重复生成随机数来估计固定参数的方法。通过生成随机数并对其进行一些计算,蒙特卡洛模拟能够为某一无法直接计算(或者直接计算成本过于高昂)的参数提供近似值。
假设我们需要估算下图中圆圈的面积:
由于圆形处于边长为10英寸的正方形之内,因此可以轻松计算出其面积为78.5平方英寸。不过在这里我们不使用简单的面积公式,而是在正方形内随机抽取20个点,而后计算处于圆内的点的比例,并乘以正方形的面积。由此得出的数字即为相当趋近于圆形面积的近似值。
由于20个点中有15个处于圆形之内,因此圆形的大概面积为75平方英寸。虽然结果仍有误差,但考虑到仅使用了20个随机点,可以看到蒙特卡洛模拟的效果确实值得肯定。
现在,我们设想需要计算蝙蝠侠标志的面积:
对于这样的形状,显然没有任何现成的面积求取公式可以使用!不过,我们可以在矩形区域内随机取点,并利用蒙特卡洛模拟轻松获得该标志面积的近似值。
蒙特卡洛模拟不仅适用于各种异形面积的求取。事实上,通过生成大量随机数,其亦可用于模拟其它非常复杂的流程——例如实践当中的天气预测或者候选人在选举中胜出的可能性等。
理解mcmc方法的第二大关键在于马尔可夫链。其代表的是事件概率之间相互关联的序列。每个事件来自一组结果,而每项结果都由上一组结果配合固定概率确定而来。
马尔可夫链的一大重要特征在于其无记忆属性:在预测下一个事件时,我们只需要考虑当前状态,而以往的历史状态皆与此无关。虽然现实世界中很少有运作方式如此规则的场景,但马尔可夫链仍是我们理解种种现实问题的有力手段。
在十九世纪,贝尔曲线被视为一种常规性模式(举例来说,我们已经注意到人类身高分布即遵循一条贝尔曲线)。高尔顿钉板则通过在装有木质隔板的平面上撒下大理石球的方式模拟重复随机事件的平均值情况,旨在重现大理石球分布的正态曲线:
俄罗斯数学家兼神学家帕维尔·涅克拉索夫(pavel nekrasov)认为,贝尔曲线以及更为常规的大数定律只不过是儿童游戏与琐碎拼图中的产物,事实上其中的每个事件都以完全独立的形式存在。在他看来,现实世界中相互依存的事物——例如人类行为——不会恰好符合数学模式或者分布。
但作为马尔可夫链的命名来源安德烈-马尔可夫(andreymarkov)则试图证明非独立事件也可能符合这种模式。他提出的最为著名的实例就是从一本俄罗斯诗歌作品中提出数以千计的双字符对。利用这些字符对,他计算出各个字符的条件概率。具体来讲,给定前一字母或者空格,即可判断接下来的字符为a、t或者空格的概率。利用这些概率,马尔可夫即可模拟出任意长度的字符序列。这就是一条马尔可夫链。尽管最初的几个字母在很大程度上取决于起始字符的选择,但从研究结果表明,从长期角度来看字符分布同样遵循一种模式。因此,即使是存在相互关联的事件,如果其受到固定概率的影响,那么仍然拥有一致的平均值表现。
下面我们举个距离生活更近的例子。假设您生活在一栋拥有五个房间的房子里,这些房间分别为卧室、卫生间、客厅、餐厅与厨房。我们将收集一些数据,并尝试判断在任意时间点身处某一房间时,进入另一特定房间的概率。假设您身在厨房,那么可能有30%的概率继续留在厨房中、30%概率进入餐厅、20%概率进入客厅、10%的概率进入卫生间,最后10%概率进入卧室。利用这组概率数据,我们就能够构建起一条用于预测接下来前往目的地的马尔可夫链(markov chains)。
但这种方法可能只适用于预测少数特殊情况——更具体地讲,由于我们的预测结论仅基于单一对象在家中的活动,因此结果可能并不足以反映真实情况。举例来说,如果有人从卧室前往卫生间,那么接下来其很可能直接返回卧室而非前往我们预设的起始位置——厨房。正因为如此,马尔可夫链往往并不适用于现实场景。
然而,如果对马尔可夫链进行数千次迭代,则完全可以立足长期角度预测人物对象的活动趋势。更重要的是,这一预测将不会受到具体起始房间的影响!更直观地讲,这一点非常重要:某人某个时间点处于家中的具体哪个位置其实并不重要,更重要的是对其长期或者一般性驻留情况进行模拟与描述。因此,只要我们能够理解控制其具体行为的概率,即可将马尔可夫链由一种在短期内进行随机变量建模的非合理性方法转化为计算变量长期趋势的有效手段。
拥有了上述蒙特卡洛模拟与马尔可夫链相关知识,相信大家将能够更为直观地理解以下关于mcmc方法的数学解释。
各位应该还记得,我们的目标是估算感兴趣参数的后验分布,即人均身高:
我本人不是可视化专家,而且作为示例这里使用的数据也没有刻意追求真实性:我的后验分布示例显然严重高估了人类的平均身高。
我们都知道,后验分布存在于我们的先验分布范围与似然分布范围之内。但无论如何,我们都无法直接计算出结果。利用mcmc方法,我们将能够有效从后验分布中提取样本,而后计算这批样本的平均值。
首先,mcmc方法会选择一个随机参数值作为起点。模拟流程会继续生成随机值(即蒙特卡洛模拟),并根据相关规则以确定更为准确的参数值。其中的诀窍在于,对于两个参数值,我们可以计算每个值在解释数据时的具体概率,借此计算哪个参数值更加准确。如果随机生成的参数值比上一个参数值更准确,则将其添加到参数值链当中,并以一定概率(即马尔可夫链方法)确定其改进程度。
为了直观地作出解释,我们这里再次强调,某一值的分布高度代表着观察到该值的概率。因此,我们可以想象自己的参数值(x轴)将在y轴上呈现出高低概率区域。对于单一参数,mcmc方法会沿x轴进行随机采样:
图:红点代表随机参数样本由于随机样本受到固定概率的影响,因此预计其会在一段时间后在感兴趣度参数出现概率最高的区域发生收敛:
图:蓝点代表任意时间点之后的随机样本,此时预计收敛已经开始发生。请注意:为了易于理解,这里我单纯将各点进行垂直堆叠。
在收敛发生之后,mcmc会从后验分布内抽取一组样本点。在这些点周围绘制直方图,并借此计算您感兴趣的任何统计结果:
由mcmc模拟所生成的样本集所计算出的统计结果,即为我们对于该真实后验分布统计结果的最佳猜测。
mcmc方法亦可用于估算多面参数的后验分布(例如人的身高与体重)。对于n个参数,其会在n维空间中存在高概率区域,且其中某些参数值集合能够更好地解释观察到的数据。因此,我认为mcmc方法实际上是在概率空间内进行随机采样以求取后验分布的近似值。
在文章的最后,我想帮助大家再次简要回顾一下“马尔可夫链蒙特卡洛方法是什么?”
mcmc方法用于通过在概率空间中进行随机采样以近似地得出某一感兴趣参数的后验分布。
希望我作出的上述简短答案能够帮助大家理解mcmc方法、为何要使用这种方法及其工作原理。这篇文章的灵感源自我在华盛顿特区召开的全体会议上参加的数据科学沉浸式课程。该项课程的目的是向无技术背景的观众解释马尔可夫链蒙特卡洛方法,而本篇文章的意义也同样在于此。
来源:towardsdatascience.com
编译:科技行者