基于深度混合核极限学习机的多变量输入时间序列预测

 0、前言

        深度混合核极限学习机的时间序列预测方法:首先采用多层ELM-AE实现抽象特征提取,然后将提取的抽象特征用来训练一个混合核极限学习机实现分类。深度混合核极限学习机实际上是由多层极限学习机+HKELM构成。

1、理论简介

1.1 ELMAE

 ELMAE与ELM都是三层网络结构,但是ELM-AE 是无监督学习算法 , 其输出与输入一致。

ELMAE的输出权重计算公式如下:

1.2 多层极限学习机ML-ELM

        ML-ELM 使用 ELM-AE 逐层训练,ML-ELM 利用 ELM-AE 训练时,第 i 个隐层的输出和第(i-1)个隐层上的输出的数值关系可用以下公式表示:

1.3 混合核极限学习机(HKELM)

        HKELM的回归预测实现参考这里

1.4  深度混合核极限学习机 

        深度混合核极限学习机首先利用多层ELM-AE( ML-ELM)对输入数据进行逐层抽取从而得到更为有效的特征;基于这些更为抽象的特征,利用核函数计算代替高维空间的内积运算,从而实现将特征映射到更高维空间进行预测,则有利于进一步提高模型预测的精度和泛化性能。深度混合核极限学习机结构如下:

        

2、深度混合核极限学习机用于多变量输入时间序列预测

       多变量输入时间序列预测,指的是输入变量为多个,并且以前几个时刻的输入变量值预测下一时刻的输出变量值。如果输出变量为功率即为功率预测、若是负荷值即为负荷预测。总之替换为自己的数据后,就可以实现时间序列预测。

step=5;%前step个时刻的所有值预测下一个时刻的输出值,构建多变量滚动序列
for i=1:size(data,1)-step
    input(i,:,:)=data(i:i+step-1,:);
    output(i,:)=data(i+step,end);
end
input=input(:,:);

        首先建立多层ELM-AE网络,实现深度特征提取,本博文方法设置的隐含层层数为2,节点数分别为100、50.

%elm-ae的参数
h=[100 ,50];%各隐含层节点数
TF='sig';%ELM-AE激活函数
lambda1=inf;%elm-ae的L2正则化系数

        然后设置顶层HKELM的网络:选定核函数,设置核参数以及核函数的权重占比,如下图所示

%核函数类型1.RBF_kernel 2.lin_kernel 3 poly_kernel 4 wav_kernel
kernel1='RBF_kernel';
kernel2='poly_kernel';

% 第一个核函数的核参数设置  详情看kernel_matrix
if strcmp(kernel1,'RBF_kernel')
    ker1_para=1; %rbf有一个核参数
elseif strcmp(kernel1,'lin_kernel')
    ker1_para=[]; %线性没有核参数
elseif strcmp(kernel1,'poly_kernel')
    ker1_para=[1,1]; %多项式有2个核参数
elseif strcmp(kernel1,'wav_kernel')
    ker1_para=[1,1,1]; %小波核有3个核参数
end
% 第二个核函数的核参数设置  详情看kernel_matrix
if strcmp(kernel2,'RBF_kernel')
    ker2_para=1; %rbf有一个核参数
elseif strcmp(kernel2,'lin_kernel')
    ker2_para=[]; %线性没有核参数
elseif strcmp(kernel2,'poly_kernel')
    ker2_para=[1,1]; %多项式有2个核参数
elseif strcmp(kernel2,'wav_kernel')
    ker2_para=[1,1,1]; %小波核有3个核参数
end

预测效果:

3、黏菌优化深度混合核极限学习机用于多变量输入时间序列预测

        考虑到深度混合核极限学习机最后预测精度受核参数影响,因此采用黏菌优化算法进行优化,适应度函数为预测精度。

        黏菌优化算法的函数极值寻优效果展示:

 4、效果对比

       

 可以看出优化后的深度混合核极限学习机与真实值更为接近,预测精度更高。

猜你喜欢

转载自blog.csdn.net/m0_61363749/article/details/126161152