15 贝叶斯回归之预测与不确定性量化
系列进度
贝叶斯学习入门 · 第 15 / 24 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
贝叶斯学习的重点是把已有判断和新证据合在一起,并明确表达不确定性。阅读时可以按「贝叶斯回归的预测 -> 预测分布 -> 计算预测分布 -> 结果分析」建立结构,再回到正文里的代码、案例或指标做验证。
读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「贝叶斯回归的预测」,再查「预测分布」。
在上一篇中,我们已探讨了《贝叶斯回归之先验选择与后验分析》,重点讨论了如何选择适当的先验分布以及从数据中获得后验分布。在本篇教程中,我们将深入研究如何利用贝叶斯回归模型进行预测,并量化预测的不确定性。
1. 贝叶斯回归的预测
在贝叶斯回归中,预测不仅仅是通过模型来获取一个点估计,更重要的是我们能够量化这个估计的不确定性。贝叶斯框架允许我们整合先验知识和观测数据,从而对未知参数进行不确定性建模。
做贝叶斯回归预测时,先看后验参数、预测均值、可信区间、观测噪声和样本外风险。
1.1 预测分布
给定一个新的输入数据点 ,我们希望预测对应的输出 。在贝叶斯回归中,我们不能仅仅计算回归函数的预测值,而是要计算 的条件分布,即 ,其中 是我们的训练数据。
根据贝叶斯定理,我们可以得到:
这里, 是给定参数 时, 的预测分布,而 是参数的后验分布。
1.2 计算预测分布
在实际操作中,由于 可能很复杂,我们通常会使用蒙特卡洛方法来近似计算。以下是一个简单的案例,演示如何使用Python进行贝叶斯回归预测。
案例:预测房价
假设我们有一组数据,包含房子的面积(平方英尺)和相应的房价。我们可以使用贝叶斯线性回归来进行预测,并量化预测的不确定性。
import numpy as np
import matplotlib.pyplot as plt
import pymc3 as pm
# 生成模拟数据
np.random.seed(42)
X = np.random.normal(1000, 200, 100)
true_slope = 200
true_intercept = 10000
y = true_intercept + true_slope * X + np.random.normal(0, 5000, 100)
# 数据的可视化
plt.scatter(X, y, c='black', label='Data')
plt.xlabel('Size (sqft)')
plt.ylabel('Price ($)')
plt.title('House Prices')
plt.legend()
plt.show()
# 贝叶斯回归模型
with pm.Model() as model:
# 先验分布
alpha = pm.Normal('alpha', mu=0, sigma=10000)
beta = pm.Normal('beta', mu=0, sigma=500)
sigma = pm.HalfNormal('sigma', sigma=1000)
# 线性回归方程
mu = alpha + beta * X
# 似然函数
Y_obs = pm.Normal('Y_obs', mu=mu, sigma=sigma, observed=y)
# 采样
trace = pm.sample(2000, tune=1000, return_inferencedata=False)
# 预测
X_new = np.linspace(min(X), max(X), 100)
with model:
pm.set_data({'X_new': X_new})
mu_new = pm.sample_posterior_predictive(trace)
# 计算均值和不确定性
y_pred = mu_new['Y_obs'].mean(axis=0)
y_pred_std = mu_new['Y_obs'].std(axis=0)
# 可视化预测结果
plt.figure(figsize=(10, 5))
plt.scatter(X, y, c='black', label='Data')
plt.plot(X_new, y_pred, color='blue', label='Predicted Mean')
plt.fill_between(X_new, y_pred - 1.96 * y_pred_std, y_pred + 1.96 * y_pred_std, color='blue', alpha=0.3, label='95% Prediction Interval')
plt.xlabel('Size (sqft)')
plt.ylabel('Price ($)')
plt.title('Bayesian Linear Regression Prediction')
plt.legend()
plt.show()
1.3 结果分析
在上述案例中,我们使用贝叶斯回归对房价进行了预测。在预测的图中,蓝色线是预测的均值,而阴影区域表示预测的不确定性区间(95%的置信区间)。这种可视化不仅提供了对房价的点估计,还量化了预测的`不确定性`。
2. 处理不确定性的方式
贝叶斯回归的一个重要优点是它能够自然地处理不确定性。我们可以通过后验分布直接获取参数的不确定性,并通过预测分布来量化预测的不确定性。这使得我们能够做出更为稳健的决策。
《贝叶斯回归之预测与不确定性量化》可以按“场景、概念、动作、结果”来读。先把这四件事对齐,再回到正文里的参数、代码或流程。
2.1 不同先验对不确定性的影响
通过选择不同的先验分布,我们可以观察到预测的不确定性是如何变化的。例如,如果我们选择一个较为强烈的先验,可能会收缩预测的置信区间,而较为宽松的先验则可能导致更大的不确定性。
2.2 蒙特卡洛方法的重要性
如前所述,由于后验分布往往无法解析,使用蒙特卡洛方法抽样是贝叶斯预测的一种常见做法。这种方法允许我们从后验中生成样本,从而提供更丰富的预测信息。
如果《贝叶斯回归之预测与不确定性量化》还没完全消化,可以从这张卡片的四个动作重新走一遍。
回看《贝叶斯回归之预测与不确定性量化》时,不必一次做大项目,先用一条简单样例确认主线是否清楚。
3. 总结
在本篇中,我们探讨了贝叶斯回归的预测特点以及如何量化不确定性。通过实际案例,我们展示了如何使用Python的pymc3库进行贝叶斯回归的预测,并通过可视化的方式呈现预测结果及其不确定性。这种方法提供了比传统线性回归更为深入的洞察,尤其在处理复杂的数据时。
接下来的篇章,我们将关注《贝叶斯分类之贝叶斯分类的基本理论》,进一步扩展我们的贝叶斯学习之旅。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
贝叶斯回归之预测与不确定性量化适合谁读?
这是 贝叶斯学习入门 系列第 15 / 24 篇,适合正在学习贝叶斯学习入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇贝叶斯学习入门教程要多久?
按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读