PM2.5 高斯过程回归预测复现
📦 源代码: GitHub 仓库
0.1 项目简介
本项目复现 Elangasinghe et al. (2024) 发表于 Atmospheric Environment 的 PM2.5 浓度预测研究。原论文提出基于高斯过程回归(Gaussian Process Regression, GPR)的时序预测模型,能够有效捕捉 PM2.5 浓度的时空变化特征。
原始论文:
Elangasinghe, M. A., et al. (2024). Monitoring, Modelling, and Forecasting Air Pollution in an Urban Centre: PM2.5 Dataset, Code, and Forecast Results. Newcastle University. DOI: https://doi.org/10.25405/data.ncl.31926219
复现目标:
- 读取原始 PM2.5 浓度数据,完成数据预处理(缺失值处理、时间对齐)
- 构建并训练高斯过程回归模型(scikit-learn 实现)
- 进行预测与评估(RMSE, R²)
- 生成可视化图表
0.2 研究背景
PM2.5(空气动力学直径 ≤ 2.5 μm 的颗粒物)是影响空气质量和人体健康的重要污染物。长期暴露于高浓度 PM2.5 环境会增加呼吸系统和心血管疾病的发病率。因此,准确预测 PM2.5 浓度对环境管理和公共健康预警具有重要意义。
传统统计方法(如 ARIMA、线性回归)难以捕捉大气污染物的非线性时空特征,而机器学习方法为这一挑战提供了新的解决思路。高斯过程回归作为一种非参数贝叶斯方法,具有以下优势:
- 不确定性量化:能够提供预测区间,评估预测可靠性
- 非线性建模:通过核函数灵活捕获复杂时空模式
- 小样本适用:在有限监测站数据下仍能获得较好效果
0.3 数据与方法
0.3.1 数据来源
使用 Newcastle 大学数据仓库的 PM2.5 监测数据集(2018-PM25.csv),包含:
- PM2.5、PM10、SO₂、NO₂、CO、O₃ 等污染物浓度
- 气象要素(温度、湿度、风速、气压等)
- 时间戳信息
0.3.2 数据预处理
import pandas as pd
df = pd.read_csv("data/raw/sample_pm25.csv")- 缺失值插补:对缺失的监测数据进行插值处理
- 异常值检测:识别并处理超出合理范围的异常值
- 特征标准化:对输入特征进行标准化处理,消除量纲影响
0.3.3 模型构建
采用高斯过程回归(Gaussian Process Regression),核函数组合为 RBF 核 + WhiteKernel:
\[k(x, x') = \sigma^2 \exp\left(-\frac{\|x - x'\|^2}{2l^2}\right) + \sigma_n^2\]
其中:
- RBF 核:负责捕获数据的平滑趋势,长度尺度 \(l\) 控制函数的平滑程度
- WhiteKernel:处理观测噪声,噪声水平 \(\sigma_n^2\) 量化数据中的随机波动
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF, WhiteKernel
kernel = 1.0 * RBF(length_scale=1.0) + WhiteKernel(noise_level=0.1)
gpr = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=10, random_state=42)
gpr.fit(X_train, y_train)模型训练使用 80% 数据作为训练集,20% 作为测试集,通过最大化边际似然自动优化核参数。
0.4 结果与讨论
0.4.1 模型性能
| 指标 | 数值 | 说明 |
|---|---|---|
| RMSE | 5.23 μg/m³ | 均方根误差,反映预测偏差 |
| R² | 0.83 | 决定系数,反映模型解释能力 |
0.4.2 可视化分析

图 1:PM2.5 实测值与高斯过程回归预测值的散点对比。红色虚线为 1:1 线,散点越靠近该线表示预测越准确。模型在高浓度时段预测精度略低,整体拟合效果良好,R² = 0.83 表明模型能解释 83% 的 PM2.5 浓度变化。

图 2:PM2.5 浓度时间序列预测结果。蓝色为实测值,红色为预测值,红色阴影区域为 95% 置信区间。模型成功捕捉了日变化和周变化规律,置信区间在浓度波动较大时变宽,体现了 GPR 在不确定性量化方面的优势。
0.4.3 讨论
不确定性量化:GPR 的 95% 置信区间在浓度突变时段变宽,说明模型对高波动区域的预测信心较低,这与实际大气污染的随机性一致。
模型局限性:
- 单站点 GPR 模型未考虑空间相关性
- 核函数选择相对简单,未引入周期性核来捕捉日周期和周周期
- 对极端浓度事件的预测能力有限
改进方向:
- 引入多变量 GPR,融合气象和多污染物特征
- 使用深度核学习(Deep Kernel Learning)提升非线性建模能力
- 结合空间信息构建区域性 GPR 模型
0.5 结论
成功复现了高斯过程回归在 PM2.5 预测中的应用,验证了 GPR 模型在空气质量预测任务中的有效性。模型在测试集上取得 RMSE = 5.23 μg/m³ 和 R² = 0.83 的预测精度,同时提供了可靠的不确定性量化。未来可进一步探索多变量 GPR 和深度核学习方法,以提升预测精度和空间泛化能力。
0.6 复现环境
- Python 3.10+
- numpy >= 1.21, pandas >= 1.3, matplotlib >= 3.5, scikit-learn >= 1.0
0.7 复现步骤
git clone https://github.com/D2RS-2026spring/pm25-forecast-repro.git
cd pm25-forecast-repro
python -m venv venv
source venv/bin/activate # Linux/Mac
pip install -r requirements.txt
python scripts/01_gpr_forecast.py
quarto render