(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 21i=1∑m(yi−yi^)2
其中 m m m为样本的数量。从成本函数可以看出,线性回归的求解是希望求得平方误差的最小值,即找到一条直线尽量拟合所有样本点。原理在这里不过多赘述,本文主要进行 w \mathbf{w} w的公式推导。
在推导之前,需要简单介绍矩阵求导规则。
矩阵求导规则
- 行向量对元素求导
设 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]
- 列向量对元素求导
设 y = [ y 1 y 2 ⋮ y n ] \mathbf{y}=[y1y2⋮yn]" role="presentation" style="position: relative;">⎡⎣⎢⎢⎢⎢y1y2⋮yn⎤⎦⎥⎥⎥⎥[y1y2⋮yn]y=⎣⎢⎢⎢⎡y1y2⋮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⎦⎥⎥⎥⎤
- 元素对行向量求导
设 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]
- 元素对列向量求导
设 y y y是元素, x = [ x 1 x 2 ⋮ x n ] \mathbf{x}=[x1x2⋮xn]" role="presentation" style="position: relative;">⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥[x1x2⋮xn]x=⎣⎢⎢⎢⎡x1x2⋮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)=21i=1∑m(yi−yi^)2=21i=1∑m(yi−xiw)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
∂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)=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
∂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无法求解。