完整word版多种最小二乘算法分析+算法特点总结.docx
《完整word版多种最小二乘算法分析+算法特点总结.docx》由会员分享,可在线阅读,更多相关《完整word版多种最小二乘算法分析+算法特点总结.docx(45页珍藏版)》请在冰点文库上搜索。
![完整word版多种最小二乘算法分析+算法特点总结.docx](https://file1.bingdoc.com/fileroot1/2023-8/3/f1d6a356-1004-458e-b045-fc0c0073d604/f1d6a356-1004-458e-b045-fc0c0073d6041.gif)
完整word版多种最小二乘算法分析+算法特点总结
第一部分:
程序设计思路、辨识结果分析和算法特点总结
一:
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,初始条件:
参数a1a2b1b2的估计值:
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('参数a1a2b1b2的估计值:
’)
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)=1.5*z(i-1)—0。
7*z(i-2)+M(i—1)+0.5*M(i-2)—v(i-1)+0。
2*v(i—2);
end
%递推求解
P=100*eye(6);%估计方差
Theta=zeros(6,401);%参数的估计值,存放中间过程估值
Theta(:
1)=[3;3;3;3;3;3];
%K=zeros(4,400);%增益矩阵
K=[10;10;10;10;10;10];
fori=3:
402
h=[—z(i—1);—z(i—2);M(i—1);M(i-2);v(i—1);v(i-2)];
K=P*h*inv(h'*P*h+1);
Theta(:
i—1)=Theta(:
i-2)+K*(z(i)—h’*Theta(:
,i-2));
P=(eye(6)—K*h')*P;
end
%=======================================================================
disp('参数a1、a2、b1、b2、d1、d2估计结果:
')
Theta(:
,401)
i=1:
401;
figure
(1)
plot(i,Theta(1,:
),i,Theta(2,:
),i,Theta(3,:
),i,Theta(4,:
),i,Theta(5,:
),i,Theta(6,:
))
title(’待估参数过渡过程’)
六;RGLS广义最小二乘的递推算法
%广义最小二乘的递推算法仿真模型
%Z(k+2)=1。
5*Z(k+1)—0.7*Z(k)+u(k+1)+0。
5*u(k)+e(k)
%e(k+2)+2.1*e(k+1)-2.5*e(k)=v(k+2)
%========================================
clear
clc
%==========400个产生M序列作为输入===============
x=[010110111];%in