Linear Regression
回归
回归是基于给定的特征值,预测目标变量值的过程。数学上,回归旨在构建一个函数
f
f
f来建立输入数据
x
=
(
x
1
,
x
2
,
⋯
,
x
m
)
x={(x_1,x_2,\cdots,x_m)}
x=(x1,x2,⋯,xm)和监督值
y
y
y的联系。此后,我们便可以使用
f
f
f来预测
x
x
x对应的监督值
y
^
\hat{y}
y^,即
y
^
=
f
(
x
)
\hat{y}=f(x)
y^=f(x)
线性回归
函数
f
f
f的形式是线性的,即
f
f
f具有如下形式
f
(
x
)
=
f
(
x
1
,
x
2
,
⋯
,
x
m
)
=
w
0
+
w
1
x
1
+
w
2
x
2
+
⋯
+
w
m
x
m
f(x)=f(x_1,x_2,\cdots,x_m)=w_0+w_1x_1+w_2x_2+\cdots+w_mx_m
f(x)=f(x1,x2,⋯,xm)=w0+w1x1+w2x2+⋯+wmxm
回归的目标
对于给定的训练数据集
{
(
x
(
1
)
,
y
(
1
)
)
,
(
x
(
2
)
,
y
(
2
)
)
,
⋯
,
(
x
(
n
)
,
y
(
n
)
)
}
\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),\cdots,(x^{(n)},y^{(n)})\}
{(x(1),y(1)),(x(2),y(2)),⋯,(x(n),y(n))}
找到参数
{
w
0
,
w
1
,
⋯
,
w
m
}
\{w_0,w_1,\cdots,w_m\}
{w0,w1,⋯,wm},使得预测值
y
^
=
f
(
x
)
\hat{y}=f(x)
y^=f(x)可以和真实值
y
y
y尽可能地接近。
损失函数
为了刻画训练集上的预测值 ( y ^ 1 , y ^ 2 , ⋯ , y ^ n ) (\hat{y}_1,\hat{y}_2,\cdots,\hat{y}_n) (y^1,y^2,⋯,y^n)和真实值 ( y 1 , y 2 , ⋯ , y n ) (y_1,y_2,\cdots,y_n) (y1,y2,⋯,yn)的接近程度,我们引入损失函数来刻画这种接近程度。
多特征线性回归
一般地,线性回归写成如下形式
f
(
x
1
,
x
2
,
⋯
,
x
m
)
=
w
0
+
w
1
x
1
+
w
2
x
2
+
⋯
+
w
m
x
m
f(x_1,x_2,\cdots,x_m)=w_0+w_1x_1+w_2x_2+\cdots+w_mx_m
f(x1,x2,⋯,xm)=w0+w1x1+w2x2+⋯+wmxm
其中,
x
i
x_i
xi表示数据点的第
i
i
i个特征。
引入矩阵后,我们的表示如下
f
(
x
)
=
x
w
f({\bf{x}})=\bf{xw}
f(x)=xw
x = [ 1 , x 1 , x 2 , ⋯ , x m ] {\bf{x}}=[1, x_1, x_2,\cdots,x_m] x=[1,x1,x2,⋯,xm]
w = [ w 0 , w 1 , w 2 , ⋯ , w m ] T {\bf{w}}=[w_0, w_1,w_2,\cdots,w_m]^T w=[w0,w1,w2,⋯,wm]T
若选择均方误差为损失函数,则损失函数可表示为
L
(
w
)
=
1
n
∑
i
=
1
n
(
x
(
i
)
w
−
y
(
i
)
)
2
L({\bf{w}})=\frac{1}{n}\sum_{i=1}^n({\bf{x}}^{(i)}{\bf{w}}-y^{(i)})^2
L(w)=n1i=1∑n(x(i)w−y(i))2
引入向量的模,则上述公式可表示为
L
(
w
)
=
1
n
∣
∣
X
w
−
y
∣
∣
2
L({\bf{w}})=\frac{1}{n}||{\bf{Xw}-y}||^2
L(w)=n1∣∣Xw−y∣∣2
X = [ x ( 1 ) x ( 2 ) ⋮ x ( n ) ] , y = [ y ( 1 ) y ( 2 ) ⋮ y ( n ) ] {\bf{X}}= \begin{bmatrix} &{\bf{x}}^{(1)}\\ &{\bf{x}}^{(2)}\\ &\vdots\\ &{\bf{x}}^{(n)} \end{bmatrix},\ {\bf{y}}= \begin{bmatrix} &y^{(1)}\\ &y^{(2)}\\ &\vdots\\ &y^{(n)} \end{bmatrix} X=⎣⎢⎢⎢⎡x(1)x(2)⋮x(n)⎦⎥⎥⎥⎤, y=⎣⎢⎢⎢⎡y(1)y(2)⋮y(n)⎦⎥⎥⎥⎤
梯度
梯度是一个向量,函数沿着梯度的方向增加最快。即沿着梯度方向找最大值,逆梯度方向找最小值。一般地,记梯度算子为 ∇ \nabla ∇,则有
对于以
n
×
1
n\times1
n×1实向量
x
\bf{x}
x为变量的实标量函数
f
(
x
)
f({\bf{x}})
f(x)相对于
x
{\bf{x}}
x的梯度为
1
×
n
1\times n
1×n的列向量
∇
x
f
(
x
)
=
[
∂
f
∂
x
1
∂
f
∂
x
2
⋮
∂
f
∂
x
n
]
\nabla_{\bf{x}}f({\bf{x}})=\begin{bmatrix} \frac{\partial f}{\partial x_1}\\ \frac{\partial f}{\partial x_2}\\ \vdots\\ \frac{\partial f}{\partial x_n}\\ \end{bmatrix}
∇xf(x)=⎣⎢⎢⎢⎢⎡∂x1∂f∂x2∂f⋮∂xn∂f⎦⎥⎥⎥⎥⎤
对于
m
m
m维行向量函数
f
(
x
)
=
[
f
1
(
x
)
,
f
2
(
x
)
,
⋯
,
f
m
(
x
)
]
{\bf{f}}({\bf{x}})=[{\bf{f}}_1({\bf{x}}),{\bf{f}}_2({\bf{x}}),\cdots,{\bf{f}}_m({\bf{x}})]
f(x)=[f1(x),f2(x),⋯,fm(x)]相对于
n
×
1
n\times 1
n×1的实向量
x
\bf{x}
x的梯度是一个
n
×
m
n\times m
n×m的矩阵。
∇
x
f
(
x
)
=
[
∂
f
1
∂
x
1
∂
f
2
∂
x
1
⋯
∂
f
m
∂
x
1
∂
f
1
∂
x
2
∂
f
2
∂
x
2
⋯
∂
f
m
∂
x
2
⋮
⋮
⋱
⋮
∂
f
1
∂
x
n
∂
f
2
∂
x
n
⋯
∂
f
m
∂
x
n
]
\nabla_{\bf{x}}{\bf{f}}({\bf{x}})=\begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \frac{\partial f_2}{\partial x_1} & \cdots & \frac{\partial f_m}{\partial x_1}\\ \frac{\partial f_1}{\partial x_2} & \frac{\partial f_2}{\partial x_2} & \cdots & \frac{\partial f_m}{\partial x_2}\\ \vdots & \vdots & \ddots & \vdots\\ \frac{\partial f_1}{\partial x_n} & \frac{\partial f_2}{\partial x_n} & \cdots & \frac{\partial f_m}{\partial x_n}\\ \end{bmatrix}
∇xf(x)=⎣⎢⎢⎢⎢⎡∂x1∂f1∂x2∂f1⋮∂xn∂f1∂x1∂f2∂x2∂f2⋮∂xn∂f2⋯⋯⋱⋯∂x1∂fm∂x2∂fm⋮∂xn∂fm⎦⎥⎥⎥⎥⎤
均方误差的最优值
损失函数的梯度为
∂
L
(
w
)
∂
w
=
2
n
X
T
(
X
w
−
y
)
\frac{\partial L({\bf{w}})}{{\partial\bf{w}}}=\frac{2}{n}{\bf{X}}^T({\bf{Xw-y}})
∂w∂L(w)=n2XT(Xw−y)
由于
L
(
w
)
L({\bf{w}})
L(w)是凸函数,最优解由下列方程给出
X
T
(
X
w
−
y
)
=
0
{\bf{X}}^T({\bf{Xw-y}})=0
XT(Xw−y)=0
解得
w
∗
=
(
X
T
X
)
−
1
X
T
y
{\bf{w}}^*=({\bf{X}^TX})^{-1}{\bf{X}}^T{\bf{}y}
w∗=(XTX)−1XTy
梯度下降法
在大多数情况下,分析解并不都是存在的,或者计算出分析解的代价太大,因此我们需要将求解过程转向数值解。此时,我们采用梯度下降法求解,其更新公式为
w
(
t
+
1
)
=
w
(
t
)
−
r
⋅
∂
L
(
w
)
∂
w
∣
w
=
w
(
t
)
\left.{\bf{w}}^{(t+1)}={\bf{w}}^{(t)}-r\cdot\frac{\partial L({\bf{w}})}{\partial {\bf{w}}}\right|_{{\bf{w}}={\bf{w}}^{(t)}}
w(t+1)=w(t)−r⋅∂w∂L(w)∣∣∣∣w=w(t)
其中,
r
r
r被称为学习率,是人为指定的。当
r
r
r过大时,会出现发散的情况;当
r
r
r过小时,会出现收敛过慢的情况。
随机梯度下降
当训练数据过大时,梯度下降法计算过程慢,SGD则改为使用小批量的数据来计算梯度。
均方误差的最优值的推导
损失函数的公式为
L
(
w
)
=
1
n
∣
∣
X
w
−
y
∣
∣
2
L({\bf{w}})=\frac{1}{n}||{\bf{Xw}-y}||^2
L(w)=n1∣∣Xw−y∣∣2
我们需要计算梯度
∇
L
(
w
)
=
[
∂
L
(
w
)
∂
w
0
∂
L
(
w
)
∂
w
1
⋯
∂
L
(
w
)
∂
w
m
]
T
\nabla L({\bf{w}})=\left[\frac{\partial L({\bf{w}})}{\partial w_0}\ \frac{\partial L({\bf{w}})}{\partial w_1}\ \cdots\ \frac{\partial L({\bf{w}})}{\partial w_m}\right]^T
∇L(w)=[∂w0∂L(w) ∂w1∂L(w) ⋯ ∂wm∂L(w)]T
将
L
(
w
)
L({\bf{w}})
L(w)展开得
L
(
w
)
=
1
n
∑
i
=
1
n
(
x
(
i
)
w
−
y
(
i
)
)
2
=
1
n
∑
i
=
1
n
(
w
0
+
w
1
x
1
(
i
)
+
⋯
+
w
m
x
m
(
i
)
−
y
(
i
)
)
2
\begin{aligned} L({\bf{w}}) &=\frac{1}{n}\sum_{i=1}^n({\bf{x}}^{(i)}{\bf{w}}-y^{(i)})^2\\ &=\frac{1}{n}\sum_{i=1}^n(w_0+w_1x_1^{(i)}+\cdots+w_mx_m^{(i)}-y^{(i)})^2 \end{aligned}
L(w)=n1i=1∑n(x(i)w−y(i))2=n1i=1∑n(w0+w1x1(i)+⋯+wmxm(i)−y(i))2
对
w
{\bf{w}}
w其中一个分量
w
j
w_j
wj求导得
∂
L
(
w
)
w
j
=
1
n
∑
i
=
1
n
2
(
x
(
i
)
w
−
y
(
i
)
)
x
j
(
i
)
=
2
n
[
x
j
(
1
)
(
x
(
1
)
w
−
y
(
1
)
)
+
x
j
(
2
)
(
x
(
2
)
w
−
y
(
2
)
)
+
⋯
+
x
j
(
n
)
(
x
(
n
)
w
−
y
(
n
)
)
]
=
2
n
[
x
j
(
1
)
x
j
(
2
)
⋯
x
j
(
n
)
]
[
x
(
1
)
w
−
y
(
1
)
x
(
2
)
w
−
y
(
2
)
⋮
x
(
n
)
w
−
y
(
n
)
]
=
2
n
X
[
:
,
j
]
T
(
X
w
−
y
)
\begin{aligned} \frac{\partial L({\bf{w}})}{w_j} &=\frac{1}{n}\sum_{i=1}^n2({\bf{x}}^{(i)}{\bf{w}}-{{y}}^{(i)})x_j^{(i)}\\ &=\frac{2}{n}[x_j^{(1)}({\bf{x}}^{(1)}{\bf{w}}-{{y}}^{(1)})+x_j^{(2)}({\bf{x}}^{(2)}{\bf{w}}-{y}^{(2)})+\cdots+x_j^{(n)}({\bf{x}}^{(n)}{\bf{w}}-{y}^{(n)})]\\ &=\frac{2}{n}[x_j^{(1)}\ x_j^{(2)}\ \cdots x_j^{(n)}] \begin{bmatrix} {\bf{x}}^{(1)}{\bf{w}}-{y^{(1)}}\\ {\bf{x}}^{(2)}{\bf{w}}-{y^{(2)}}\\ \vdots\\ {\bf{x}}^{(n)}{\bf{w}}-{y^{(n)}} \end{bmatrix}\\ &=\frac{2}{n}{\bf{X}}_{[:,j]}^T({\bf{Xw-y}}) \end{aligned}
wj∂L(w)=n1i=1∑n2(x(i)w−y(i))xj(i)=n2[xj(1)(x(1)w−y(1))+xj(2)(x(2)w−y(2))+⋯+xj(n)(x(n)w−y(n))]=n2[xj(1) xj(2) ⋯xj(n)]⎣⎢⎢⎢⎡x(1)w−y(1)x(2)w−y(2)⋮x(n)w−y(n)⎦⎥⎥⎥⎤=n2X[:,j]T(Xw−y)
其中,
X
[
:
,
j
]
{\bf{X}}_{[:,j]}
X[:,j]表示矩阵
X
{\bf{X}}
X的第
j
j
j列。将上式代入
∇
f
(
w
)
\nabla f(\bf{w})
∇f(w)可得
∇
f
(
x
)
=
[
2
n
X
[
:
,
0
]
T
(
X
w
−
y
)
2
n
X
[
:
,
1
]
T
(
X
w
−
y
)
⋯
2
n
X
[
:
,
m
]
T
(
X
w
−
y
)
]
T
=
2
n
[
X
[
:
,
0
]
T
X
[
:
,
1
]
T
⋮
X
[
:
,
m
]
T
]
(
X
w
−
y
)
=
2
n
X
T
(
X
w
−
y
)
\begin{aligned} \nabla f({\bf{x}}) &=\left[\frac{2}{n}{\bf{X}}_{[:,0]}^T({\bf{Xw-y}})\ \frac{2}{n}{\bf{X}}_{[:,1]}^T({\bf{Xw-y}})\ \cdots\ \frac{2}{n}{\bf{X}}_{[:,m]}^T({\bf{Xw-y}})\right]^T\\ &=\frac{2}{n} \begin{bmatrix}{\bf{X}}_{[:,0]}^T\\ {\bf{X}}_{[:,1]}^T\\ \vdots\\ {\bf{X}}_{[:,m]}^T \end{bmatrix}({\bf{Xw-y}})\\ &=\frac{2}{n}{\bf{X}}^T({\bf{Xw-y}}) \end{aligned}
∇f(x)=[n2X[:,0]T(Xw−y) n2X[:,1]T(Xw−y) ⋯ n2X[:,m]T(Xw−y)]T=n2⎣⎢⎢⎢⎡X[:,0]TX[:,1]T⋮X[:,m]T⎦⎥⎥⎥⎤(Xw−y)=n2XT(Xw−y)