正规化的定义:我是这样认为的。 规范化是指在处理了你需要处理的数据后,(通过某种算法)将其限制在你需要的一定范围内。 首先,正规化是为了便于后面的数据处理,其次,保正程序执行时的收敛变快。
在matlab中,用于归一化的方法共有三种:
)1) premnmx、postmnmx、tramnmx
)2) prestd、poststd、trastd
)3)是用matlab语言自己编程。
premnmx是指归属于[-1 1],prestd归属于单位方差和零均值。 )3)关于自己的编程,一般归结为[0.10.9]。 具体使用方法请参照以下示例。
为什么要使用正规化呢? 首先,我将说明一个称为奇异样本数据的概念。 奇异样本数据是相对于其他输入样本特别大或特别小的样本向量。
以下是一个示例:
m=[0.11 0.15 0.32 0.45 30;
0.13 0.24 0.27 0.25 45];
其中第5列的数据是对其他4列数据特异的样本数据(以下称为网络平均值bp )。 由于存在异常样本数据而增加网络训练时间可能会导致网络不收敛,因此希望在训练之前以先进形式对存在针对训练样本的异常样本数据的数据集进行规范化,如果不存在异常样本数据,则预先对数据集进行规范化
具体示例:
关闭全部
清除器
echo on
clc
%BP建模
%原始数据规范化
m _ data=[ 1047.921047.830.390.39 (1.035005075;
1047.831047.680.390.401.034524912;
1047.681047.520.400.41.034044749;
1047.521047.270.410.421.033564586;
1047.271047.410.420.431.033084423;
1046.731046.74.701.80.7527332465;
046.741046.821.801.780.7524192185;
1046.821046.731.781.750.7521051905;
1046.731046.481.751.850.7017911625;
046.481046.031.851.820.7014771345;
1046.031045.331.821.680.7011631065;
1045.331044.951.681.710.70849785;
1044.951045.211. 711.720.70533508;
1045.21 1045.641.721.70 0.70 567526;
045.641045.441.701.690.70601544;
1045.441045.781.691.690.70635562;
1045.781046.201.691.520.75667580 ];
%定义网络输入p和期望输出t
pause
clc
p1=m_data(:1:5;
t1=m_data(:6:7 );
p=p1 '; t=t1 ';
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t ) ]
%设置网络消隐单元的神经元数(5~30验证后5个最好) ) ) ) ) ) ) ) ) ) ) ) )。
n=5;
%构建合适的BP网络
pause
clc
net=newff(minmax(pn )、[n,2]、{'tansig '、' purelin'}、' traingdm ' );
input weights=net.iw { 1,1 };
inputbias=net.b{1};
layer weights=net.iw { 1,1 };
layerbias=net.b{2};
pause
clc
%培训网络
net.trainParam.show=50;
net.trainParam.lr=0.05;
net.trainParam.mc=0.9;
net.trainParam.epochs=200000;
net.trainParam.goal=1e-3;
pause
clc
调用TRAINGDM算法训练BP网络
net=train(net,pn,tn );
%BP网络的模拟
a=sim(net,pn );
E=A-tn;
m=SSE(e )
n=MSE(e )
pause
clc
p2=[ 1046.201046.051.521.5380.75;
1046.05 1046.85 1.538 1.510 0.75;
1046.85 1046.60 1.510 1.408 0.75;
1046.60 1046.77 1.408 1.403 0.75;
1046.77 1047.18 1.403 1.319 0.75];
p2=p2 ';
P2N=tramnmx(P2,minp,maxp );
a2n=sim(net,p2n );
a2=postmnmx(a2n、mint、maxt ) )。
ECho关闭
pause
clc
步骤说明:使用的样本数据(见m_data )包括输入数据和输出数据,首先进行归一化。 另一个问题是进行预测的样本数据(见本例p2 )在进行模拟之前,必须先用tramnmx函数进行归一化处理,然后用于预测,最后的模拟结果必须用postmnmx进行逆归一化。 需要此时输出数据
我个人认为谭世格、纯Lin、logsig是网络结构的传递函数,本身与规范化没有直接关系,规范化只是一种数据预处理方法。