电信保温杯笔记——《统计学习方法(第二版)——李航》第19章 马尔可夫链蒙特卡罗法

论文

Metropolis-Hastings算法:《Equation of state calculationsby fast computing machines》

吉布斯抽样算法:《Stochastic relaxation, Gibbs distribution and the Bayesian restoration of images》

介绍

电信保温杯笔记——《统计学习方法(第二版)——李航》
本文是对原书的精读,会有大量原书的截图,同时对书上不详尽的地方进行细致解读与改写。

在这里插入图片描述

在介绍前,我们需要先引入问题的背景:

逆变换采样

为了得到满足概率密度函数(PDF:probability density function )分布的随机采样值,人们想了一种方法,这种方法就是逆变换采样(inverse transform sampling),先求出该PDF分布的累积分布函数(CDF:cumulative distribution function ),CDF取值是[0,1]且单调递增,如下图。
在这里插入图片描述

我们知道均匀采样是很容易实现的,在[0,1]随机取一个值,就能在CDF曲线上找到对应的x,这个过程就实现了满足PDF的随机采样,因为PDF较大的x轴区间,它对应的CDF曲线上的值域[a,b]就越大,那么在[0,1]上均匀采样时,取值就很容易落入[a,b]中,相应地也很容易获取x轴该区间上的值,于是就实现了满足PDF分布的随机采样。

上述过程的数学过程就是,知道PDF,求CDF函数F(x),然后求F(x)的反函数 u = F − 1 ( x ) u=F^{-1}(x) u=F1(x),当在[0,1]上随机采样 u 0 u_0 u0,就能通过反函数 u = F − 1 ( x ) u=F^{-1}(x) u=F1(x)求得 x 0 x_0 x0

实际上,很多PDF并不是那么容易求出它的CDF函数的,而CDF的反函数更是不好求。

于是就有人提出了下面蒙特卡罗法中的接受拒绝采样法。下面蒙特卡罗法只有接受拒绝采样法比较符合介绍的主线,但碍于书上对整个蒙特卡罗法做了描述,所以保留了。看完接受拒绝采样法可以直接看马尔科夫链。

蒙特卡罗法

蒙特卡罗法可以粗略地分成两类:

  1. 所求解的问题本身具有内在的随机性,借助计算机的运算能力可以直接模拟这种随机的过程。所说的随机抽样,其实是指从一个概率分布中生成观察值(observations)的方法。而这个分布通常是由其概率密度函数(PDF)来表示的。而且, 即使在已知PDF的情况下,让计算机自动生成观测值也不是一件容易的事情。从本质上来说,计算机只能实现对均匀分布(Uniform distribution)的采样。 而蒙特卡罗法能生成具有某种概率密度函数(PDF)的分布的随机采样。
  2. 所求解问题可以转化为某种随机分布的特征数,比如随机事件出现的概率,或者随机变量的期望值,它们均为随机分布的特征数。通过随机抽样的方法,以随机事件出现的频率估计其概率,或者以抽样的数字特征估算随机变量的数字特征,并将其作为问题的解。

但归根到底,还是用于得到满足PDF分布的随机采样值。

随机抽样

蒙特卡罗法实现的随机抽样是,假设概率分布的定义已知,通过抽样获得概率分布的随机样本。

在这里插入图片描述

接受拒绝采样法

在这里插入图片描述

接受的点会作为随机采样点。

可以参考【数之道 22】巧妙使用"接受-拒绝"方法,玩转复杂分布抽样

步骤

在这里插入图片描述

特点

在这里插入图片描述
这是由于上述缺点,于是就有人提出了马尔科夫链蒙特卡罗法来解决抽样效率低的问题。在介绍马尔可夫链蒙特卡罗法前,需要先介绍马尔科夫链。看完这里可以直接看马尔科夫链了。

求解某种随机分布的特征数

蒙特卡罗法求解某种随机分布的特征数就是,通过随机抽样,近似计算随机分布的某个特征数,如期望,积分。

数学期望估计

在这里插入图片描述

积分计算

在这里插入图片描述

例题1

在这里插入图片描述

例题2

在这里插入图片描述

马尔可夫链

可以参考电信保温杯笔记——《统计学习方法(第二版)——李航》第10章 隐马尔可夫模型

这些定义与性质的介绍,最后是为了介绍可逆马尔科夫链中的细致平稳方程。马尔科夫链蒙特卡罗法是基于它的。

定义

在这里插入图片描述

离散状态马尔可夫链

转移概率矩阵和状态分布

在这里插入图片描述

例题

在这里插入图片描述

平稳分布

在这里插入图片描述

马尔可夫链可能存在唯一平稳分布,无穷多个平稳分布,或不存在平稳分布。当离散状态马尔可夫链有无穷个状态时,有可能没有平稳分布。

在这里插入图片描述

例题1

在这里插入图片描述

例题2

在这里插入图片描述

连续状态马尔可夫链

在这里插入图片描述

马尔可夫链的性质

以下介绍离散状态马尔可夫链的性质。可以自然推广到连续状态马尔可夫链。

不可约性

在这里插入图片描述

例题

在这里插入图片描述

非周期性

在这里插入图片描述

例题

在这里插入图片描述
在这里插入图片描述

常返性

这里感觉书上写的是错的,应该参考《随机过程》中的常返性定义。
在这里插入图片描述

有限步数,回到在自身状态的概率为1,就是说总会回来的。常返性形容的对象是自身回到自身,而不可约性形容的对象是一个状态到另一个状态。
在这里插入图片描述

例题

在这里插入图片描述

遍历性

在这里插入图片描述

可逆马尔可夫链

在这里插入图片描述

例题

在这里插入图片描述

在这里插入图片描述

利用细致平稳方程,我们就能构造一条具有平稳分布 π \pi π的马尔科夫链。如果该平稳分布 π \pi π就是我们已知的PDF函数 p ( x ) p(x) p(x),那么马尔科夫链生成的一系列取值就会符合PDF,也就得到满足PDF的随机采样,这就是下面要介绍的马尔可夫链蒙特卡罗法。

马尔可夫链蒙特卡罗法

基本想法

在这里插入图片描述

特点

在这里插入图片描述

步骤

在这里插入图片描述

马尔科夫链蒙特卡罗法在统计学习上的应用

在这里插入图片描述
在这里插入图片描述

Metropolis-Hastings算法

本节叙述Metropolis-Hastings 算法,是马尔可夫链蒙特卡罗法的代表算法。

基本原理

马尔科夫链

如果要构造一条平稳分布是p(x)的马尔科夫链,那么可以定义一个转移核或转移矩阵,使得细致平稳方程成立,此时得到的可逆马尔科夫链的平稳分布就是p(x)。下面过程就是介绍如何构造转移核。看完下面的定义会在详细解释一下建议分布和接受分布。
在这里插入图片描述

如果要马尔科夫链的平稳分布就是 p ( x ) p(x) p(x),那么就需要转移核 p ( x , x ′ ) p(x,x') p(x,x)满足公式(19.41),也就是满足 p ( x ) p ( x , x ′ ) = p ( x ′ ) p ( x ′ , x ) p(x)p(x,x')=p(x')p(x',x) p(x)p(x,x)=p(x)p(x,x)。公式(19.41)说的是先出现 x x x后出现 x ′ x' x的概率等于先出现 x ′ x' x后出现 x x x的概率,如果单纯只有建议分布而没有接受分布来辅助构成细致平稳方程或者说是公式(19.41),此时构造出来的先出现 x x x后出现 x ′ x' x的概率为 p ( x ) p ( x , x ′ ) = p ( x ) q ( x , x ′ ) p(x)p(x,x')=p(x)q(x,x') p(x)p(x,x)=p(x)q(x,x),并不等于构造出来的先出现 x ′ x' x后出现 x x x的概率 p ( x ′ ) p ( x ′ , x ) = p ( x ′ ) q ( x ′ , x ) p(x')p(x',x)=p(x')q(x',x) p(x)p(x,x)=p(x)q(x,x)。有了接受分布来辅助构成细致平稳方程以后,当 p ( x ) q ( x , x ′ ) > p ( x ′ ) q ( x ′ , x ) p(x)q(x,x')>p(x')q(x',x) p(x)q(x,x)>p(x)q(x,x)时,接受分布的作用就是用来降低 p ( x ) q ( x , x ′ ) p(x)q(x,x') p(x)q(x,x)的值使 p ( x ) p ( x , x ′ ) = p ( x ′ ) p ( x ′ , x ) p(x)p(x,x')=p(x')p(x',x) p(x)p(x,x)=p(x)p(x,x);当 p ( x ) q ( x , x ′ ) < p ( x ′ ) q ( x ′ , x ) p(x)q(x,x')<p(x')q(x',x) p(x)q(x,x)<p(x)q(x,x)时,接受分布的作用就是用来降低 p ( x ′ ) q ( x ′ , x ) p(x')q(x',x) p(x)q(x,x)的值使 p ( x ) p ( x , x ′ ) = p ( x ′ ) p ( x ′ , x ) p(x)p(x,x')=p(x')p(x',x) p(x)p(x,x)=p(x)p(x,x)

建议分布

在这里插入图片描述

满条件分布

在这里插入图片描述
p ( x 1 , . . . , x j ∣ x j + 1 , . . . , x k ) p(x_1,...,x_j|x_{j+1},...,x_k) p(x1,...,xjxj+1,...,xk)是满条件分布, p ( x 1 , . . . , x j ∣ x j + 1 , . . . , x k − 1 ) p(x_1,...,x_j|x_{j+1},...,x_{k-1}) p(x1,...,xjxj+1,...,xk1)不是满条件分布。
在这里插入图片描述
p ( x I ∣ x − I ) = p ( x I , x − I ) p ( x − I ) = p ( x ) ∫ p ( x I , x − I )   d x I = p ( x ) ∫ p ( x )   d x I ∝ P ( x ) ( 19.45 ) p(x_I|x_{-I}) = \frac{ p(x_I, x_{-I}) }{ p(x_{-I}) } = \frac{ p(x) }{ \int p(x_I, x_{-I})\, dx_I } = \frac{ p(x) }{ \int p(x)\, dx_I } \propto P(x) \quad (19.45) p(xIxI)=p(xI)p(xI,xI)=p(xI,xI)dxIp(x)=p(x)dxIp(x)P(x)(19.45)
在这里插入图片描述

例题

在这里插入图片描述

步骤

在这里插入图片描述

单分量Metropolis-Hastings 算法

n轮共迭代n个状态,每个状态j轮迭代共迭代k个分量。
在这里插入图片描述

吉布斯抽样

在这里插入图片描述
特殊在于它的建议分布为:
q ( x , x ′ ) = p ( x j ′ ∣ x − j ) q(x,x') = p(x'_j|x_{-j}) q(x,x)=p(xjxj)

基本原理

在这里插入图片描述

特点

在这里插入图片描述

步骤

在这里插入图片描述

例题

在这里插入图片描述

在这里插入图片描述

抽样计算技巧

在这里插入图片描述

p ( α i ∣ α − i , θ , z , y ) = p ( α i ∣ α − i , θ ) = p ( α i , α − i , θ ) p ( α − i , θ ) = p ( α , θ ) p ( α − i , θ ) = p ( θ ∣ α ) p ( α ) p ( α − i , θ ) ∝ p ( θ ∣ α ) p ( α ) ( 19.53 ) \begin{aligned} p(\alpha_i | \alpha_{-i}, \theta , z, y) &= p(\alpha_i | \alpha_{-i}, \theta ) = \frac{ p( \alpha_i,\alpha_{-i}, \theta ) } { p(\alpha_{-i}, \theta ) } \\ &= \frac{ p( \alpha, \theta ) } { p(\alpha_{-i}, \theta ) } = \frac{ p( \theta | \alpha ) p(\alpha) } { p(\alpha_{-i}, \theta ) } \propto p( \theta | \alpha ) p(\alpha) \quad(19.53) \end{aligned} p(αiαi,θ,z,y)=p(αiαi,θ)=p(αi,θ)p(αi,αi,θ)=p(αi,θ)p(α,θ)=p(αi,θ)p(θα)p(α)p(θα)p(α)(19.53)
在这里插入图片描述

本章概要

在这里插入图片描述

相关视频

【数之道 22】巧妙使用"接受-拒绝"方法,玩转复杂分布抽样

蒙特卡洛(Monte Carlo, MCMC)方法的原理和应用

相关的笔记

hktxt /Learn-Statistical-Learning-Method

相关代码

Dod-o /Statistical-Learning-Method_Code

第四李航统计学习方法(第二版)详细介绍了朴素贝叶斯算法以及其编程实现。朴素贝叶斯算法是基于贝叶斯定理和特征条件独立假设的分类算法。它通过计算给定类别的先验概率和各个特征的条件概率来进行分类。 在编程实现朴素贝叶斯算法的过程中,我们可以使用Python语言和sklearn模块来简化实现过程。sklearn是Python中一个非常常用的机器学习库,其中包含了很多经典的机器学习算法和常用的工具函数。 具体实现朴素贝叶斯算法可以分为以下几个步骤: 1. 引入相应的库和模块: ```python from sklearn.naive_bayes import GaussianNB ``` 2. 创建一个朴素贝叶斯分类器对象: ```python clf = GaussianNB() ``` 3. 准备训练数据和标签: ```python X_train = [[方法1特征1, 方法1特征2, ...], [方法2特征1, 方法2特征2, ...], ...] y_train = [标签1, 标签2, ...] ``` 4. 训练模型: ```python clf.fit(X_train, y_train) ``` 5. 准备测试数据: ```python X_test = [[方法3特征1, 方法3特征2, ...], [方法4特征1, 方法4特征2, ...], ...] ``` 6. 进行预测: ```python y_pred = clf.predict(X_test) ``` 这样就可以使用sklearn中的朴素贝叶斯算法模块来实现分类任务。实际上,sklearn还提供了多个不同的朴素贝叶斯算法的实现,如高斯朴素贝叶斯算法(GaussianNB)、多项式朴素贝叶斯算法(MultinomialNB)和伯努利朴素贝叶斯算法(BernoulliNB)等。 总之,通过使用sklearn模块来调用朴素贝叶斯算法,可以方便地实现并应用该算法进行分类任务,并且能够根据需要选择不同的朴素贝叶斯算法模型。建议阅读第四李航统计学习方法(第二版)来更加深入地理解朴素贝叶斯算法的原理和实现细节。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值