基于不确定性量化的CNN-LSTM-Attention多输入单输出回归模型【MATLAB】

基于不确定性量化的CNN-LSTM-Attention多输入单输出回归模型

在深度学习的回归预测任务中,传统的神经网络模型往往只输出一个确定性的点估计(Point Estimate)。然而在实际工程应用(如医疗诊断、金融预测、工业设备寿命预估)中,"黑盒"模型给出的单一数值常常让人缺乏安全感。我们不仅需要模型告诉我们"预测结果是多少",更需要它告诉我们"它对这个预测有多大的把握"。

为了解决这一痛点,本文将为大家详细解析一个结合了特征提取 (CNN)时序建模 (LSTM)特征加权 (Attention) 以及 不确定性量化 (Uncertainty Quantification, UQ) 的强力回归模型,并提供完整的 MATLAB 实现代码。


一、 核心技术原理解析

本模型不仅在网络结构上进行了深度融合,在预测机制上也引入了前沿的"深度集成"思想:

1. 混合网络架构 (CNN-LSTM-Attention)
  • CNN (卷积神经网络) :通过 convolution2dLayer 对输入的多维特征进行局部特征感受野的提取。
  • Attention (注意力机制) :代码中巧妙地构建了一个类似 Squeeze-and-Excitation (SE) 的通道注意力模块。利用全局平均池化(GAP)提取特征通道的全局信息,经过全连接层和 Sigmoid 激活函数后,计算出每个特征通道的权重,并将其与原始特征进行乘法加权(multiplicationLayer),让模型学会"把注意力放在关键特征上"。
  • LSTM (长短期记忆网络):接收经过注意力加权后的空间特征,展开时间步,捕捉数据中隐含的动态时序依赖关系。
2. 深度集成与不确定性量化 (Deep Ensembles)

单体神经网络极易陷入局部最优,且无法量化自身的"认知不确定性"。本方案采用深度集成法(Deep Ensembles),通过重新初始化网络权重,并行训练 5 个独立的子模型:

  • 预测均值 (μ\muμ):作为最终的预测结果,集成后的均值往往比单体模型更稳定、精度更高。
  • 预测标准差 (σ\sigmaσ) :衡量模型对该样本预测的不确定性。标准差越大,说明各个子模型对该样本的预测分歧越大,模型处于"我不确定"的状态。
  • 95%置信区间 :基于高斯假设,我们可以通过 μ±1.96σ\mu \pm 1.96\sigmaμ±1.96σ 构建预测的置信下界与上界。

二、 MATLAB 实现

以下是 MATLAB 部分代码。代码已进行了详尽的注释,直接准备好您的 data.xlsx(前 N-1 列为输入特征,最后一列为输出标签)即可一键运行。

matlab 复制代码
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行
tic                     % 开始计时
rng('default')          % 设定随机种子,保证结果可复现

%% 1. 导入数据与预处理
disp('正在导入数据并进行预处理...')
res = xlsread('data.xlsx');
num_size = 0.7;                              % 训练集占数据集比例
outdim = 1;                                  % 最后一列为输出
num_samples = size(res, 1);                  % 样本个数
num_train_s = ceil(num_size * num_samples)+1; % 训练集样本个数
f_ = size(res, 2) - outdim;                  % 输入特征维度

% 划分训练集和测试集
P_train = res(1: num_train_s, 1: f_)';
T_train = res(1: num_train_s, f_ + 1: end)';
M = size(P_train, 2);
P_test = res(num_train_s + 1: end, 1: f_)';
T_test = res(num_train_s + 1: end, f_ + 1: end)';
N = size(P_test, 2);

% 数据归一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax('apply', P_test, ps_input);
[t_train, ps_output] = mapminmax(T_train, 0, 1);
t_test = mapminmax('apply', T_test, ps_output);

% 数据平铺与格式转换 (适配 CNN 输入格式)
p_train = double(reshape(p_train, f_, 1, 1, M));
p_test  = double(reshape(p_test , f_, 1, 1, N));
t_train = double(t_train)';
t_test  = double(t_test )';

for i = 1 : M
    Lp_train{i, 1} = p_train(:, :, 1, i);
end
for i = 1 : N
    Lp_test{i, 1}  = p_test( :, :, 1, i);
end

三、 运行结果与图表深度剖析

程序运行结束后,不仅会在控制台输出高精度的预测指标(如 R2R^2R2 接近于 1,极低的 MAE 等),还会生成极为直观的 不确定性分析图表

  1. 全景不确定性预测(图 1)

    图中除了红色的真实值和蓝色的预测均值折线外,还会有一层浅蓝色的 "95% 置信区间"面片 。如果某一段数据的置信区间突然变宽,说明模型对这里的预测非常没有信心(可能是由于训练集未见过类似数据,或该处噪声极大),这在故障预警等场景下具有极高的参考价值。

  2. 子模型轨迹分析 Spaghetti Plot(图 2)

    通过绘制 5 个子模型的独立预测曲线(浅灰色半透明),你可以直观地看到"预测分歧"。灰色线条聚拢的地方,说明模型达成高度共识;线条发散散乱的地方,正是模型认知不确定性最高的位置。

  3. 不确定性与实际误差相关性散点图(图 3)

    这是一个极具论文价值的论证图表。横轴是模型的预测标准差(不确定性) ,纵轴是绝对预测误差 。通过拟合趋势线可以看出:当模型表现出高度不确定时,往往其实际预测误差也会更大。这证明了我们的不确定性量化是高度可靠和自洽的------模型不仅能够预测,还能准确知道自己什么时候"可能要犯错"。



四、 总结

通过引入 CNN-LSTM-Attention 构建强大的多尺度时序特征提取主干,再辅以 Deep Ensembles 深度集成框架,本程序实现了从点预测概率化区间预测的跨越。这套框架非常适合作为高质量学术论文(SCI/EI)的实验基础,或用于对安全性要求极高的工程预测落地项目中。欢迎大家复制源码进行实战测试与扩展!

五、 代码下载

https://mbd.pub/o/bread/YZWclpZraQ==

相关推荐
551只玄猫2 小时前
【数学建模 matlab 实验报告9】数据的统计分析与描述
数学建模·matlab·数据分析·课程设计·实验报告
A尘埃3 小时前
深度学习之卷积神经网络CNN(卷积+池化)
人工智能·深度学习·cnn
龙文浩_3 小时前
AI的jieba分词原理与多模式应用解析
人工智能·pytorch·深度学习·神经网络
Learn Beyond Limits3 小时前
神经机器翻译|Neural Machine Translation(NMT)
人工智能·神经网络·机器学习·ai·自然语言处理·nlp·机器翻译
机器学习之心3 小时前
Matlab基于RF随机森林的锂电池剩余寿命预测
随机森林·matlab·锂电池剩余寿命预测·rf随机森林
永霖光电_UVLED4 小时前
康奈尔大学 AlScN/GaN 异质结构研究“单通道和多通道 AlScN 势垒”
人工智能·神经网络·生成对抗网络
rit84324994 小时前
基于NSGA-II的多目标优化算法(MATLAB实现)
开发语言·算法·matlab
电磁脑机4 小时前
论AI幻觉的本质:人类符号幻觉的镜像映射与认知破局 ——基于三场正交统一场论的底层阐释
人工智能·神经网络·机器学习·重构·架构
T.i.s4 小时前
番外(开源心电图数据库处理)--mit-bih-normal-sinus-rhythm-database的使用教程
matlab·信号处理·心电图