PM2.5 高斯过程回归预测复现

Author

汪同宇

Published

May 28, 2026

📦 源代码: 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、线性回归)难以捕捉大气污染物的非线性时空特征,而机器学习方法为这一挑战提供了新的解决思路。高斯过程回归作为一种非参数贝叶斯方法,具有以下优势:

  1. 不确定性量化:能够提供预测区间,评估预测可靠性
  2. 非线性建模:通过核函数灵活捕获复杂时空模式
  3. 小样本适用:在有限监测站数据下仍能获得较好效果

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³ 均方根误差,反映预测偏差
0.83 决定系数,反映模型解释能力

0.4.2 可视化分析

实测 vs 预测散点图

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

时间序列预测

图 2:PM2.5 浓度时间序列预测结果。蓝色为实测值,红色为预测值,红色阴影区域为 95% 置信区间。模型成功捕捉了日变化和周变化规律,置信区间在浓度波动较大时变宽,体现了 GPR 在不确定性量化方面的优势。

0.4.3 讨论

  1. 不确定性量化:GPR 的 95% 置信区间在浓度突变时段变宽,说明模型对高波动区域的预测信心较低,这与实际大气污染的随机性一致。

  2. 模型局限性

    • 单站点 GPR 模型未考虑空间相关性
    • 核函数选择相对简单,未引入周期性核来捕捉日周期和周周期
    • 对极端浓度事件的预测能力有限
  3. 改进方向

    • 引入多变量 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