线性回归是一种常用的机器学习回归算法,其原理是通过输入和输出学习回归函数,确定回归参数向量
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}=\begin{bmatrix}y_{1},y_{2},\dots,y_{n}\end{bmatrix} 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}=\begin{bmatrix}\frac{\partial y_{1}}{\partial x},\frac{\partial y_{2}}{\partial x},\dots,\frac{\partial y_{n}}{\partial x} \end{bmatrix} ∂x∂y=[∂x∂y1,∂x∂y2,…,∂x∂yn] - 列向量对元素求导
设 y = [ y 1 y 2 ⋮ y n ] \mathbf{y}=\begin{bmatrix}y_{1}\\ y_{2}\\ \vdots\\ y_{n} \end{bmatrix} 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}=\begin{bmatrix}\frac{\partial y_{1}}{\partial x}\\ \frac{\partial y_{2}}{\partial x}\\ \vdots\\ \frac{\partial y_{n}}{\partial x} \end{bmatrix} ∂x∂y=⎣⎢⎢⎢⎡∂x∂y1∂x∂y2⋮∂x∂yn⎦⎥⎥⎥⎤ - 元素对行向量求导
设 y y y是元素, x = [ x 1 , x 2 , … , x n ] \mathbf{x}=\begin{bmatrix}x_{1},x_{2},\dots,x_{n}\end{bmatrix} x=[x1,x2,…,xn]是 n n n维行向量,则 ∂ y ∂ x = [ ∂ y ∂ x 1 , ∂ y ∂ x 2 , … , ∂ y ∂ x n ] \frac{\partial y}{\partial \mathbf{x}}=\begin{bmatrix}\frac{\partial y}{\partial x_{1}},\frac{\partial y}{\partial x_{2}},\dots,\frac{\partial y}{\partial x_{n}} \end{bmatrix} ∂x∂y=[∂x1∂y,∂x2∂y,…,∂xn∂y] - 元素对列向量求导
设 y y y是元素, x = [ x 1 x 2 ⋮ x n ] \mathbf{x}=\begin{bmatrix}x_{1}\\ x_{2}\\ \vdots\\ x_{n} \end{bmatrix} x=⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤是 n n n维列向量,则 ∂ y ∂ x = [ ∂ y ∂ x 1 ∂ y ∂ x 2 ⋮ ∂ y ∂ x n ] \frac{\partial y}{\partial \mathbf{x}}=\begin{bmatrix}\frac{\partial y}{\partial x_{1}}\\ \frac{\partial y}{\partial x_{2}}\\ \vdots\\ \frac{\partial y}{\partial x_{n}} \end{bmatrix} ∂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
)
\begin{aligned} J(\mathbf w) &=\frac{1}{2}\sum_{i=1}^m(y_i-\hat{y_i})^2\\ &=\frac{1}{2}\sum_{i=1}^m(y_i-\mathbf x_i\mathbf{w})^2\\ &=\frac{1}{2}(\mathbf Y-\mathbf X\mathbf w)^\mathrm T(\mathbf Y-\mathbf X\mathbf w)\\ &=\frac{1}{2}(\mathbf Y^\mathrm T-\mathbf w^\mathrm T\mathbf X^\mathrm T)(\mathbf Y-\mathbf X\mathbf w)\\ &=\frac{1}{2}(\mathbf w^\mathrm T\mathbf X^\mathrm T\mathbf X\mathbf w-\mathbf w^\mathrm T\mathbf X^\mathrm T\mathbf Y - \mathbf Y^\mathrm T\mathbf X\mathbf w + \mathbf Y^\mathbf T\mathbf Y) \end{aligned}
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
\begin{aligned} \frac{\partial J(\mathbf w)}{\partial\mathbf w}&=\frac{1}{2}[\mathbf X^\mathrm T\mathbf X\mathbf w + (\mathbf X^\mathrm T\mathbf X)^\mathrm T\mathbf w-\mathbf X^\mathrm T\mathbf Y-(\mathbf Y^\mathrm T\mathbf X)^\mathrm T]\\ &=\mathbf X^\mathrm T\mathbf X\mathbf w-\mathbf X^\mathrm T\mathbf Y \end{aligned}
∂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
\begin{aligned} J(\mathbf w) &=\frac{1}{2}(\mathbf Y^\mathrm T-\mathbf w^\mathrm T\mathbf X^\mathrm T)(\mathbf Y-\mathbf X\mathbf w)+\frac{\lambda}{2}||\mathbf w||^2\\ &=\frac{1}{2}(\mathbf Y^\mathrm T-\mathbf w^\mathrm T\mathbf X^\mathrm T)(\mathbf Y-\mathbf X\mathbf w) + \frac{\lambda}{2}\mathbf w^\mathrm T\mathbf w \end{aligned}
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
\begin{aligned} \frac{\partial J(\mathbf w)}{\partial\mathbf w}&=\mathbf X^\mathrm T\mathbf X\mathbf w-\mathbf X^\mathrm T\mathbf Y+\frac{\lambda}{2}(\mathbf w+\mathbf w)\\ &=\mathbf X^\mathrm T\mathbf X\mathbf w-\mathbf X^\mathrm T\mathbf Y+\lambda\mathbf w\\ &=(\mathbf X^\mathrm T\mathbf X\mathbf +\lambda\mathbf I)\mathbf w-\mathbf X^\mathrm T\mathbf Y \end{aligned}
∂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无法求解。