基于堆叠⾃编码器的时间序列预测 深层神经网络

自适应迭代扩展卡尔曼滤波算法(AIEK)是一种滤波算法,其目的是通过迭代过程来逐渐适应不同的状态和环境,从而优化滤波效果。

该算法的基本思路是在每一步迭代过程中,根据所观测的数据和状态方程,对滤波器的参数进行自适应调整,以便更好地拟合实际数据的分布。具体而言,该算法包括以下步骤:

初始化:首先,为滤波器的初始参数设定一个初始值,这些参数包括状态转移矩阵、测量矩阵、过程噪声协方差和测量噪声协方差等。

预测:根据当前的状态方程和滤波器参数,对下一个状态进行预测,并计算预测误差。

校正:根据预测结果和实际观测数据,对预测进行修正,以便更好地拟合实际数据的分布。

参数更新:根据校正结果,自适应地调整滤波器参数,以便在下一个迭代过程中更好地拟合数据。

该算法具有自适应性和迭代性,能够逐渐适应不同的状态和环境,从而优化滤波效果。在实际应用中,可以根据具体问题选择不同的滤波器参数调整方法和迭代策略,以获得更好的滤波效果。

清空环境变量

matlab 复制代码
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行

导入数据(20步滑动窗口已处理过)

matlab 复制代码
x_train = xlsread('P_x_train.xlsx','B2:U5043');
y_train = xlsread('P_y_train.xlsx','B1:B5042');
x_test = xlsread('P_x_test.xlsx','B2:U1720');
y_test = xlsread('P_y_test.xlsx','B1:B1719');

数据归一化

matlab 复制代码
[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);

转置以适应模型

matlab 复制代码
p_train = p_train'; p_test = p_test';
t_train = t_train'; t_test = t_test';

建立深层神经网络

matlab 复制代码
hidden   = [f_, 50, 50];                     % 自动编码器的隐藏层节点个数[50, 50]
sae_lr   = 0.5;                              % 自动编码器的学习率
sae_mark = 0;                                % 自动编码器的噪声覆盖率(不为零时,为堆叠去噪自动编码器)
sae_act  = 'sigm';                           % 自动编码器的激活函数

opts.numepochs = 500;                        % 自动编码器的最大训练次数
opts.batchsize = M / 2;                      % 每次训练样本个数 需满足:(M / batchsize = 整数)

%%  建立堆叠自编码器
sae = saesetup(hidden);

%%  堆叠自动编码器参数设置
for i = 1 : length(hidden) - 1
    sae.ae{i}.activation_function     = sae_act;    % 激活函数
    sae.ae{i}.learningRate            = sae_lr;     % 学习率
    sae.ae{i}.inputZeroMaskedFraction = sae_mark;   % 噪声覆盖率
end

%%  训练堆叠自动编码器
sae = saetrain(sae, p_train, opts);

%%  建立深层神经网络
nn = nnsetup([hidden, outdim]);

相关指标计算

matlab 复制代码
%  R2
R1 = 1 - norm(T_train - T_sim1')^2 / norm(T_train - mean(T_train))^2;
R2 = 1 - norm(T_test  - T_sim2')^2 / norm(T_test  - mean(T_test ))^2;

disp(['训练集数据的R2为:', num2str(R1)])
disp(['测试集数据的R2为:', num2str(R2)])

%  MAE
mae1 = sum(abs(T_sim1' - T_train)) ./ M ;
mae2 = sum(abs(T_sim2' - T_test )) ./ N ;

disp(['训练集数据的MAE为:', num2str(mae1)])
disp(['测试集数据的MAE为:', num2str(mae2)])

%  MBE
mbe1 = sum(T_sim1' - T_train) ./ M ;
mbe2 = sum(T_sim2' - T_test ) ./ N ;

disp(['训练集数据的MBE为:', num2str(mbe1)])
disp(['测试集数据的MBE为:', num2str(mbe2)])


相关推荐
数智化精益手记局15 分钟前
拆解物料管理erp系统的核心功能,看物料管理erp系统如何解决库存积压与缺料难题
大数据·网络·人工智能·安全·信息可视化·精益工程
Flying pigs~~25 分钟前
RAG 完整面试指南:原理、优化、幻觉解决方案
人工智能·prompt·rag·智能体·检索增强生成·rag优化
博.闻广见38 分钟前
AI_概率统计-2.常见分布
人工智能·机器学习
企业架构师老王39 分钟前
2026制造业安全生产隐患识别AI方案:从主流产品对比看企业级AI Agent的非侵入式落地路径
人工智能·安全·ai
Aleeeeex1 小时前
RAG 那点事:从 8 份企业文档到能用的问答系统,全过程拆给你看
人工智能·python·ai编程
冬奇Lab1 小时前
一天一个开源项目(第87篇):Tank-OS —— Red Hat 工程师用一个周末,把 AI Agent 塞进了一个可启动的 Linux 镜像
人工智能·开源·资讯
小糖学代码1 小时前
LLM系列:2.pytorch入门:8.神经网络的损失函数(criterion)
人工智能·深度学习·神经网络
Captaincc1 小时前
转发-中央网信办部署开展“清朗·整治AI应用乱象”专项行动
人工智能·vibecoding
AI自动化工坊1 小时前
Late框架技术深度解析:5GB VRAM实现10倍AI编码效率的工程架构
人工智能·5g·架构·ai编程·late
我是大聪明.2 小时前
DeepSeek V4 Pro + 华为昇腾910:国产大模型落地的性能实测与深度解析
人工智能·华为