线性回归与递归最小二乘算法 (R.L.S algorithm)

1. 矩阵求逆引理 Matrix inversion lemma

矩阵 , 都是 m x n(m行 n列) 矩阵是 n x n

若                                                      (公式1)

则它的逆矩阵为   (公式2)

如果把vector 看成是一个 Nx1的矩阵,根据以上公式可得,

这里的 相当于公式1中的 ,

 是对应公式2的部分,其结果是一个标量scalar,即一个数值

2. Linear regression 线性回归

Data:  是scalar

Model:  

注意:这里V不是bias, bias 项包含在里面,这里是指noise 并且假设其服从均匀分布,则

噪音 Noise: 

误差Error 记为:  

若将误差以矩阵的形式表示,则 

矩阵是一个 n 行 (p+1) 列的矩阵,n表示数据量,p则对应数据的维度,多一列常数是为了计算bias,它的每一行是每次输入(向量)的转置的每一行对应每次输入的转置(input is a vector),即, 如下图所示

X=\left(\begin{array}{cccc}{1} & {x_{11}} & {\cdots} & {x_{1 p}} \\ {1} & {x_{21}} & {\cdots} & {x_{2 p}} \\ {\vdots} & {\vdots} & {\ddots} & {\vdots} \\ {1} & {x_{n 1}} & {\cdots} & {x_{n p}}\end{array}\right)

     

我们希望最小化E,且此时是未知,于是,可以求取其梯度,即对进行求导,可得

    

1. 如果是静态的数据,即数据一次性给出,则可以求出w

   则 

2. 如果是动态的数据,即数据是一直在更新中,源源不断的产生,则可以通过梯度下降的方式更新

方法一:批量模式 batch mode

方法二:随机梯度下降 stochastic update (sample by sample), 即随机从样本数据中选取一个样本,用来更新

但是这种方式收敛过程中会存在更多的噪声,其error 如下图所示

梯度下降

3. Recursive Least Squares 递归最小二乘算法

我们也可以通过递归最小二乘的方式得到线性模型

(备注:很多时候都会讲到最小二乘,它又叫做最小平方法,即求得其的最小平方和,比如通过最小二乘,得到模型的残差bias最小, 即最小化目标值与模型预估值的距离的平方和)

令,有上文可得,

在w的表达式中,比较麻烦的是求,如果得到它,那么我们就能成功求得w,得到我们的线性模型。

如果我们的数据是源源不断的进来,即没法一次性取得所有的数据,我们可以通过最小二乘递归的方式,不断更新w。下面会讨论如何求得逆矩阵。

矩阵相乘

如上图所示,根据矩阵相乘的基本原理,可以得出,,即其中,可以认为是只有一列的矩阵(px1)。

根据前文提到的matrix inversion lemma, 可以求得其逆矩阵

\begin{equation}\begin{aligned}R_{n}^{-1} &= (R_{n-1}+ \mathbf{x_{n}}\mathbf{x_{n}^{T}})^{-1} \\ &= R_{n-1}^{-1}-\frac{R_{n-1}^{-1}\mathbf{x_{n}}\mathbf{x_{n}^{T}}R_{n-1}^{-1}}{1+\mathbf{x_{n}^{T}R_{n-1}^{-1}\mathbf{x_{n}}}}  \end{aligned} \end{equation}

表达式虽然看上去很复杂,但是计算比原始的逆运算简单,只要记录上一次逆运算的结果,结合当前最新的输入数据,便可得到从而避免了复杂的矩阵求逆过程,进而得到w.

          (公式3)

残差bias 

在现实中,新的数据往往会比旧的数据更有意义,所以需要引入一个遗忘因子(一般在0.98到1之间选择),来评估数据对当前模型的影响,使得越往后数据影响越大(这个实际是加权最小二乘的内容)。对于静态的数据而言,即能够一次性给出所有数据,则没有必要考虑遗忘因子。

遗忘因子

此时我们的误差函数为    我们的目标是通过最小化误差求得, 由上可知  

此时        

\begin{equation} \begin{aligned}  R_{n} & =\sum_{i=0}^{n-1}\lambda^{n-i}x_{i}x_{i}^{T}  + x_{n}x_{n}^{T} \\ & = \lambda\left[\sum_{i=0}^{n-1}\lambda^{(n-1)-i}x_{i}x_{i}^{T} \right] + x_{n}x_{n}^{T} \\ & =\lambda R_{n-1} + x_{n}x_{n}^{T} \end{aligned}\end{equation}

根据前文提到的matrix inversion lemma, 可以求得其逆矩阵

\begin{equation}\begin{aligned}R_{n}^{-1} &= (R_{n-1}+ \mathbf{x_{n}}\mathbf{x_{n}^{T}})^{-1} \\ &= \frac{1}{\lambda} R_{n-1}^{-1}-\frac{\frac{1}{\lambda^{2}} R_{n-1}^{-1}\mathbf{x_{n}}\mathbf{x_{n}^{T}}R_{n-1}^{-1}}{1+\mathbf{x_{n}^{T}\frac{1}{ \lambda} R_{n-1}^{-1}\mathbf{x_{n}}}}  \end{aligned} \end{equation}    (公式4)

为了方便计算, 引入增益矢量 gain vector   (公式5)

且定义  ,则由公式4,公式5可得

\begin{aligned} P_{n} &=\frac{1}{\lambda} P_{n-1}-\frac{\frac{1}{\lambda^{2}} P_{n-1} \boldsymbol{x}_{n} \boldsymbol{x}_{n}^{T} P_{n-1}}{1+\boldsymbol{x}_{n}^{T} \frac{1}{\lambda} P_{n-1} \boldsymbol{x}_{n}} \\ &=\frac{1}{\lambda} P_{n-1}-\frac{1}{\lambda} \boldsymbol{k}_{n} \boldsymbol{x}_{n}^{T} P_{n-1} \end{aligned}                         (公式6)

增益矢量可以进一步化简,得到以下关系    (公式7), 其推导如下

\begin{equation} \begin{aligned} & k_{n}= \frac{\frac{1}{\lambda} P_{n-1}\mathbf{x_{n}} }{1+\frac{1}{ \lambda}\mathbf{x_{n}^{T} P_{n-1}\mathbf{x_{n}}}}  \\ &k_{n} + k_{n}  \frac{1}{ \lambda }x_{n}^{T} P_{n-1}x_{n} = \frac{1}{ \lambda } P_{n-1} x_{n} \\ &k_{n}  =  \frac{1}{ \lambda } \left[ P_{n-1} - k_{n}x_{n}^{T} P_{n-1}  \right] x_{n} = P_{n}x_{n}\end{aligned}\end{equation}                  

公式3可知 权值  带入公式6  与公式7的结论 则

\begin{aligned} \boldsymbol{w}_{n} &=P_{n} \boldsymbol{z}_{n} \\ &=P_{n}\left[\lambda \boldsymbol{z}_{n-1}+\boldsymbol{x}_{n} y_{n}\right] \\ &=\lambda P_{n} \boldsymbol{z}_{n-1}+P_{n} \boldsymbol{x}_{n} y_{n} \\ &=\lambda\left[\frac{1}{\lambda} P_{n-1}-\frac{1}{\lambda} \boldsymbol{k}_{n} \boldsymbol{x}_{n}^{T} P_{n-1}\right] \boldsymbol{z}_{n-1}+P_{n} \boldsymbol{x}_{n} y_{n} \\ &=P_{n-1} \boldsymbol{z}_{n-1}-\boldsymbol{k}_{n} \boldsymbol{x}_{n}^{T} P_{n-1} \boldsymbol{z}_{n-1}+P_{n} \boldsymbol{x}_{n} y_{n} \\ &=\boldsymbol{w}_{n-1}-\boldsymbol{k}_{n}\left(\boldsymbol{x}_{n}^{T} \boldsymbol{w}_{n-1}-y_{n}\right) \end{aligned}   

即 new weight = old weight - gain * prediction error

递归最小二乘算法总结:

1. 计算 增益矢量 

2. 计算 

3. 计算权值  

RLS表现出极快的收敛性,且不需要对矩阵进行求逆运算,在这个方面能节省计算量。计算时不需要加载所有的数据,从而节省了内存,但是,这种好处是以高计算复杂度为代价的。

你可能感兴趣的:(线性回归与递归最小二乘算法 (R.L.S algorithm))