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

1. 矩阵求逆引理 Matrix inversion lemma

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

若 A= B^{-1} + CD^{-1}C^{T}                                                      (公式1)

则它的逆矩阵为 A^{-1}= B - BC(D+C^{T}BC)^{-1}C^{T}B   (公式2)

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

(A + \mathbf{x}\mathbf{x^{T}})^{-1} = A^{-1}-\frac{A^{-1}\mathbf{x}\mathbf{x^{T}}A^{-1}}{1+\mathbf{x^{T}A^{-1}\mathbf{x}}}

这里的A 相当于公式1中的B^{-1} ,

\frac{1}{1+\mathbf{x^{T}A^{-1}\mathbf{x}}}  是对应公式2的(D+C^{T}BC)^{-1}部分,其结果是一个标量scalar,即一个数值

2. Linear regression 线性回归

Data: \left\{ x_{n}, y_{n} \right\}^N_{n=1} y_{n}是scalar

Model: y=w^{T}x+V 

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

噪音 Noise: v \sim N(0,\sigma ^{2} )

误差Error 记为: E=\sum_{n=1}^{N}\left(y_{n}-\boldsymbol{w}^{t} \boldsymbol{x}_{n}\right)^{2} E=\sum_{n=1}^{N}\left(y_{n}-\boldsymbol{w}^{t} \boldsymbol{x}_{n}\right)^{2}

若将误差以矩阵的形式表示,则E=\|\mathbf{y}-X \mathbf{w\|^{2}} 

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

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)

     \mathbf{y}=\left(\begin{array}{cccc}{y_{1}} \\ {y_{2}} \\ {\vdots} \\  {y_{n}}\end{array}\right)

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

\begin{aligned} \nabla_{\boldsymbol{w}} E &=2 X^{T}(\boldsymbol{y}-X \boldsymbol{w}) \\  \end{aligned}    

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

  \begin{aligned} \nabla_{\boldsymbol{w}} E &=\mathbf{0} \end{aligned} 则 \boldsymbol{w}=\left(X^{T} X\right)^{-1} X^{t} \boldsymbol{y}

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

方法一:批量模式 batch mode

\begin{aligned} \mathbf{w_{k+1}} & = \mathbf{w_{k}} - \eta \nabla_{\boldsymbol{w}} E  \\& =2 X^{T}(\boldsymbol{y}-X \boldsymbol{w}_{k})   \end{aligned}

方法二:随机梯度下降 stochastic update (sample by sample), 即随机从样本数据\left\{ x_{n}, y_{n} \right\}中选取一个样本,用来更新w

\mathbf{w}_{k+1}=\mathbf{w}_{k}-\eta\left(y_{k}-\boldsymbol{x}_{k}^{T} \mathbf{w}_{k}\right)

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

梯度下降

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

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

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

R_{n}=X^{T}_{n}X_{n},有上文可得,\boldsymbol{w}=\left(X^{T} X\right)^{-1} X^{T} \boldsymbol{y}=\left(R_{n}\right)^{-1} X^{T} \boldsymbol{y}

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

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

矩阵相乘

如上图所示,根据矩阵相乘的基本原理,可以得出,X^{T}_{n}X_{n} = X^{T}_{n-1}X_{n-1} + \mathbf{x_{n}}\mathbf{x_{n}^{T}},即R_{n} = R_{n-1}+ \mathbf{x_{n}}\mathbf{x_{n}^{T}}其中,x_{n}可以认为是只有一列的矩阵(px1)。

根据前文提到的matrix inversion lemma, 可以求得其逆矩阵R_{n}^{-1}

\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}

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

z_{n}=X^{t}\mathbf{y}=\sum_{i=1}^{n}x_iy_i

\boldsymbol{w}=\left(X^{T} X\right)^{-1} X^{T}  \boldsymbol{y}=\left(R_{n}\right)^{-1} X^{T} \boldsymbol{y}= R_{n}^{-1} z_{n}          (公式3)

残差bias e_{n} = w^{T}x_{n}-y_{n}

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

遗忘因子

此时我们的误差函数为 E = \sum_{i=0}^{n-1} \lambda^{n-i-1} e_{i}^{2}    我们的目标是通过最小化误差求得w, 由上可知 \boldsymbol{w}= R_{n}^{-1} z_{n} 

此时z_{n-1}=\sum_{i=1}^{n-1}\lambda^{(n-1)-i}x_iy_i         R_{n-1}=\sum_{i=0}^{n-1}\lambda^{(n-1)-i}x_{i}x_{i}^{T}

\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 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}}}}  (公式5)

且定义P_{n}=R_{n}^{-1}  P_{n-1}=R_{n-1}^{-1},则由公式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)

增益矢量可以进一步化简,得到以下关系 k_{n} = P_{n}x_{n}   (公式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可知 权值 \boldsymbol{w}= R_{n}^{-1} z_{n} =  P_{n} z_{n}  带入公式6 P_{n} 与公式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. 计算 增益矢量 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}}}}

2. 计算 \begin{aligned} P_{n} &=\frac{1}{\lambda} P_{n-1}-\frac{1}{\lambda} \boldsymbol{k}_{n} \boldsymbol{x}_{n}^{T} P_{n-1} \end{aligned}

3. 计算权值  \begin{aligned} \boldsymbol{w}_{n} = \boldsymbol{w}_{n-1}-\boldsymbol{k}_{n}\left(\boldsymbol{x}_{n}^{T} \boldsymbol{w}_{n-1}-y_{n}\right) \end{aligned}

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容