15 贝叶斯回归之预测与不确定性量化

在上一篇中,我们已探讨了《贝叶斯回归之先验选择与后验分析》,重点讨论了如何选择适当的先验分布以及从数据中获得后验分布。在本篇教程中,我们将深入研究如何利用贝叶斯回归模型进行预测,并量化预测的不确定性。

1. 贝叶斯回归的预测

在贝叶斯回归中,预测不仅仅是通过模型来获取一个点估计,更重要的是我们能够量化这个估计的不确定性。贝叶斯框架允许我们整合先验知识和观测数据,从而对未知参数进行不确定性建模。

1.1 预测分布

给定一个新的输入数据点 $x^*$,我们希望预测对应的输出 $y^*$。在贝叶斯回归中,我们不能仅仅计算回归函数的预测值,而是要计算 $y^*$ 的条件分布,即 $p(y^* | x^*, D)$,其中 $D$ 是我们的训练数据。

根据贝叶斯定理,我们可以得到:

$$
p(y^* | x^*, D) = \int p(y^* | x^*, \theta) p(\theta | D) d\theta
$$

这里,$p(y^* | x^*, \theta)$ 是给定参数 $\theta$ 时,$y^*$ 的预测分布,而 $p(\theta | D)$ 是参数的后验分布。

1.2 计算预测分布

在实际操作中,由于 $p(\theta | D)$ 可能很复杂,我们通常会使用蒙特卡洛方法来近似计算。以下是一个简单的案例,演示如何使用Python进行贝叶斯回归预测。

案例:预测房价

假设我们有一组数据,包含房子的面积(平方英尺)和相应的房价。我们可以使用贝叶斯线性回归来进行预测,并量化预测的不确定性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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 贝叶斯回归之预测与不确定性量化

https://zglg.work/bayesian-learning-zero/15/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论