您好,登錄后才能下訂單哦!
本篇文章為大家展示了基于BP_Adaboost的強分類器設計是怎樣的,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
Adaboost是一種迭代算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然后把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。
其算法本身是通過改變數據分布來實現的,它根據每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的準確率,來確定每個樣本的權值。將修改過權值的新數據集送給下層分類器進行訓練,最后將每次訓練得到的分類器融合起來,作為最后的決策分類器。
這里采用BP神經網絡作為弱分類器,反復訓練BP神經網絡預測樣本輸出,通過Adaboost算法得到多個BP神經網絡弱分類器組成的強分類器。
%%清空環境變量
clc
clear
%% 下載數據
load data input_train output_train input_test output_test
%% 權重初始化
[mm,nn]=size(input_train);
D(1,:)=ones(1,nn)/nn;
%% 弱分類器分類
K=10;
for i=1:K
%訓練樣本歸一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);
error(i)=0;
%BP神經網絡構建
net=newff(inputn,outputn,6);
net.trainParam.epochs=5;
net.trainParam.lr=0.1;
net.trainParam.goal=0.00004;
%BP神經網絡訓練
net=train(net,inputn,outputn);
%訓練數據預測
an1=sim(net,inputn);
test_simu1(i,:)=mapminmax('reverse',an1,outputps);
%測試數據預測
inputn_test =mapminmax('apply',input_test,inputps);
an=sim(net,inputn_test);
test_simu(i,:)=mapminmax('reverse',an,outputps);
%統計輸出效果
kk1=find(test_simu1(i,:)>0);
kk2=find(test_simu1(i,:)<0);
aa(kk1)=1;
aa(kk2)=-1;
%統計錯誤樣本數
for j=1:nn
if aa(j)~=output_train(j)
error(i)=error(i)+D(i,j);
end
end
%弱分類器i權重
at(i)=0.5*log((1-error(i))/error(i));
%更新D值
for j=1:nn
D(i+1,j)=D(i,j)*exp(-at(i)*aa(j)*test_simu1(i,j));
end
%D值歸一化
Dsum=sum(D(i+1,:));
D(i+1,:)=D(i+1,:)/Dsum;
end
%% 強分類器分類結果
output=sign(at*test_simu);
%% 分類結果統計
%統計強分類器每類分類錯誤個數
kkk1=0;
kkk2=0;
for j=1:350
if output(j)==1
if output(j)~=output_test(j)
kkk1=kkk1+1;
end
end
if output(j)==-1
if output(j)~=output_test(j)
kkk2=kkk2+1;
end
end
end
disp('第一類分類錯誤 第二類分類錯誤 總錯誤');
% 窗口顯示
disp([kkk1 kkk2 kkk1+kkk2]);
plot(output)
hold on
plot(output_test,'g')
%統計弱分離器效果
for i=1:K
error1(i)=0;
kk1=find(test_simu(i,:)>0);
kk2=find(test_simu(i,:)<0);
aa(kk1)=1;
aa(kk2)=-1;
for j=1:350
if aa(j)~=output_test(j)
error1(i)=error1(i)+1;
end
end
end
disp('統計弱分類器分類效果');
disp(error1)
disp('強分類器分類誤差率')
disp((kkk1+kkk2)/350)
disp('弱分類器分類誤差率')
disp((sum(error1)/(K*350)))
上述內容就是基于BP_Adaboost的強分類器設計是怎樣的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。