news 2026/4/3 1:22:23

LSTM长短期记忆神经网络分位数回归多输入单输出(Matlab) 1.输入多个特征,输出单个特...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LSTM长短期记忆神经网络分位数回归多输入单输出(Matlab) 1.输入多个特征,输出单个特...

LSTM长短期记忆神经网络分位数回归多输入单输出(Matlab) 1.输入多个特征,输出单个特征,分位数回归,区间预测 2.运行环境matlab2020b 所有程序经过验证,保证有效运行。

直接上干货。咱们今天聊点硬核的——用Matlab搞LSTM分位数回归做多变量区间预测。这玩意儿在电力负荷预测、股票波动率估计这些需要风险预警的场景特实用,毕竟光预测个平均值没劲,得知道预测结果的上下限才靠谱。

先看数据准备。假设我们有10个特征变量(比如温度、湿度、风速等)影响目标变量(比如用电量)。数据标准化用mapminmax最省事:

[input_train,ps_input] = mapminmax(feature_data',0,1); [output_train,ps_output] = mapminmax(target_data',0,1);

注意这里转置操作符',Matlab的LSTM要求数据格式是特征数×样本数,别搞反了。建议把原始数据存成Excel,用xlsread导入比较稳。

网络结构是关键。上Bidirectional LSTM能捕捉前后时序关系,比单向的强。核心代码这样写:

layers = [ sequenceInputLayer(inputSize) bilstmLayer(128,'OutputMode','sequence') dropoutLayer(0.2) fullyConnectedLayer(3) % 对应三个分位数输出 ];

这里有个骚操作:最后全连接层输出3个节点,对应0.1、0.5、0.9三个分位数。想改分位点数值?直接改数组就行,比如[0.05,0.5,0.95]。

LSTM长短期记忆神经网络分位数回归多输入单输出(Matlab) 1.输入多个特征,输出单个特征,分位数回归,区间预测 2.运行环境matlab2020b 所有程序经过验证,保证有效运行。

损失函数得自己定制。分位数损失不是MSE那套,得用这个公式:

$$Loss = \frac{1}{N}\sum{i=1}^{N} \max(q(yi - \hat{y}i), (q-1)(yi - \hat{y}_i))$$

Matlab实现用dlarray处理自动微分:

function loss = quantileLoss(predictions, targets, tau) errors = targets - predictions; loss = mean(max(tau*errors, (tau-1)*errors)); end

训练时别开accelerator,老版本可能有兼容问题。建议用CPU模式,batchsize设32或64:

options = trainingOptions('adam', ... 'MaxEpochs',200,... 'MiniBatchSize',64,... 'GradientThreshold',1,... 'ExecutionEnvironment','cpu',... 'Plots','training-progress');

预测结果要做反向归一化:

YPred = predict(net,XTest); YPred_inv = mapminmax('reverse', YPred, ps_output);

可视化部分建议用带状图展示预测区间:

fill([1:numTest, numTest:-1:1],... [upperQuantile, fliplr(lowerQuantile)],... [0.8 0.9 0.9], 'EdgeColor','none') hold on plot(medianQuantile,'LineWidth',2)

踩过最大的坑是序列长度对齐。建议训练时用padding处理不等长序列,但验证集别这么干。遇到loss震荡的话,试试把学习率从3e-4降到1e-4,亲测有效。

完整代码跑通后建议保存成mat文件,下次直接load网络用。注意2020b开始支持ONNX格式导出,需要部署到其他平台的话这个很方便。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/24 8:57:40

更优雅的测试:Pytest框架入门

SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式。本文将介绍如何使用SQLAlchemy ORM进行数据库操作。目录安装SQLAlchemy核心概念连接数据库定义数据模型创建数据库表基本CRUD操作查询数据关系操…

作者头像 李华
网站建设 2026/3/15 18:48:21

C++中的解释器模式变体

1、非修改序列算法 这些算法不会改变它们所操作的容器中的元素。 1.1 find 和 find_if find(begin, end, value):查找第一个等于 value 的元素,返回迭代器(未找到返回 end)。find_if(begin, end, predicate):查找第…

作者头像 李华
网站建设 2026/3/15 13:32:25

基于C++的机器学习库开发

1、非修改序列算法这些算法不会改变它们所操作的容器中的元素。1.1 find 和 find_iffind(begin, end, value):查找第一个等于 value 的元素,返回迭代器(未找到返回 end)。find_if(begin, end, predicate):查找第一个满…

作者头像 李华
网站建设 2026/3/26 12:15:10

ue 模拟说话

目录 眨眼: 嘴巴动: 眨眼: 嘴巴动:

作者头像 李华
网站建设 2026/3/31 16:13:18

计算机Java毕设实战-基于SpringBoot+Vue的个性化推荐电商平台的设计与实现基于springboot的个性化推荐电商平台的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华