(3条消息) 线性回归与岭回归参数向量公式推导

线性回归是一种常用的机器学习回归算法,其原理是通过输入和输出学习回归函数,确定回归参数向量 w \mathbf{w} w和截距 b b b。对于新的样本 x \mathbf{x} x,其预测值为 y ^ = x w + b \hat{y}=\mathbf{x}\mathbf{w}+b y^​=xw+b。式中, x \mathbf{x} x是 n − 1 n-1 n−1维横向量, x = [ x 1 , x 2 , . . . , x n − 1 ] \mathbf{x}=[x_1,x_2,...,x_{n-1}] x=[x1​,x2​,...,xn−1​], w \mathbf{w} w是 n − 1 n-1 n−1维列向量, w = [ w 1 , w 2 , . . . , w n − 1 ] T \mathbf{w}=[w_1,w_2,...,w_{n-1}]^\mathrm{T} w=[w1​,w2​,...,wn−1​]T。
通常,为了方便表示,将 b b b写入 w \mathbf{w} w中, x \mathbf{x} x中也在末尾增加一个1,因此 w \mathbf{w} w、 x \mathbf{x} x、 y ^ \hat{y} y^​分别变为:
w = [ w 1 , w 2 , . . . , w n − 1 , b ] T \mathbf{w}=[w_1,w_2,...,w_{n-1},b]^\mathrm{T} w=[w1​,w2​,...,wn−1​,b]T x = [ x 1 , x 2 , . . . , x n − 1 , 1 ] \mathbf{x}=[x_1,x_2,...,x_{n-1},1] x=[x1​,x2​,...,xn−1​,1] y ^ = x w \hat{y}=\mathbf{x}\mathbf{w} y^​=xw
线性回归的成本函数为:
1 2 ∑ i = 1 m ( y i − y i ^ ) 2 \frac{1}{2}\sum_{i=1}^m(y_i-\hat{y_i})^2 21​i=1∑m​(yi​−yi​^​)2
其中 m m m为样本的数量。从成本函数可以看出,线性回归的求解是希望求得平方误差的最小值,即找到一条直线尽量拟合所有样本点。原理在这里不过多赘述,本文主要进行 w \mathbf{w} w的公式推导。
在推导之前,需要简单介绍矩阵求导规则。

矩阵求导规则

  1. 行向量对元素求导
    设 y = [ y 1 , y 2 , … , y n ] \mathbf{y}=

    [y1,y2,…,yn]" role="presentation" style="position: relative;">[y1,y2,…,yn][y1,y2,…,yn]

    y=[y1​,y2​,…,yn​​]是 n n n维行向量, x x x是元素,则 ∂ y ∂ x = [ ∂ y 1 ∂ x , ∂ y 2 ∂ x , … , ∂ y n ∂ x ] \frac{\partial\mathbf{y}}{\partial x}=

    [∂y1∂x,∂y2∂x,…,∂yn∂x]" role="presentation" style="position: relative;">[∂y1∂x,∂y2∂x,…,∂yn∂x][∂y1∂x,∂y2∂x,…,∂yn∂x]

    ∂x∂y​=[∂x∂y1​​,∂x∂y2​​,…,∂x∂yn​​​]

  2. 列向量对元素求导
    设 y = [ y 1 y 2 ⋮ y n ] \mathbf{y}=

    [y1y2⋮yn]" role="presentation" style="position: relative;">⎡⎣⎢⎢⎢⎢y1y2⋮yn⎤⎦⎥⎥⎥⎥[y1y2⋮yn]

    y=⎣⎢⎢⎢⎡​y1​y2​⋮yn​​⎦⎥⎥⎥⎤​是 n n n维列向量, x x x是元素,则 ∂ y ∂ x = [ ∂ y 1 ∂ x ∂ y 2 ∂ x ⋮ ∂ y n ∂ x ] \frac{\partial\mathbf{y}}{\partial x}=

    [∂y1∂x∂y2∂x⋮∂yn∂x]" role="presentation" style="position: relative;">⎡⎣⎢⎢⎢⎢⎢⎢⎢∂y1∂x∂y2∂x⋮∂yn∂x⎤⎦⎥⎥⎥⎥⎥⎥⎥[∂y1∂x∂y2∂x⋮∂yn∂x]

    ∂x∂y​=⎣⎢⎢⎢⎡​∂x∂y1​​∂x∂y2​​⋮∂x∂yn​​​⎦⎥⎥⎥⎤​

  3. 元素对行向量求导
    设 y y y是元素, x = [ x 1 , x 2 , … , x n ] \mathbf{x}=

    [x1,x2,…,xn]" role="presentation" style="position: relative;">[x1,x2,…,xn][x1,x2,…,xn]

    x=[x1​,x2​,…,xn​​]是 n n n维行向量,则 ∂ y ∂ x = [ ∂ y ∂ x 1 , ∂ y ∂ x 2 , … , ∂ y ∂ x n ] \frac{\partial y}{\partial \mathbf{x}}=

    [∂y∂x1,∂y∂x2,…,∂y∂xn]" role="presentation" style="position: relative;">[∂y∂x1,∂y∂x2,…,∂y∂xn][∂y∂x1,∂y∂x2,…,∂y∂xn]

    ∂x∂y​=[∂x1​∂y​,∂x2​∂y​,…,∂xn​∂y​​]

  4. 元素对列向量求导
    设 y y y是元素, x = [ x 1 x 2 ⋮ x n ] \mathbf{x}=

    [x1x2⋮xn]" role="presentation" style="position: relative;">⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥[x1x2⋮xn]

    x=⎣⎢⎢⎢⎡​x1​x2​⋮xn​​⎦⎥⎥⎥⎤​是 n n n维列向量,则 ∂ y ∂ x = [ ∂ y ∂ x 1 ∂ y ∂ x 2 ⋮ ∂ y ∂ x n ] \frac{\partial y}{\partial \mathbf{x}}=

    [∂y∂x1∂y∂x2⋮∂y∂xn]" role="presentation" style="position: relative;">⎡⎣⎢⎢⎢⎢⎢⎢⎢∂y∂x1∂y∂x2⋮∂y∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥[∂y∂x1∂y∂x2⋮∂y∂xn]

    ∂x∂y​=⎣⎢⎢⎢⎢⎡​∂x1​∂y​∂x2​∂y​⋮∂xn​∂y​​⎦⎥⎥⎥⎥⎤​

以上只简单介绍了元素和向量之间相互求导的方法。更详细的有关矩阵求导的内容可以参考一下两篇博客:

第二篇博客中的图片取自维基百科,因此访问时需要踩个梯子。
总结几个重要的求导公式(分母布局结果,分子布局的结果为分母布局结果的转置):

  • ∂ A x ∂ x = A T \frac{\partial Ax}{\partial x}= A^\mathrm{T} ∂x∂Ax​=AT
  • ∂ x T A ∂ x = A \frac{\partial x^\mathrm TA}{\partial x}= A ∂x∂xTA​=A
  • ∂ x T A x ∂ x = A x + A T x \frac{\partial x^\mathrm TAx}{\partial x}= Ax+A^\mathrm{T}x ∂x∂xTAx​=Ax+ATx

其中 x x x为列向量, A A A为与 x x x无关的行向量。

线性回归参数向量公式推导

本文推导过程采用分母布局。首先将成本函数矩阵化,表示为 w \mathbf w w的函数:
J ( w ) = 1 2 ∑ i = 1 m ( y i − y i ^ ) 2 = 1 2 ∑ i = 1 m ( y i − x i w ) 2 = 1 2 ( Y − X w ) T ( Y − X w ) = 1 2 ( Y T − w T X T ) ( Y − X w ) = 1 2 ( w T X T X w − w T X T Y − Y T X w + Y T Y )

J(w)amp;=12∑i=1m(yi−yi^)2amp;=12∑i=1m(yi−xiw)2amp;=12(Y−Xw)T(Y−Xw)amp;=12(YT−wTXT)(Y−Xw)amp;=12(wTXTXw−wTXTY−YTXw+YTY)" role="presentation" style="position: relative;">J(w)amp;=12∑i=1m(yi−yi^)2amp;=12∑i=1m(yi−xiw)2amp;=12(Y−Xw)T(Y−Xw)amp;=12(YT−wTXT)(Y−Xw)amp;=12(wTXTXw−wTXTY−YTXw+YTY)J(w)amp;=12∑i=1m(yi−yi^)2amp;=12∑i=1m(yi−xiw)2amp;=12(Y−Xw)T(Y−Xw)amp;=12(YT−wTXT)(Y−Xw)amp;=12(wTXTXw−wTXTY−YTXw+YTY)

J(w)​=21​i=1∑m​(yi​−yi​^​)2=21​i=1∑m​(yi​−xi​w)2=21​(Y−Xw)T(Y−Xw)=21​(YT−wTXT)(Y−Xw)=21​(wTXTXw−wTXTY−YTXw+YTY)​
∂ J ( w ) ∂ w = 1 2 [ X T X w + ( X T X ) T w − X T Y − ( Y T X ) T ] = X T X w − X T Y

∂J(w)∂wamp;=12[XTXw+(XTX)Tw−XTY−(YTX)T]amp;=XTXw−XTY" role="presentation" style="position: relative;">∂J(w)∂wamp;=12[XTXw+(XTX)Tw−XTY−(YTX)T]amp;=XTXw−XTY∂J(w)∂wamp;=12[XTXw+(XTX)Tw−XTY−(YTX)T]amp;=XTXw−XTY

∂w∂J(w)​​=21​[XTXw+(XTX)Tw−XTY−(YTX)T]=XTXw−XTY​
令其等于0,则
X T X w − X T Y = 0 \mathbf X^\mathrm T\mathbf X\mathbf w-\mathbf X^\mathrm T\mathbf Y=0 XTXw−XTY=0 w = ( X T X ) − 1 X T Y \mathbf w=(\mathbf X^\mathrm T\mathbf X)^{-1}\mathbf X^\mathrm T\mathbf Y w=(XTX)−1XTY

岭回归参数向量公式推导

岭回归其实就是L2正则化,即在成本函数后面加上对参数向量的L2正则化项,因此,成本函数变为:
J ( w ) = 1 2 ( Y T − w T X T ) ( Y − X w ) + λ 2 ∣ ∣ w ∣ ∣ 2 = 1 2 ( Y T − w T X T ) ( Y − X w ) + λ 2 w T w

J(w)amp;=12(YT−wTXT)(Y−Xw)+λ2||w||2amp;=12(YT−wTXT)(Y−Xw)+λ2wTw" role="presentation" style="position: relative;">J(w)amp;=12(YT−wTXT)(Y−Xw)+λ2||w||2amp;=12(YT−wTXT)(Y−Xw)+λ2wTwJ(w)amp;=12(YT−wTXT)(Y−Xw)+λ2||w||2amp;=12(YT−wTXT)(Y−Xw)+λ2wTw

J(w)​=21​(YT−wTXT)(Y−Xw)+2λ​∣∣w∣∣2=21​(YT−wTXT)(Y−Xw)+2λ​wTw​
∂ J ( w ) ∂ w = X T X w − X T Y + λ 2 ( w + w ) = X T X w − X T Y + λ w = ( X T X + λ I ) w − X T Y

∂J(w)∂wamp;=XTXw−XTY+λ2(w+w)amp;=XTXw−XTY+λwamp;=(XTX+λI)w−XTY" role="presentation" style="position: relative;">∂J(w)∂wamp;=XTXw−XTY+λ2(w+w)amp;=XTXw−XTY+λwamp;=(XTX+λI)w−XTY∂J(w)∂wamp;=XTXw−XTY+λ2(w+w)amp;=XTXw−XTY+λwamp;=(XTX+λI)w−XTY

∂w∂J(w)​​=XTXw−XTY+2λ​(w+w)=XTXw−XTY+λw=(XTX+λI)w−XTY​
令其等于0,则
( X T X + λ I ) w − X T Y = 0 (\mathbf X^\mathrm T\mathbf X\mathbf +\lambda\mathbf I)\mathbf w-\mathbf X^\mathrm T\mathbf Y=0 (XTX+λI)w−XTY=0 w = ( X T X + λ I ) − 1 X T Y \mathbf w=(\mathbf X^\mathrm T\mathbf X+\lambda\mathbf I)^{-1}\mathbf X^\mathrm T\mathbf Y w=(XTX+λI)−1XTY
公式中的 λ I \lambda\mathbf I λI就是岭回归的“岭”。
其实,加入 λ I \lambda\mathbf I λI的作用除了可以防止过拟合、进行正则化的操作,还可以防止由于 X T X \mathbf X^\mathrm T\mathbf X XTX不可逆导致参数 w \mathbf w w无法求解。

(0)

相关推荐