LightGBM多变量回归区间预测(点预测 + 区间预测),MATLAB代码



MATLAB 代码实现了一个基于 LightGBM(轻量级梯度提升机) 的回归模型,并在其基础上添加了 区间预测 功能(即预测值附带置信区间)。以下是对该代码的详细分析:


1. 研究背景

在机器学习回归任务中,通常只输出一个点预测值(point prediction),但在许多实际应用中(如金融、能源、交通预测),决策者不仅关心预测值,还关心预测的不确定性(即预测区间)。因此,研究如何在 LightGBM 模型基础上构造预测区间具有重要意义。本代码基于残差的正态性假设,使用训练集残差的标准差构造 95% 置信区间,实现区间预测。


2. 主要功能

  • 使用 LightGBM 进行回归建模
  • 训练集和测试集的划分与归一化
  • 模型训练与早停(early stopping)
  • 特征重要性分析
  • 点预测 + 区间预测(95% 置信区间)
  • 多种回归评价指标计算(R², MAE, MAPE, MBE, RMSE)
  • 区间预测评价指标(PICP, PINAW)
  • 多图可视化(特征重要性、损失曲线、预测区间、误差图、拟合图)

3. 算法步骤

  1. 数据加载与预处理

    • 读取 Excel 数据
    • 按比例划分训练集/测试集(默认 70% 训练)
    • 归一化到 0,1 区间
  2. LightGBM 数据集构建

    • 使用 lgbmDataset 创建数据集对象
    • 设置标签字段
  3. 模型参数配置

    • 使用 containers.Map 设置 LightGBM 参数
    • 目标函数为回归(regression),评估指标为 RMSE
  4. 模型训练

    • 使用 train 函数训练模型
    • 支持早停(基于验证集)
  5. 预测与反归一化

    • 使用 predictMatrix 预测
    • 反归一化得到原始尺度预测值
  6. 区间构造

    • 计算训练集残差标准差 σ
    • 假设残差服从正态分布,构造 95% 置信区间:
      y^±1.96×σ \hat{y} \pm 1.96 \times \sigma y^±1.96×σ
  7. 评价指标计算

    • 回归指标:R², MAE, MAPE, MBE, RMSE
    • 区间指标:PICP(覆盖率)、PINAW(宽度)
  8. 结果可视化

    • 特征重要性柱状图
    • 训练损失曲线
    • 带有区间填充的预测结果图
    • 相对误差条形图
    • 真实值与预测值散点拟合图

4. 技术路线

复制代码
数据输入 → 数据划分 → 归一化 → 构建 LightGBM 数据集 → 参数设置 → 模型训练(含早停)
→ 特征重要性分析 → 点预测 → 区间构造(基于残差标准差)→ 评价指标计算 → 可视化输出

5. 公式原理

(1) 点预测

LightGBM 是基于梯度提升决策树(GBDT)的集成学习模型,目标是最小化损失函数(如均方误差):

L(y,y^)=1n∑i=1n(yi−y^i)2 L(y, \hat{y}) = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2 L(y,y^)=n1i=1∑n(yi−y^i)2

(2) 区间预测

假设训练集残差 ( e_i = y_i - \hat{y}_i ) 服从均值为 0 的正态分布,则预测区间为:

y\^−z⋅σ, y\^+z⋅σ\] \[\\hat{y} - z \\cdot \\sigma,\\ \\hat{y} + z \\cdot \\sigma\] \[y\^−z⋅σ, y\^+z⋅σ

其中:

-z=1.96z = 1.96z=1.96对应 95% 置信水平

  • σ\sigmaσ为训练集残差的标准差

(3) 区间评价指标

  • PICP(Prediction Interval Coverage Probability) :
    PICP=1N∑i=1N1(yi∈Li,Ui)×100% \text{PICP} = \frac{1}{N} \sum_{i=1}^N \mathbb{1}(y_i \in L_i, U_i) \times 100\% PICP=N1i=1∑N1(yi∈Li,Ui)×100%
  • PINAW(Prediction Interval Normalized Average Width) :
    PINAW=1N⋅R∑i=1N(Ui−Li)×100%,R=max⁡(y)−min⁡(y) \text{PINAW} = \frac{1}{N \cdot R} \sum_{i=1}^N (U_i - L_i) \times 100\%, \quad R = \max(y) - \min(y) PINAW=N⋅R1i=1∑N(Ui−Li)×100%,R=max(y)−min(y)

6. 参数设定

参数 值 说明
num_leaves 4 每棵树的叶子节点数
learning_rate 0.95 学习率(偏大)
boosting_type 'gbdt' 梯度提升决策树
feature_fraction 0.9 每轮迭代使用的特征比例
bagging_fraction 0.8 每轮迭代使用的样本比例
bagging_freq 7 每 7 轮执行一次 bagging
objective 'regression' 回归任务
metric 'rmse' 评估指标为 RMSE
num_boost_round 20 最大迭代次数
early_stopping_rounds 5 早停轮数

7. 运行环境

  • 操作系统 :Windows(因为加载了 .dll 文件)
  • 软件:MATLAB(需支持调用 C 库)
  • 依赖 :
    • LightGBM 的动态链接库 lib_lightgbm.dll
    • 对应的 C 头文件 c_api.h
    • MATLAB 的 loadlibrary 支持

8. 应用场景

该代码适用于需要进行 回归预测并量化不确定性 的场景,例如:

  • 电力负荷预测
  • 股票价格区间预测
  • 交通流量预测
  • 环境监测数据预测
  • 工业设备寿命预测

完整代码私信回复LightGBM多变量回归区间预测(点预测 + 区间预测),MATLAB代码

相关推荐
严肃小白兔1 天前
优秀 MATLAB 作者、书籍推荐:国外经典教材与技术资源整理
matlab
我要见SA姐12 天前
GitHub Actions 自动化:5 个真实运维提效案例
运维·数据库·机器学习·oracle·回归
熊猫_豆豆2 天前
buck-boost电路MATLAB仿真
matlab·电路·电力电子技术
逆向编程3 天前
MATLAB高级数据结构:cell、struct与table深度应用
开发语言·数据结构·matlab
星夜离尘563 天前
MATLAB 刚体坐标变换:点、方向和逆变换为什么不能混用
matlab
企业数字化笔记3 天前
表单发布前怎么验收?版本引用、字段兼容和历史数据回归
android·数据挖掘·回归
Evand J4 天前
【PMSM滤波例程2】PMSM未知负载转矩观测EKF。MATLAB例程(负载增广EKF与实际仿真结果)。附下载链接
开发语言·matlab·电机
程序员清风4 天前
让 AI 编写与运行测试:从样例通过到回归验证
人工智能·数据挖掘·回归
机器学习之心4 天前
基于贝叶斯物理信息神经网络的矿产预测与不确定性量化,MATLAB代码及复现报告
人工智能·神经网络·matlab·贝叶斯物理信息神经网络
D e re k ZH4 天前
保序回归:从 PAVA 到可并堆的单调约束优化
c++·算法·数据挖掘·回归·kotlin