回歸預(yù)測(cè) | MATLAB實(shí)現(xiàn)基于SVM-RFE-BP支持向量機(jī)遞歸特征消除特征選擇算法結(jié)合BP神經(jīng)網(wǎng)絡(luò)的多輸入單輸出回歸預(yù)測(cè)
預(yù)測(cè)效果
基本介紹
MATLAB實(shí)現(xiàn)基于SVM-RFE-BP支持向量機(jī)遞歸特征消除特征選擇算法結(jié)合BP神經(jīng)網(wǎng)絡(luò)的多輸入單輸出回歸預(yù)測(cè),輸出為選擇的特征序號(hào)
Chinese:
Options:可用的選項(xiàng)即表示的涵義如下
-s svm類型:SVM設(shè)置類型(默認(rèn)0)
0 – C-SVC
1 --v-SVC
2 – 一類SVM
3 – e -SVR
4 – v-SVR
-t 核函數(shù)類型:核函數(shù)設(shè)置類型(默認(rèn)2)
0 – 線性:u’v
1 – 多項(xiàng)式:(ru’v + coef0)^degree
2 – RBF函數(shù):exp(-r|u-v|^2)
3 –sigmoid:tanh(ru’v + coef0)
經(jīng)過特征選擇后,保留特征的序號(hào)為:
126 160 161 163 165 166 237 239 240 370
評(píng)價(jià)結(jié)果如下所示:
平均絕對(duì)誤差MAE為:0.27933
均方誤差MSE為: 0.15813
均方根誤差RMSEP為: 0.39765
決定系數(shù)R^2為: 0.93392
剩余預(yù)測(cè)殘差RPD為: 4.2631
平均絕對(duì)百分比誤差MAPE為: 0.0032299
研究內(nèi)容
基于SVM-RFE-BP的特征選擇算法結(jié)合BP神經(jīng)網(wǎng)絡(luò)的多輸入單輸出回歸預(yù)測(cè)是一種結(jié)合了支持向量機(jī)遞歸特征消除(SVM-RFE)和反向傳播(BP)神經(jīng)網(wǎng)絡(luò)的方法。下面是算法的基本步驟:
數(shù)據(jù)準(zhǔn)備:準(zhǔn)備包含多個(gè)輸入特征和一個(gè)輸出變量的訓(xùn)練數(shù)據(jù)集。確保數(shù)據(jù)集已經(jīng)進(jìn)行了預(yù)處理和標(biāo)準(zhǔn)化。
特征選擇:使用SVM-RFE算法對(duì)輸入特征進(jìn)行排序和選擇。SVM-RFE是一種遞歸特征消除算法,它通過反復(fù)訓(xùn)練支持向量機(jī)(SVM)模型,并剔除最不重要的特征,直到達(dá)到指定的特征數(shù)量或達(dá)到某個(gè)停止準(zhǔn)則。
特征提取:使用SVM-RFE選擇的特征作為輸入,從訓(xùn)練數(shù)據(jù)集中提取這些特征。
神經(jīng)網(wǎng)絡(luò)構(gòu)建:構(gòu)建一個(gè)BP神經(jīng)網(wǎng)絡(luò)模型,該模型具有適當(dāng)?shù)妮斎雽印㈦[藏層和輸出層。輸入層的節(jié)點(diǎn)數(shù)量應(yīng)與選擇的特征數(shù)量相同,輸出層的節(jié)點(diǎn)數(shù)量為1。
神經(jīng)網(wǎng)絡(luò)訓(xùn)練:使用特征提取的數(shù)據(jù)作為輸入,將輸出變量作為目標(biāo),對(duì)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。使用反向傳播算法來更新網(wǎng)絡(luò)的權(quán)重和偏置,以最小化預(yù)測(cè)輸出與實(shí)際輸出之間的誤差。
預(yù)測(cè):使用訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)模型對(duì)新的輸入特征進(jìn)行預(yù)測(cè)。將這些特征輸入到訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)中,得到對(duì)應(yīng)的輸出。
這種基于SVM-RFE-BP的方法可以結(jié)合支持向量機(jī)的特征選擇能力和神經(jīng)網(wǎng)絡(luò)的非線性建模能力,提高回歸預(yù)測(cè)的性能和準(zhǔn)確性。然而,需要注意的是,該方法的效果取決于數(shù)據(jù)集的特征和特征選擇的參數(shù)設(shè)置,因此在實(shí)際應(yīng)用中需要進(jìn)行適當(dāng)?shù)恼{(diào)優(yōu)和驗(yàn)證。文章來源:http://www.zghlxwxcb.cn/news/detail-630345.html
程序設(shè)計(jì)
- 完整源碼和數(shù)據(jù)獲取方式1:私信博主回復(fù)SVM-RFE-BP回歸或同等價(jià)值程序兌換;
- 完整程序和數(shù)據(jù)下載方式2(資源處直接下載):MATLAB實(shí)現(xiàn)基于SVM-RFE-BP支持向量機(jī)遞歸特征消除特征選擇算法結(jié)合BP神經(jīng)網(wǎng)絡(luò)的多輸入單輸出回歸預(yù)測(cè)
- 完整程序和數(shù)據(jù)下載方式3(訂閱《智能學(xué)習(xí)》專欄,同時(shí)獲取《智能學(xué)習(xí)》專欄收錄程序4份,數(shù)據(jù)訂閱后私信我獲取):MATLAB實(shí)現(xiàn)基于SVM-RFE-BP支持向量機(jī)遞歸特征消除特征選擇算法結(jié)合BP神經(jīng)網(wǎng)絡(luò)的多輸入單輸出回歸預(yù)測(cè),專欄外只能獲取該程序。
%% 輸出選擇特征的對(duì)應(yīng)序號(hào)
disp('經(jīng)過特征選擇后,保留特征的序號(hào)為:')
disp(save_index)
%% 特征選擇后的數(shù)據(jù)集
p_train = p_train(:, save_index);
p_test = p_test (:, save_index);
%% 矩陣轉(zhuǎn)置適應(yīng)模型
p_train = p_train'; p_test = p_test';
t_train = t_train'; t_test = t_test';
%% 創(chuàng)建網(wǎng)絡(luò)
%% 設(shè)置訓(xùn)練參數(shù)
net.trainParam.epochs = 1000; % 最大迭代次數(shù)
%% 仿真測(cè)試
t_sim1 = sim(net, p_train);
t_sim2 = sim(net, p_test );
%% 數(shù)據(jù)反歸一化
T_sim1 = mapminmax('reverse', t_sim1, ps_output);
T_sim2 = mapminmax('reverse', t_sim2, ps_output);
%% 測(cè)試集結(jié)果
figure;
plotregression(T_test,T_sim2,['回歸圖']);
figure;
ploterrhist(T_test-T_sim2,['誤差直方圖']);
%% 均方根誤差 RMSE
error1 = sqrt(sum((T_sim1 - T_train).^2)./M);
error2 = sqrt(sum((T_test - T_sim2).^2)./N);
%%
%決定系數(shù)
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;
%%
%均方誤差 MSE
mse1 = sum((T_sim1 - T_train).^2)./M;
mse2 = sum((T_sim2 - T_test).^2)./N;
%%
%RPD 剩余預(yù)測(cè)殘差
SE1=std(T_sim1-T_train);
RPD1=std(T_train)/SE1;
SE=std(T_sim2-T_test);
RPD2=std(T_test)/SE;
%% 平均絕對(duì)誤差MAE
MAE1 = mean(abs(T_train - T_sim1));
MAE2 = mean(abs(T_test - T_sim2));
%% 平均絕對(duì)百分比誤差MAPE
MAPE1 = mean(abs((T_train - T_sim1)./T_train));
MAPE2 = mean(abs((T_test - T_sim2)./T_test));
%% 訓(xùn)練集繪圖
figure
%plot(1:M,T_train,'r-*',1:M,T_sim1,'b-o','LineWidth',1)
plot(1:M,T_train,'r-*',1:M,T_sim1,'b-o','LineWidth',1.5)
legend('真實(shí)值','SVM-RFE預(yù)測(cè)值')
xlabel('預(yù)測(cè)樣本')
ylabel('預(yù)測(cè)結(jié)果')
%% 預(yù)測(cè)集繪圖
figure
plot(1:N,T_test,'r-*',1:N,T_sim2,'b-o','LineWidth',1.5)
legend('真實(shí)值','SVM-RFE預(yù)測(cè)值')
xlabel('預(yù)測(cè)樣本')
ylabel('預(yù)測(cè)結(jié)果')
%% 測(cè)試集誤差圖
figure
ERROR3=T_test-T_sim2;
plot(T_test-T_sim2,'b-*','LineWidth',1.5)
%% 繪制線性擬合圖
%% 訓(xùn)練集擬合效果圖
figure
plot(T_train,T_sim1,'*r');
xlabel('真實(shí)值')
ylabel('預(yù)測(cè)值')
title(string)
hold on ;h=lsline;
set(h,'LineWidth',1,'LineStyle','-','Color',[1 0 1])
%% 預(yù)測(cè)集擬合效果圖
figure
plot(T_test,T_sim2,'ob');
xlabel('真實(shí)值')
ylabel('預(yù)測(cè)值')
string1 = {'測(cè)試集效果圖';['R^2_p=' num2str(R2) ' RMSEP='
set(h,'LineWidth',1,'LineStyle','-','Color',[1 0 1])
%% 求平均
R3=(R1+R2)./2;
error3=(error1+error2)./2;
%% 總數(shù)據(jù)線性預(yù)測(cè)擬合圖
tsim=[T_sim1,T_sim2]';
S=[T_train,T_test]';
figure
plot(S,tsim,'ob');
xlabel('真實(shí)值')
ylabel('預(yù)測(cè)值')
參考資料
[1] https://blog.csdn.net/kjm13182345320/article/details/128577926?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/kjm13182345320/article/details/128573597?spm=1001.2014.3001.5501文章來源地址http://www.zghlxwxcb.cn/news/detail-630345.html
到了這里,關(guān)于回歸預(yù)測(cè) | MATLAB實(shí)現(xiàn)基于SVM-RFE-BP支持向量機(jī)遞歸特征消除特征選擇算法結(jié)合BP神經(jīng)網(wǎng)絡(luò)的多輸入單輸出回歸預(yù)測(cè)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!