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

相关推荐
youyoulg2 小时前
监督学习-回归
学习·数据挖掘·回归
jghhh013 小时前
运动图像的运动轨迹检测与特征点跟踪MATLAB实现
人工智能·计算机视觉·matlab
fengfuyao9853 小时前
一个改进的MATLAB CVA(Change Vector Analysis)变化检测程序
前端·算法·matlab
机器学习之心HML3 小时前
考虑气象因素的贝叶斯优化短期电力负荷预测研究,MATLAB代码
开发语言·matlab
机器学习之心5 小时前
多工况车速数据集训练GRU门控循环单元用于车速预测,输出未来多个时间步车速,MATLAB代码
深度学习·matlab·gru·车速预测
简简单单做算法7 小时前
基于hough变换和线段分类算法的金属冲孔板裂痕检测matlab仿真
matlab·hough变换·线段分类·金属冲孔板·裂痕检测
enmouhuadou19 小时前
快速运行matlab仿真方法
开发语言·matlab
神仙别闹1 天前
基于MATLAB实现(GUI)汽车出入库识别系统
开发语言·matlab·汽车
hoiii1871 天前
MATLAB模拟ADS-B数据解码与信号处理整体流程
数据结构·matlab·信号处理