【回归预测】基于matlab离群鲁棒极限学习机(ORELM)求解回归预测问题【含Matlab源码 1441期】

307 阅读1分钟

一、ORELM简介

理论知识参考:基于MRMR的ORELM的短期风速预测

二、部分源代码


clear all;clc;
addpath(genpath('./.'));
%rng('default');

%%%------------------------------------------------------------------------
%%%   Load Data
%%%------------------------------------------------------------------------

%[traindata,trainlabel,testdata,testlabel] = sinc_Huang;
[traindata,trainlabel,testdata,testlabel] = sinc_K(0.4);

%%%------------------------------------------------------------------------
%%%   Global Setting
%%%------------------------------------------------------------------------

nn.hiddensize     = 20;
method            = {'ELM','RELM','WRELM','ORELM'};
type              = {'regression','classification'};
nn.type           = type{1};
nn.inputsize      = size(traindata,1);
nn.activefunction = 's';
nn.orthogonal     = false;
fprintf('            method             |  Training Acc.  |    Testing Acc.   |   Training Time \n');

%%%------------------------------------------------------------------------
%%%   ELM / Original ELM
%%%------------------------------------------------------------------------

nn.method         = method{1};
nn                = elm_initialization(nn);
[nn, acc_train]   = elm_train(traindata, trainlabel, nn);
[nn1, acc_test]   = elm_test(testdata, testlabel, nn);
fprintf('      %19s      |      %.3f      |      %.5f      |      %.5f      \n',nn.method,acc_train,acc_test,nn.time_train);

%%%------------------------------------------------------------------------
%%%   RELM / Regularized ELM
%%%------------------------------------------------------------------------

nn.method         = method{2};
nn                = elm_initialization(nn);
nn.C              = 0.0001;
[nn, acc_train]   = elm_train(traindata, trainlabel, nn);
[nn2, acc_test]   = elm_test(testdata, testlabel, nn);
fprintf('      %19s      |      %.3f      |      %.5f      |      %.5f      \n',nn.method,acc_train,acc_test,nn.time_train);

%%%------------------------------------------------------------------------
%%%   WRELM / Weighted Regularized ELM
%%%------------------------------------------------------------------------

nn.method         = method{3};
nn.wfun           = '1';
nn.scale_method   = 1;
nn                = elm_initialization(nn);
nn.C              = 2^(-20);
[nn, acc_train]   = elm_train(traindata, trainlabel, nn);
[nn3, acc_test]   = elm_test(testdata, testlabel, nn);
fprintf('      %19s      |      %.3f      |      %.5f      |      %.5f      \n',nn.method,acc_train,acc_test,nn.time_train);

%%%------------------------------------------------------------------------
%%%   ORELM / Outlier-Robust ELM
%%%------------------------------------------------------------------------

nn.method         = method{4};
nn                = elm_initialization(nn);
nn.C              = 2^(-40);
[nn, acc_train]   = elm_train(traindata, trainlabel, nn);
[nn4, acc_test]   = elm_test(testdata, testlabel, nn);
fprintf('      %19s      |      %.3f      |      %.5f      |      %.5f      \n',nn.method,acc_train,acc_test,nn.time_train);


%%%------------------------------------------------------------------------
%%%   Plot
%%%------------------------------------------------------------------------
function [nn, acc_test] = elm_test(X,Y,nn)

ndata        = size(X, 2);
tempH        = nn.W*X + repmat(nn.b,1,ndata);

switch lower(nn.activefunction)
    case{'s','sig','sigmoid'}
        H = 1 ./ (1 + exp(-tempH));
    case{'t','tanh'}
        H = tanh(tempH);
end

Y_hat    = nn.beta*H;

if ismember(nn.type,{'c','classification','Classification'})
    [~,label_actual]  = max(Y_hat,[],1);
    [~,label_desired] = max(Y,[],1);
    acc_test = sum(label_actual==label_desired)/ndata;
else
    normfro   = norm(Y-Y_hat,'fro');
    acc_test = sqrt(normfro^2/ndata);
 %   acc_test = sqrt(mse(Y-Y_hat)); 
end
nn.testlabel  = Y_hat;
nn.acc_test   = acc_test;





 

三、运行结果

在这里插入图片描述

四、matlab版本及参考文献

1 matlab版本 2014a

2 参考文献 [1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016. [2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017. [3]周品.MATLAB 神经网络设计与应用[M].清华大学出版社,2013. [4]陈明.MATLAB神经网络原理与实例精解[M].清华大学出版社,2013. [5]方清城.MATLAB R2016a神经网络设计与应用28个案例分析[M].清华大学出版社,2018. [6]王琦,关添升,秦本双.基于MRMR的ORELM的短期风速预测[j].可再生能源. 2018,36(01)