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代码

相关推荐
slandarer11 小时前
MATLAB | 如何使用MATLAB绘制弧形图/弧长链接图(arc diagram)
matlab
ghie909013 小时前
基于学习的模型预测控制(LBMPC)MATLAB实现指南
开发语言·学习·matlab
cici1587414 小时前
非线性模型预测控制(NMPC)基于CasADi的MATLAB实现
开发语言·matlab
t1987512815 小时前
MATLAB模糊数学模型(Fuzzy Mathematical Model)实现指南
开发语言·matlab
沅_Yuan15 小时前
基于贝叶斯优化的稀疏高斯过程回归(BO-SGPR)多输入单输出回归模型【MATLAB】
神经网络·机器学习·matlab·回归·回归预测·贝叶斯优化
Evand J15 小时前
MATLAB批量保存现有绘图窗口的方法,简易方法,直接保存到当前目录,不手动设置
开发语言·matlab·教程
feifeigo12316 小时前
航天器交会的分布式模型预测控制(DMPC)MATLAB实现
开发语言·分布式·matlab
沅_Yuan16 小时前
基于不确定性量化的CNN-LSTM-Attention多输入单输出回归模型【MATLAB】
神经网络·matlab·回归·cnn·lstm·回归预测
551只玄猫16 小时前
【数学建模 matlab 实验报告9】数据的统计分析与描述
数学建模·matlab·数据分析·课程设计·实验报告
机器学习之心18 小时前
Matlab基于RF随机森林的锂电池剩余寿命预测
随机森林·matlab·锂电池剩余寿命预测·rf随机森林