批次的最小二乘是给定一批数据比如 {yi∈R,xi∈Rn,i=1,...,N}\{y_i\in\mathbb{R},x_i\in \mathbb{R}^n,i=1,...,N\}{yi∈R,xi∈Rn,i=1,...,N},满足yi=xiTθ
y_i = x_i^T\theta yi=xiTθ 从而辨识 n×1n \times 1n×1维参数向量 θ=[θ1,...,θn]\theta = [\theta_1,...,\theta_n]θ=[θ1,...,θn]
写成紧凑的形式为YN=XNθ
Y_N = X_N \theta YN=XNθ 其中 YN∈RNY_N\in \mathbb{R}^NYN∈RN,XNX_NXN 是个 N×nN\times nN×n 的矩阵,每一行对应一个 xiTx_i^TxiT
估计的参数 θ^\hat{\theta}θ^ 越准,则模型的预测值 XNθ^X_N\hat{\theta}XNθ^ 的结果越接近 YNY_NYN,因此我们的目标是最小化估计的误差minimize∣∣YN−XNθ^∣∣2
minimize ||Y_N - X_N\hat{\theta}||_2 minimize∣∣YN−XNθ^∣∣2对 θ^\hat{\theta}θ^ 求导XNT(YN−XNθ^)=0XNTYN−XNTXNθ^=0
X_N^T(Y_N-X_N\hat{\theta})=0\\
X_N^TY_N-X_N^TX_N\hat{\theta}=0XNT(YN−XNθ^)=0XNTYN−XNTXNθ^=0 得到 (1)θ^=(XNTXN)−1XNTYN
\hat{\theta} = (X_N^TX_N)^{-1}X_N^TY_N \tag{1}θ^=(XNTXN)−1XNTYN(1) 也就是说如果在 ttt 时刻有了 NNN 组数据,我们就可以用 (1)(1)(1) 来辨识模型参数 θ^t\hat{\theta}_tθ^t。
那么问题来了,每个时刻会有新的数据进来,都这么一搞也太折腾了,于是有了递推最小二乘,目的在于每步更新模型参数是基于上一时刻的模型参数以及这一时刻的数据进行修正,即
θ^t=θ^t−1+修正量f(yt,xt)
\hat{\theta}_t = \hat{\theta}_{t-1} + 修正量f(y_t,x_t)
θ^t=θ^t−1+修正量f(yt,xt) 观察公式 (1)(1)(1),需要建立相邻两个时刻之间的关系,首先定义变量 PN−1=(XNTXN)P_N^{-1} = (X_N^TX_N)PN−1=(XNTXN),即(2)PN−1=[x1,x2,...,xN][x1T;x2T;...;xNT]=∑i=1N−1xixiT+xNxNT=PN−1−1+xNxNT
P_N^{-1} = [x_1,x_2,...,x_N][x_1^T;x_2^T;...;x_N^T]\\
=\sum_{i=1}^{N-1}x_ix_i^T+x_Nx_N^T\\
=P_{N-1}^{-1}+x_Nx_N^T\tag{2}PN−1=[x1,x2,...,xN][x1T;x2T;...;xNT]=i=1∑N−1xixiT+xNxNT=PN−1−1+xNxNT(2)同理(3)XNTYN=XN−1TYN−1+xNyN
X_N^TY_N=X_{N-1}^TY_{N-1}+x_Ny_N \tag{3}
XNTYN=XN−1TYN−1+xNyN(3) 利用公式 (2)(3)(2)(3)(2)(3) 重新梳理公式 (1)(1)(1) (4)θ^t=PN(XN−1TYN−1+xNyN)
\hat{\theta}_t = P_N(X_{N-1}^TY_{N-1}+x_Ny_N) \tag{4}
θ^t=PN(XN−1TYN−1+xNyN)(4) 利用 (5)θ^t−1=PN−1XN−1TYN−1PN−1−1θ^t−1=XN−1TYN−1
\hat{\theta}_{t-1} = P_{N-1} X_{N-1}^TY_{N-1}\\
P_{N-1}^{-1} \hat{\theta}_{t-1} = X_{N-1}^TY_{N-1} \tag{5}θ^t−1=PN−1XN−1TYN−1PN−1−1θ^t−1=XN−1TYN−1(5) 将 (5)(5)(5) 带入 (4)(4)(4) (6)θ^t=PN(PN−1−1θ^t−1+xNyN)=PN(PN−1−xNxNT)θ^t−1+PNxNyN=θ^t−1+PNxNyN−PNxNxNTθ^t−1=θ^t−1+PN(xNyN−xNxNTθ^t−1)
\hat{\theta}_t = P_N(P_{N-1}^{-1} \hat{\theta}_{t-1}+x_Ny_N)\\
=P_N(P_N^{-1}-x_Nx_N^T)\hat{\theta}_{t-1} + P_Nx_Ny_N\\
=\hat{\theta}_{t-1} + P_Nx_Ny_N-P_Nx_Nx_N^T\hat{\theta}_{t-1}\\
=\hat{\theta}_{t-1} + P_N(x_Ny_N-x_Nx_N^T\hat{\theta}_{t-1}) \tag{6}
θ^t=PN(PN−1−1θ^t−1+xNyN)=PN(PN−1−xNxNT)θ^t−1+PNxNyN=θ^t−1+PNxNyN−PNxNxNTθ^t−1=θ^t−1+PN(xNyN−xNxNTθ^t−1)(6)由 (2)(2)(2) 可得 PN=(PN−1−1+xNxNT)−1
P_N=(P_{N-1}^{-1}+x_Nx_N^T)^{-1}PN=(PN−1−1+xNxNT)−1根据
矩阵逆引理:
[A+BCD]−1=A−1−A−1B[C−1+DA−1B]−1DA−1 [A+BCD]^{-1}=A^{-1}-A^{-1}B[C^{-1}+DA^{-1}B]^{-1}DA^{-1}[A+BCD]−1=A−1−A−1B[C−1+DA−1B]−1DA−1
(7)PN=PN−1−PN−1xN[I+xNTPN−1xN]−1xNTPN−1
P_N=P_{N-1}-P_{N-1}x_N[I+x_N^TP_{N-1}x_N]^{-1}x_N^TP_{N-1} \tag{7}
PN=PN−1−PN−1xN[I+xNTPN−1xN]−1xNTPN−1(7)因此RLS的求解为
PN=PN−1−PN−1xN[I+xNTPN−1xN]−1xNTPN−1θ^t=θ^t−1+PNxN(yN−xNTθ^t−1)
P_N=P_{N-1}-P_{N-1}x_N[I+x_N^TP_{N-1}x_N]^{-1}x_N^TP_{N-1}\\
\hat{\theta}_t=\hat{\theta}_{t-1} + P_Nx_N(y_N-x_N^T\hat{\theta}_{t-1})
PN=PN−1−PN−1xN[I+xNTPN−1xN]−1xNTPN−1θ^t=θ^t−1+PNxN(yN−xNTθ^t−1)其中,(yN−xNTθ^t−1)(y_N-x_N^T\hat{\theta}_{t-1})(yN−xNTθ^t−1) 相当于 t−1t-1t−1 时刻的参数用于 ttt 时刻预测时带来的偏差,PNxNP_Nx_NPNxN 相当于修正系数
博客介绍了批次最小二乘,通过给定一批数据辨识参数向量,目标是最小化估计误差。但每个时刻有新数据时,批次最小二乘较繁琐,于是引出递推最小二乘,其目的是基于上一时刻模型参数和当前时刻数据修正参数,并给出了递推最小二乘的求解公式。
603

被折叠的 条评论
为什么被折叠?



