【DELM分類】基于天鷹算法改進深度學(xué)習(xí)極限學(xué)習(xí)機實現(xiàn)數(shù)據(jù)分類附matlab代碼
1 簡介
人工神經(jīng)網(wǎng)絡(luò)的最大缺點是訓(xùn)練時間太長從而限制其實時應(yīng)用范圍,近年來,極限學(xué)習(xí)機(Extreme Learning Machine, ELM)的提出使得前饋神經(jīng)網(wǎng)絡(luò)的訓(xùn)練時間大大縮短,然而當(dāng)原始數(shù)據(jù)混雜入大量噪聲變量時,或者當(dāng)輸入數(shù)據(jù)維度非常高時,極限學(xué)習(xí)機算法的綜合性能會受到很大的影響.深度學(xué)習(xí)算法的核心是特征映射,它能夠摒除原始數(shù)據(jù)中的噪聲,并且當(dāng)向低維度空間進行映射時,能夠很好的起到對數(shù)據(jù)降維的作用,因此我們思考利用深度學(xué)習(xí)的優(yōu)勢特性來彌補極限學(xué)習(xí)機的弱勢特性從而改善極限學(xué)習(xí)機的性能.為了進一步提升DELM預(yù)測精度,本文采用麻雀搜索算法進一步優(yōu)化DELM超參數(shù),仿真結(jié)果表明,改進算法的預(yù)測精度更高。





2 部分代碼
%_______________________________________________________________________________________%
%_______________________________________________________________________________________%
function [Best_FF,Best_P,conv]=AO(N,T,LB,UB,Dim,F_obj)
Best_P=zeros(1,Dim);
Best_FF=inf;
X=initialization(N,Dim,UB,LB);
Xnew=X;
Ffun=zeros(1,size(X,1));
Ffun_new=zeros(1,size(Xnew,1));
t=1;
alpha=0.1;
delta=0.1;
while t<T+1
? ?for i=1:size(X,1)
? ? ? ?F_UB=X(i,:)>UB;
? ? ? ?F_LB=X(i,:)<LB;
? ? ? ?X(i,:)=(X(i,:).*(~(F_UB+F_LB)))+UB.*F_UB+LB.*F_LB;
? ? ? ?Ffun(1,i)=F_obj(X(i,:));
? ? ? ?if Ffun(1,i)<Best_FF
? ? ? ? ? ?Best_FF=Ffun(1,i);
? ? ? ? ? ?Best_P=X(i,:);
? ? ? ?end
? ?end
? ?G2=2*rand()-1; % Eq. (16)
? ?G1=2*(1-(t/T)); ?% Eq. (17)
? ?to = 1:Dim;
? ?u = .0265;
? ?r0 = 10;
? ?r = r0 +u*to;
? ?omega = .005;
? ?phi0 = 3*pi/2;
? ?phi = -omega*to+phi0;
? ?x = r .* sin(phi); ?% Eq. (9)
? ?y = r .* cos(phi); % Eq. (10)
? ?QF=t^((2*rand()-1)/(1-T)^2); % Eq. (15)
? ? ? ?%-------------------------------------------------------------------------------------
? ?for i=1:size(X,1)
? ? ? ?%-------------------------------------------------------------------------------------
? ? ? ?if t<=(2/3)*T
? ? ? ? ? ?if rand <0.5
? ? ? ? ? ? ? ?Xnew(i,:)=Best_P(1,:)*(1-t/T)+(mean(X(i,:))-Best_P(1,:))*rand(); % Eq. (3) and Eq. (4)
? ? ? ? ? ? ? ?Ffun_new(1,i)=F_obj(Xnew(i,:));
? ? ? ? ? ? ? ?if Ffun_new(1,i)<Ffun(1,i)
? ? ? ? ? ? ? ? ? ?X(i,:)=Xnew(i,:);
? ? ? ? ? ? ? ? ? ?Ffun(1,i)=Ffun_new(1,i);
? ? ? ? ? ? ? ?end
? ? ? ? ? ?else
? ? ? ? ? ? ? ?%-------------------------------------------------------------------------------------
? ? ? ? ? ? ? ?Xnew(i,:)=Best_P(1,:).*Levy(Dim)+X((floor(N*rand()+1)),:)+(y-x)*rand; ? ? ? % Eq. (5)
? ? ? ? ? ? ? ?Ffun_new(1,i)=F_obj(Xnew(i,:));
? ? ? ? ? ? ? ?if Ffun_new(1,i)<Ffun(1,i)
? ? ? ? ? ? ? ? ? ?X(i,:)=Xnew(i,:);
? ? ? ? ? ? ? ? ? ?Ffun(1,i)=Ffun_new(1,i);
? ? ? ? ? ? ? ?end
? ? ? ? ? ?end
? ? ? ? ? ?%-------------------------------------------------------------------------------------
? ? ? ?else
? ? ? ? ? ?if rand<0.5
? ? ? ? ? ? ? ?Xnew(i,:)=(Best_P(1,:)-mean(X))*alpha-rand+((UB-LB)*rand+LB)*delta; ? % Eq. (13)
? ? ? ? ? ? ? ?Ffun_new(1,i)=F_obj(Xnew(i,:));
? ? ? ? ? ? ? ?if Ffun_new(1,i)<Ffun(1,i)
? ? ? ? ? ? ? ? ? ?X(i,:)=Xnew(i,:);
? ? ? ? ? ? ? ? ? ?Ffun(1,i)=Ffun_new(1,i);
? ? ? ? ? ? ? ?end
? ? ? ? ? ?else
? ? ? ? ? ? ? ?%-------------------------------------------------------------------------------------
? ? ? ? ? ? ? ?Xnew(i,:)=QF*Best_P(1,:)-(G2*X(i,:)*rand)-G1.*Levy(Dim)+rand*G2; % Eq. (14)
? ? ? ? ? ? ? ?Ffun_new(1,i)=F_obj(Xnew(i,:));
? ? ? ? ? ? ? ?if Ffun_new(1,i)<Ffun(1,i)
? ? ? ? ? ? ? ? ? ?X(i,:)=Xnew(i,:);
? ? ? ? ? ? ? ? ? ?Ffun(1,i)=Ffun_new(1,i);
? ? ? ? ? ? ? ?end
? ? ? ? ? ?end
? ? ? ?end
? ?end
? ?%-------------------------------------------------------------------------------------
? ?if mod(t,100)==0
? ? ? ?display(['At iteration ', num2str(t), ' the best solution fitness is ', num2str(Best_FF)]);
? ?end
? ?conv(t)=Best_FF;
? ?t=t+1;
end
end
function o=Levy(d)
beta=1.5;
sigma=(gamma(1+beta)*sin(pi*beta/2)/(gamma((1+beta)/2)*beta*2^((beta-1)/2)))^(1/beta);
u=randn(1,d)*sigma;v=randn(1,d);step=u./abs(v).^(1/beta);
o=step;
end
3 仿真結(jié)果

4 參考文獻
[1]馬萌萌. 基于深度學(xué)習(xí)的極限學(xué)習(xí)機算法研究[D]. 中國海洋大學(xué), 2015.
博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測、信號處理、元胞自動機、圖像處理、路徑規(guī)劃、無人機等多種領(lǐng)域的Matlab仿真,相關(guān)matlab代碼問題可私信交流。
部分理論引用網(wǎng)絡(luò)文獻,若有侵權(quán)聯(lián)系博主刪除。
