天天看點

基于RBF網絡的信任值預測算法matlab仿真實作

·目錄

​​一、理論基礎​​

​​二、核心程式​​

​​三、測試結果​​

一、理論基礎

     測試的資料集有三種趨勢型(trend),周期型(seasonal)還有混亂型的(noisy data)。三種類型要做訓練集增加的測試(increasing testing set),測試集增加的測試(increasing testing set)和選擇點測試(the optional point). 其中得出預測信任值(見照片圖表)。

測試标準有4個:

1.誤方差(mean squared error)小于1.  

2.标準差(standard deviation)

3.标準差率(standard Deviation Ratio)即預測标準差除以實際标準差,小于1.0.  

4.皮爾遜相關系數 person’s correlation coefficient -1到1.

       RBF神經網絡是一種三層神經網絡,包括輸入層、隐層、輸出層。從輸入空間到隐層空間的變換是非線性的,而從隐層空間到輸出層空間的變換是線性的。

基于RBF網絡的信任值預測算法matlab仿真實作

       RBF網絡是一種局部逼近網絡,對于每個訓練祥本,它隻需要對少量的權值和門檻值進行修正,是以訓練速度快。RBF神将網絡是一種三層神經網絡,其包括輸入層、隐層、輸出層。從輸入空間到隐層空間的變換是非線性的,而從隐層空間到輸出層空間變換是線性的。RBF網絡的基本思想是:用RBF作為隐單元的“基”構成隐含層空間,這樣就可以将輸入矢量直接映射到隐空間,而不需要通過權連接配接。當RBF的中心點确定以後,這種映射關系也就确定了。而隐含層空間到輸出空間的映射是線性的,即網絡的輸出是隐單元輸出的線性權重和,此處的權即為網絡可調參數。

二、核心程式

clc;
clear;
close all;
warning off;


load data1.mat

%%
%選擇100個資料作為輸入
Data = data1(1:100);

%%
%選擇20個訓練資料
t11         = 1:10;
Train_data1 = Data(1:10);
t12         = 1:10;

spread = 1;
goal   = 0.01;
df     = 1;
mn     = length(t11);
net    = newrb(t11,Train_data1,goal,spread,mn,df); 

yc1    = sim(net,t12);

 

%%
%選擇70個訓練資料
t21         = 1:60;
Train_data2 = Data(1:60);
t22         = 1:60;

spread = 1;
goal   = 0.01;
df     = 1;
mn     = length(t21);
net    = newrb(t22,Train_data2,goal,spread,mn,df); 
yc2    = sim(net,t22);

figure;
plot(t21,Train_data2,'b-o');
hold on;
plot(t22,yc2,'r-*');
hold off;
grid on;



%%
%%對比計算結果
mser11 = func_mse(Train_data1);
mser12 = func_mse(yc1);
sder1  = func_sd(yc1);
sdrer1 = func_sdr(yc1,Train_data1);
coeff1 = func_pcc(yc1,Train_data1);

fprintf('Inputs    Train data points    MSE training    MSE testing     PCC         SDR         SD\n');
fprintf('-----------------------------------------------------------------------------------------------\n');
fprintf('100       20                   ');
fprintf('%2.6f        ',mser11);
fprintf('%2.6f        ',mser12);
fprintf('%2.6f    ',coeff1);
fprintf('%2.6f    ',sdrer1);
fprintf('%2.6f    ',sder1);
fprintf('\n');
fprintf('-----------------------------------------------------------------------------------------------\n');

mser21 = func_mse(Train_data2);
mser22 = func_mse(yc2);
sder2  = func_sd(yc2);
sdrer2 = func_sdr(yc2,Train_data2);
coeff2 = func_pcc(yc2,Train_data2);

fprintf('100       70                   ');
fprintf('%2.6f        ',mser21);
fprintf('%2.6f        ',mser22);
fprintf('%2.6f    ',coeff2);
fprintf('%2.6f    ',sdrer2);
fprintf('%2.6f    ',sder2);
fprintf('\n');
fprintf('-----------------------------------------------------------------------------------------------\n');


%%
%下面的程式是畫圖
cnt = 0;
for i = 10:2:60
    i
    cnt         = cnt + 1;
    t01         = 1:i;
    Train_data0 = Data(1:i);
    t02         = 1:i;
    spread      = 1;
    goal        = 0.01;
    df          = 1;
    mn          = length(t01);
    net         = newrb(t02,Train_data0,goal,spread,mn,df); 
    yc0         = sim(net,t02);
    %%
    %%對比計算結果
    mser01(cnt) = func_mse(Train_data0);
    mser02(cnt) = func_mse(yc0);
    sder0(cnt)  = func_sd(yc0);
    sdrer0(cnt) = func_sdr(yc0,Train_data0);   
end

figure;
plot(10:2:60,mser01,'b-o');hold on;
plot(10:2:60,mser02,'r-^');hold on;
plot(10:2:60,sder0,'k-o');hold on;
plot(10:2:60,sdrer0,'m-*');hold on;
grid on;
legend('MSER1','MSER2','SD','SDR');
xlabel('training increasing');
ylabel('error value');      

三、測試結果

基于RBF網絡的信任值預測算法matlab仿真實作
基于RBF網絡的信任值預測算法matlab仿真實作
基于RBF網絡的信任值預測算法matlab仿真實作

繼續閱讀