郭震 AI公众号:郭震AI

19 贝叶斯学习与统计推断教程:马尔可夫链蒙特卡洛方法之MCMC方法的基础

发布日期:

最近更新:

分类: 贝叶斯学习

预计阅读: 4 分钟

阅读次数: 0

预计阅读4 分钟
结构重点5 个
图文要点6 张
正文规模1.6k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 5 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

贝叶斯学习与统计推断教程:马尔可夫链蒙特卡洛方法之MCMC方法的基础结构图查看大图
贝叶斯学习与统计推断教程:马尔可夫链蒙特卡洛方法之MCMC方法的基础结构图

贝叶斯学习的重点是把已有判断和新证据合在一起,并明确表达不确定性。阅读时可以按「MCMC方法简介 -> MCMC的基本原理 -> 案例分析:MCMC在贝叶斯回归中的应用 -> 使用Python实现MCMC」建立结构,再回到正文里的代码、案例或指标做验证。

贝叶斯学习与统计推断教程:马尔可夫链蒙特卡洛方法之MCMC方法的基础核对图查看大图
贝叶斯学习与统计推断教程:马尔可夫链蒙特卡洛方法之MCMC方法的基础核对图

读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「MCMC方法简介」,再查「MCMC的基本原理」。

在前一篇文章中,我们讨论了贝叶斯分类中的模型评估与改进,强调了如何通过有效的模型选择和验证来提升分类器的表现。这次,我们将介绍马尔可夫链蒙特卡洛(MCMC)方法的基础知识,作为下一篇关于Gibbs采样的铺垫。

MCMC方法简介

马尔可夫链蒙特卡洛(MCMC)是一种利用马尔可夫链来进行概率分布采样的统计方法。它非常适用于那些难以直接从中采样的复杂分布,尤其是在贝叶斯统计中,MCMC方法被广泛应用于后验分布的估计。

MCMC基础判断卡查看大图
MCMC基础判断卡

学习 MCMC 方法时,先看目标分布、采样链、接受概率、 burn-in、收敛诊断和样本自相关。

MCMC的基本原理

在MCMC中,我们需要构造一个马尔可夫链,使其稳定分布为我们想要的目标分布。该马尔可夫链通过一系列状态转移在状态空间中进行随机游走。在足够的时间后,这个链将收敛到目标分布上。

一个常见的MCMC方法是“Metropolis-Hastings”算法,其核心步骤包括:

  1. 初始化:选择一个初始状态x0x_0
  2. 迭代
    • 从提议分布q(xxt)q(x'|x_t)中生成一个候选状态xx'
    • 计算接受率: α=min(1,π(x)q(xtx)π(xt)q(xxt))\alpha = \min\left(1, \frac{\pi(x') q(x_t|x')}{\pi(x_t) q(x'|x_t)}\right)
    • 以概率α\alpha接受状态xx',否则保持当前状态xtx_t
  • 重复迭代直到达到所需的样本量。
  • 案例分析:MCMC在贝叶斯回归中的应用

    我们通过一个简单的案例来演示MCMC方法的应用。在贝叶斯线性回归中,我们假设模型为:

    贝叶斯学习阅读地图卡查看大图
    贝叶斯学习阅读地图卡

    读《贝叶斯学习与统计推断教程:马尔可夫链蒙特卡洛方法之MCMC方法的基础》时,先确定要解决的场景,再把关键概念和练习动作串起来。这样读到细节时,不容易只记住零散名词。

    y=β0+β1x+ϵy = \beta_0 + \beta_1 x + \epsilon

    其中,ϵN(0,σ2)\epsilon \sim N(0, \sigma^2)。我们希望从后验分布中抽样,后验分布的形式为:

    p(βy,x)p(yx,β)p(β)p(\beta | y, x) \propto p(y | x, \beta) p(\beta)

    我们选择一个简单的先验分布,比如βN(0,102)\beta \sim N(0, 10^2)

    使用Python实现MCMC

    import numpy as np
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    # 生成模拟数据
    np.random.seed(42)
    x = np.random.rand(100)
    true_beta = [2, 3]
    y = true_beta[0] + true_beta[1] * x + np.random.normal(0, 0.5, x.shape)
    
    # MCMC实现
    def mcmc_bayesian_linear_regression(x, y, iterations=10000):
        n = len(y)
        beta_samples = np.zeros((iterations, 2))
        beta = np.random.randn(2)  # 初始参数
    
        for i in range(iterations):
            # 生成新样本
            beta_new = beta + np.random.normal(0, 0.5, 2)
    
            # 计算后验概率比例
            likelihood_current = np.sum(np.log(np.exp(-0.5 * ((y - (beta[0] + beta[1] * x)) / 0.5)**2)))
            likelihood_new = np.sum(np.log(np.exp(-0.5 * ((y - (beta_new[0] + beta_new[1] * x)) / 0.5)**2)))
            
            prior_current = np.exp(-0.5 * (beta[0]**2 / 10**2 + beta[1]**2 / 10**2))
            prior_new = np.exp(-0.5 * (beta_new[0]**2 / 10**2 + beta_new[1]**2 / 10**2))
            
            acceptance_ratio = (likelihood_new * prior_new) / (likelihood_current * prior_current)
            if np.random.rand() < acceptance_ratio:
                beta = beta_new
            
            beta_samples[i] = beta
        
        return beta_samples
    
    # 运行MCMC
    beta_samples = mcmc_bayesian_linear_regression(x, y)
    
    # 绘制结果
    plt.figure(figsize=(12, 5))
    plt.subplot(1, 2, 1)
    plt.plot(beta_samples[:, 0], label=r'$\beta_0$ samples')
    plt.title('Trace plot of $\beta_0$')
    plt.subplot(1, 2, 2)
    plt.plot(beta_samples[:, 1], label=r'$\beta_1$ samples', color='orange')
    plt.title('Trace plot of $\beta_1$')
    plt.legend()
    plt.show()
    
    # 可视化后验分布
    sns.kdeplot(beta_samples[:, 0], label='Posterior of $\\beta_0$', fill=True)
    sns.kdeplot(beta_samples[:, 1], label='Posterior of $\\beta_1$', fill=True, color='orange')
    plt.title('Posterior distributions')
    plt.legend()
    plt.show()
    

    在上面的代码中,我们实现了一个简单的贝叶斯线性回归模型的MCMC采样。我们通过迭代生成样本,并绘制了参数β0\beta_0β1\beta_1的轨迹图和后验分布。这让我们直观地看到MCMC方法如何从复杂的后验分布中提取样本。

    贝叶斯学习与统计推断教程:马尔可夫链蒙特卡洛方法之MCMC方法的基础应用复盘卡查看大图
    贝叶斯学习与统计推断教程:马尔可夫链蒙特卡洛方法之MCMC方法的基础应用复盘卡

    如果《贝叶斯学习与统计推断教程:马尔可夫链蒙特卡洛方法之MCMC方法的基础》还没完全消化,可以从这张卡片的四个动作重新走一遍。

    贝叶斯学习与统计推断教程:马尔可夫链蒙特卡洛方法之MCMC方法的基础应用检查卡查看大图
    贝叶斯学习与统计推断教程:马尔可夫链蒙特卡洛方法之MCMC方法的基础应用检查卡

    回看《贝叶斯学习与统计推断教程:马尔可夫链蒙特卡洛方法之MCMC方法的基础》时,不必一次做大项目,先用一条简单样例确认主线是否清楚。

    结语

    MCMC方法为我们提供了一种强大灵活的工具,在复杂的贝叶斯模型中进行参数推断。在下一个讲解中,我们将深入探讨更具体的MCMC变体——Gibbs采样,这是一种在某些条件下更为高效的采样方法。在应用MCMC方法时,理解其原理和实现是至关重要的,这将为您在贝叶斯统计的旅程中打下坚定的基础。

    继续阅读

    从这篇继续找到相关教程

    AI 教程总索引

    常见问题

    读前先确认这三点

    贝叶斯学习与统计推断教程:马尔可夫链蒙特卡洛方法之MCMC方法的基础适合谁读?

    这是 贝叶斯学习入门 系列第 19 / 24 篇,适合正在学习贝叶斯学习入门,并且需要把概念落到操作步骤或判断标准里的读者。

    读这篇贝叶斯学习入门教程要多久?

    按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

    这篇文章里的图文节点怎么用?

    正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

    分享文章

    转发到常用平台

    微信/朋友圈可先复制链接

    相关教程

    AI 教程总索引

    继续阅读

    继续找到相关 AI 教程

    返回栏目

    Reader Messages

    读者留言

    有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

    最多 800 字

    为了防刷,每条留言会做长度、链接数量和提交频率限制。

    0/800

    留言列表

    0
    正在加载留言...