多种最小二乘算法分析算法特点总结.docx
《多种最小二乘算法分析算法特点总结.docx》由会员分享,可在线阅读,更多相关《多种最小二乘算法分析算法特点总结.docx(42页珍藏版)》请在冰点文库上搜索。
多种最小二乘算法分析算法特点总结
第一部分:
程序设计思路、辨识结果分析和算法特点总结 4
一:
RLS遗忘因子法 4
RLS遗忘因子法仿真思路和辨识结果 4
遗忘因子法的特点:
5
二:
RFF遗忘因子递推算法 6
仿真思路和辨识结果 6
遗忘因子递推算法的特点:
7
三:
RFM限定记忆法 7
仿真思路和辨识结果 7
RFM限定记忆法的特点:
9
四:
RCLS偏差补偿最小二乘法 9
仿真思路和辨识结果 9
RCLS偏差补偿最小二乘递推算法的特点:
11
五:
增广最小二乘法 11
仿真思路和辨识结果 11
RELS增广最小二乘递推算法的特点:
13
六:
RGLS广义最小二乘法 14
仿真思路和辨识结果 14
RGLS广义最小二乘法的特点:
16
七:
RIV辅助变量法 16
仿真思路和辨识结果 16
RIV辅助变量法的特点:
18
八:
Cor-ls相关最小二乘法(二步法) 19
仿真思路和辨识结果 19
Cor-ls相关最小二乘法(二步法)特点:
20
九:
MLS多级最小二乘法 21
仿真思路和辨识结果 21
MLS多级最小二乘法的特点:
24
十:
yule_walker辨识算法 24
仿真思路和辨识结果 24
yule_walker辨识算法的特点:
26
第二部分:
matlab程序 26
一:
RLS遗忘因子算法程序 26
二:
RFF遗忘因子递推算法 28
三:
RFM限定记忆法 30
四:
RCLS偏差补偿最小二乘递推算法 33
五:
RELS增广最小二乘的递推算法 35
六;RGLS广义最小二乘的递推算法 37
七:
Tally辅助变量最小二乘的递推算法 41
八:
Cor-ls相关最小二乘法(二步法) 44
九:
MLS多级最小二乘法 46
十yule_walker辨识算法 51
第一部分:
程序设计思路、辨识结果分析和算法特点总结
一:
RLS遗忘因子法
RLS遗忘因子法仿真思路和辨识结果
仿真对象如下:
其中,v(k)为服从N(0,1)分布的白噪声。
输入信号u(k)采用M序列,幅度为1。
M序列由9级移位寄存器产生,x(i)=x(i-4)⊕x(i-9)。
选择如下辨识模型:
加权阵取Λ=I。
衰减因子β=0.98,数据长度 L=402。
辨识结果与理论值比较,基本相同。
辨识结果可信:
Estimate=
-1.4666
0.6503
0.9736
0.3035
遗忘因子法的特点:
对老数据加上遗忘因子,以降低老数据对辨识的影响,相对增加新数据对辨识的影响,不会出现“数据饱和”现象。
如模型噪声是有色噪声,则?
是有偏估计量。
常用作其他辨识方式的起步,以获得其他方式的初始值。
二:
RFF遗忘因子递推算法
仿真思路和辨识结果
辨识模型与遗忘因子法所用模型相同。
其中,0≤μ≤1为遗忘因子,此处取0.98。
数据长度L=402,初始条件:
参数a1a2b1 b2的估计值:
ans=
-1.4977
0.6863
1.1903
0.4769
待估参数变化过程如图所示:
遗忘因子递推算法的特点:
从上面两个例子可以看出对于相同的仿真对象,一次算法和递推算法结果基本一致,但递推算法可以实现在线实时辨识,而且可以减少计算量和存储量。
三:
RFM限定记忆法
仿真思路和辨识结果
辨识模型与遗忘因子法所用模型相同。
辨识结果与理论值比较,基本相同。
辨识结果可信:
参数a1a2b1b2的估计值为:
Theta_a=
-1.5128
0.7099
0.8393
0.4416
待估参数的过渡过程如下:
RFM限定记忆法的特点:
辨识所使用的数据长度保持不变,每增加一个新数据就抛掉一个老数据,使参数估计值始终只依赖于有限个新数据所提供的新消息,克服了遗忘因子法不管多老的数据都在起作用的缺点,因此该算法更能有效的克服数据饱和现象。
四:
RCLS偏差补偿最小二乘法
仿真思路和辨识结果
辨识模型与遗忘因子法所用模型相同。
辨识结果与理论值比较,基本相同。
辨识结果可信:
参数a1a2b1b2的估计值为:
ans=
-1.4916
0.7005
1.0365
0.4271
RCLS偏差补偿最小二乘递推算法的特点:
算法思想:
:
在最小二乘参数估计值的基础上,引进补偿项σW2C-1D?
0,则获得了参数的无偏估计。
针对模型噪声来说,RCLS算法的适应能力比RLS更好。
五:
增广最小二乘法
仿真思路和辨识结果
考虑如下仿真对象:
其中,为服从N(0,1)分布的白噪声。
输入信号采用M序列,幅度为1。
M序列由9级移位寄存器产生,x(i)=x(i-4)⊕x(i-9)。
选择如下的辨识模型:
观测数据长度取L=402。
加权阵取Λ=I。
辨识结果与理论值比较,基本相同,同时又能获得噪声模型的参数估计。
辨识结果可信:
参数a1、a2、b1、b2、d1、d2估计结果:
ans=
-1.5000
0.7000
1.0001
0.5002
-0.9999
0.2000
RELS增广最小二乘递推算法的特点:
增广最小二乘的递推算法对应的噪声模型为滑动平均噪声,扩充了参数向量和数据向量H(k)的维数,把噪声模型的辨识同时考虑进去。
最小二乘法只能获得过程模型的参数估计,而增广最小二乘法同时又能获得噪声模型的参数估计,若噪声模型为平均滑动模型,,则只能用RELS算法才能获得无偏估计。
当数据长度较大时,辨识精度低于极大似然法。
六:
RGLS广义最小二乘法
仿真思路和辨识结果
模型结构选择:
模型结构选用:
其中,各个参数的真值为:
广义最小二乘算法为:
辨识结果与理论值比较,基本相同,同时又能获得噪声传递系数的参数估计。
辨识结果可信:
参数a1a2b1b2的估计结果:
ans=
-1.5058
0.6972
0.9316
0.4833
噪声传递系数c1c2的估计结果:
ans=
0.6203
0.2210
RGLS广义最小二乘法的特点:
该算法用于自回归输入模型,是一种迭代的算法。
其基本思想是基于对数据先进行一次滤波处理,后利用普通最小二乘法对滤波后的数据进行辨识,进而获得无偏一致估计。
但是当过程的输出信噪比比较大或模型参数较多时,这种数据白色化处理的可靠性就会下降,辨识结果往往会是有偏估计。
数据要充分多,否则辨识精度下降。
模型阶次不宜过高。
初始值对辨识结果有较大影响。
七:
RIV辅助变量法
仿真思路和辨识结果
辨识模型与遗忘因子法所用模型相同,只不过此处噪声为有色噪声,产生过程为:
e(k)=v(k)+0.5v(k-1)+0.2v(k-2),v(k)为0均值的不相关随机噪声。
按照Tally法选取辅助变量x(k)=z(k-nd),nd为误差传递函数的阶数,此处为2.则有
辅助变量法的递推公式可写成:
辨识结果与理论值比较,基本相同。
辨识结果可信:
参数a1a2b1b2的估计结果:
ans=
-1.5314
0.7461
0.9999
0.4597
RIV辅助变量法的特点:
适当选择辅助变量,使之满足相应条件,参数估计值就可以是无偏一致。
估计辅助变量法的计算量与最小二乘法相当,但辨识效果却比最小二乘法好的多。
尤其当噪声是有色的,而噪声的模型结构又不好确定时,增广最小二乘法和广义最小二乘法一般都不好直接应用,因为他们需要选用特定的模型结构,而辅助变量法不需要确定噪声的模型结构,因此辅助变量法就显得更为灵活,但辅助变量法不能同时获得噪声模型的参数估计。
八:
Cor-ls相关最小二乘法(二步法)
仿真思路和辨识结果
辨识模型与遗忘因子法所用模型相同:
,
e(k)=v(k)+0.5v(k-1)+0.2v(k-2),v(k)为0均值的不相关随机噪声。
Cor-ls的递推公式可写成:
其中:
,
M(k)为输入M序列。
初始条件:
辨识结果与理论值比较,基本相同,辨识结果可信:
参数a1a2b1b2的估计结果:
ans=
-1.4896
0.6858
1.0168
0.4362
Cor-ls相关最小二乘法(二步法)特点:
把辨识分成两步进行:
第一步:
利用相关分析法获得对象的非参数模型(脉冲响应或相关函数);第二步:
利用最小二乘法、辅助变量法或增广最小二乘法等,进一步求的对象的参数模型。
如果模型噪声与输入无关,则Cor-ls相关最小二乘法(二步法)可以得到较好的辨识结果。
Cor-ls相关最小二乘法(二步法)实质上是先对数据进行一次相关分析,滤除了有色噪声的影响,再利用最小二乘法必然就会改善辨识结果。
能适应较宽广的噪声范围,计算量不大,初始值对辨识结果影响较小。
但要求输入信号与噪声不相关。
九:
MLS多级最小二乘法
仿真思路和辨识结果
仿真对象如下:
其中,u(k)是输入变量,此处为M序列;v(k)是零均值、方差为1的不相关随机噪声,通过控制λ的大小来控制信噪比。
辨识模型结构选用:
其中,
辨识过程如下:
第一级,辅助模型参数辨识
原模型可写为:
利用最小二乘法可获得辅助模型的参数无偏一致估计值:
数据长度L=400,
第二级,过程模型参数辨识:
根据最小二乘算法可以获得过程模型的参数估计值为:
第三级,噪声模型参数辨识:
根据最小二乘算法可以获得过程模型的参数估计值为
辨识结果与理论值比较,基本相同。
辨识结果可信:
第一级辅助模型参数e1e2e3e3e4f1f2f3f4辨识结果:
E=
1.9062
1.4454
0.5279
0.0613
-0.0026
0.7988
-0.8694
-1.3037
-0.6318
第二级 过程模型参数a1a2a3b1b2辨识结果:
E2=
0.9304
0.1596
0.0113
0.7998
-1.6502
第三级噪声模型参数c1c2辨识结果:
E3=
0.9750
0.3824
MLS多级最小二乘法的特点:
当信噪比较大时,采用广义最小二乘法可能会出现多个局部收敛点,解决这个问题的方法可用多级最小二乘法,一般来说多级最小二乘法包含三级辨识过程。
利用输入输出数据,通过多级最小二乘法,可分别求的辅助模型,过程模型和噪声模型的参数估计值。
在高噪声的情况下,多级最小二乘法明显优于广义最小二乘法,其收敛点唯一。
十:
yule_walker辨识算法
仿真思路和辨识结果
仿真对象如下:
,
z(k)是可观测变量;v(k)是均值为零,方差为1的不相关随机噪声;数据长度取L=1024。
相关函数按下式计算:
参数的估计算法按下式计算:
辨识结果与理论值比较,基本相同,同时又能获得噪声模型的参数估计。
辨识结果可信:
辨识结果为:
Theta=
0.8597
0.2955
-0.0034
d=
1.0025
yule_walker辨识算法的特点:
yule_walker辨识算法可以方便的辨识形如
的参数估计值。
第二部分:
matlab程序
一:
RLS遗忘因子算法程序
clear
clc
%==========================================
%最小二乘法辨识对象
%Z(k+2)=1.5*Z(k+1)-0.7*Z(k)+u(k+1)+0.5*u(k)+v(k)
%==========产生M序列作为输入===============
x=[010110111]; %初始值
n=403;%n为脉冲数目
M=[]; %存放M序列
fori=1:
n
temp=xor(x(4),x(9));
M(i)=x(9);
forj=9:
-1:
2
x(j)=x(j-1);
end
x
(1)=temp;
end;
%产生高斯白噪声
v=randn(1,400);
z=[];
z
(1)=-1;
z
(2)=0;
u=0.98;%遗忘因子
L=400;
fori=3:
402
z(i)=1.5*z(i-1)-0.7*z(i-2)+M(i-1)+0.5*M(i-2)+v(i-2);
zstar(i)=z(i)*u^(L-i+2);
end
H=zeros(400,4);
fori=1:
400
H(i,1)=-z(i+1)*u^(L-i);
H(i,2)=-z(i)*u^(L-i);
H(i,3)=M(i+1)*u^(L-i);
H(i,4)=M(i)*u^(L-i);
end
Estimate=inv(H'*H)*H'*(zstar(3:
402))'
二:
RFF遗忘因子递推算法
%最小二乘遗忘因子的递推算法仿真对象
%Z(k+2)=1.5*Z(k+1)-0.7*Z(k)+u(k+1)+0.5*u(k)+v(k)
%========================================
clear
clc
%==========400个产生M序列作为输入===============
x=[010110111]; %initialvalue
n=403;%n为脉冲数目
M=[]; %存放M序列
fori=1:
n
temp=xor(x(4),x(9));
M(i)=x(9);
forj=9:
-1:
2
x(j)=x(j-1);
end
x
(1)=temp;
end
%===========产生均值为0,方差为1的高斯白噪声=========
v=randn(1,400);
%==============产生观测序列z=================
z=zeros(402,1);
z
(1)=-1;
z
(2)=0;
fori=3:
402
z(i)=1.5*z(i-1)-0.7*z(i-2)+M(i-1)+0.5*M(i-2)+v(i-2);
end
%==============递推求解=================
P=10*eye(4); %估计方差
Theta=zeros(4,401); %参数的估计值,存放中间过程估值
Theta(:
1)=[0.001;0.001;0.001;0.001];
K=zeros(4,400); %增益矩阵
K=[10;10;10;10];
u=0.98; %遗忘因子
fori=3:
402
h=[-z(i-1);-z(i-2);M(i-1);M(i-2)];
K=P*h*inv(h'*P*h+u);
Theta(:
i-1)=Theta(:
i-2)+K*(z(i)-h'*Theta(:
i-2));
P=(eye(4)-K*h')*P/u;
end
%==========================输出结果及作图=============================
disp('参数a1a2b1 b2的估计值:
')
Theta(:
401)
i=1:
401;
figure
(1)
plot(i,Theta(1,:
),i,Theta(2,:
),i,Theta(3,:
),i,Theta(4,:
))
title('待估参数过渡过程')
三:
RFM限定记忆法
%限定记忆最小二乘的递推算法辨识对象
%Z(k+2)=1.5*Z(k+1)-0.7*Z(k)+u(k+1)+0.5*u(k)+v(k)
%========================================
clear
clc
%==========产生M序列作为输入===============
x=[010110111]; %initialvalue
n=403;%n为脉冲数目
M=[]; %存放M序列
fori=1:
n
temp=xor(x(4),x(9));
M(i)=x(9);
forj=9:
-1:
2
x(j)=x(j-1);
end
x
(1)=temp;
end
%===========产生均值为0,方差为1的高斯白噪声=========
v=randn(1,402);
%==============产生观测序列z=================
z=zeros(402,1);
z
(1)=-1;
z
(2)=0;
fori=3:
402
z(i)=1.5*z(i-1)-0.7*z(i-2)+M(i-1)+0.5*M(i-2)+v(i);
end
%递推求解
P_a=100*eye(4); %估计方差
Theta_a=[3;3;3;3];
L=20; %记忆长度
fori=3:
L-1 %利用最小二乘递推算法获得初步参数估计值和P阵
h=[-z(i-1);-z(i-2);M(i-1);M(i-2)];
K=P_a*h*inv(h'*P_a*h+1);
Theta_a=Theta_a+K*(z(i)-h'*Theta_a);
P_a=(eye(4)-K*h')*P_a;
end
fork=0:
380
hL=[-z(k+L-1);-z(k+L-2);M(k+L-1);M(k+L-2)];%增加新数据的信息
K_b=P_a*hL*inv(1+hL'*P_a*hL);
Theta_b=Theta_a+K_b*(z(k+L)-hL'*Theta_a);
P_b=(eye(4)-K_b*hL')*P_a;
hk=[-z(k+L);-z(k+L-1);M(k+L);M(k+L-1);];%去掉老数据的信息
K_a=P_b*hk*inv(1+hk'*P_b*hk);
Theta_a=Theta_b-K_a*(z(k+L+1)-hk'*Theta_b);
P_a=(eye(4)+K_a*hk')*P_b;
Theta_Store(:
k+1)=Theta_a;
end
%========================输出结果及作图===========================
disp('参数a1a2b1b2的估计值为:
')
Theta_a
i=1:
381;
figure
(1)
plot(i,Theta_Store(1,:
),i,Theta_Store(2,:
),i,Theta_Store(3,:
),i,Theta_Store(4,:
))
title('待估参数过渡过程')
四:
RCLS偏差补偿最小二乘递推算法
%偏差补偿最小二乘的递推算法辨识对象
%Z(k+2)=1.5*Z(k+1)-0.7*Z(k)+u(k+1)+0.5*u(k)+v(k)
%========================================
clear
clc
%==========产生M序列作为输入===============
x=[010110111]; %initialvalue
n=403;%n为脉冲数目
M=[]; %存放M序列
fori=1:
n
temp=xor(x(4),x(9));
M(i)=x(9);
forj=9:
-1:
2
x(j)=x(j-1);
end
x
(1)=temp;
end
%===========产生均值为0,方差为1的正态分布噪声=========
v=random('Normal',0,1,1,400);
%==============产生观测序列z=================
z=zeros(402,1);
z
(1)=-1;
z
(2)=0;
fori=3:
402
z(i)=1.5*z(i-1)-0.7*z(i-2)+M(i-1)+0.5*M(i-2)+v(i-2);
end
%===================递推求解==================
%赋初值
P=100*eye(4); %估计方差
Theta=zeros(4,401); %参数的估计值,存放中间过程估值
Theta(:
1)=[3;3;3;3];
K=[10;10;10;10]; %增益
J=0;
ThetaC=zeros(4,401); %偏差补偿后的估计值
ThetaC(:
1)=[2;3;1;3.5];
D=[1000;0100;0000;0000];
fori=3:
402
h=[-z(i-1);-z(i-2);M(i-1);M(i-2)];
J=J+(z(i-1)-h'*Theta(:
i-1))^2/(1+h'*P*h);
K=P*h*inv(h'*P*h+1);
Theta(:
i-1)=Theta(:
i-2)+K*(z(i)-h'*Theta(:
i-2));
P=(eye(4)-K*h')*P;
end
es=J/((i-1)*(1+(ThetaC(:
i-2))'*D*Theta(:
i-1)));
ThetaC(:
i-1)=Theta(:
i-1)+(i-1)*es*P*D*ThetaC(:
i-2);
%==============输出参数估计结果及作图================
disp('参数a1a2b1b2的估计值为:
')
Theta(:
401)
i=1:
401;
figure
(1)
plot(i,Theta(1,:
),i,Theta(2,:
),i,Theta(3,:
),i,Theta(4,:
))
title('待估参数过渡过程')
五:
RELS增广最小二乘的递推算法
%增广最小二乘的递推算法辨识对象
%Z(k+2)=1.5*Z(k+1)-0.7*Z(k)+u(k+1)+0.5*u(k)-v(k+1)+0.2*v(k)
%========================================
clear
clc
%==========产生M序列作为输入===============
x=[010110111]; %initialvalue
n=403;%n为脉冲数目
M=[]; %存放M序列
fori=1:
n
temp=xor(x(4),x(9));
M(i)=x(9);
forj=9:
-1:
2
x(j)=x(j-1);
end
x
(1)=temp;
end
%===========产生均值为0,方差为1的高斯白噪声=========
v=randn(1,402);
%==============产生观测序列z=================
z=zeros(402,1);
z
(1)=-1;
z
(2)=0;
fori=3:
402
z(i)=