线性回归法(Linear Regression)
训练样本的表示: S = { x ( i ) , y ( i ) } i = 1 n , x ( i ) ∈ R d , y ( i ) ∈ R S=\{x^{(i)},y^{(i)}\}^n_{i=1},x^{(i)}\in R^d,y^{(i)}\in R S={x(i),y(i)}i=1n,x(i)∈Rd,y(i)∈R
也就是说,假设我们有一个d维的数据,我们也就需要d个参数对其进行拟合,最后输出一个实数值y。
Structural Model:线性函数 f ( x ) = β T x + b f(x)=\beta^Tx+b f(x)=βTx+b,拥有参数集 ( β , b ) (\beta,b) (β,b)
这里的 β \beta β 是一个d维的向量,也就是上面说的d个参数组成的。x是一个矢量,也就是我们希望预测的输入数据。
损失函数:RSS 残差平方和(Residual Sum of Square)
R
S
S
(
β
)
=
∑
i
=
1
n
(
y
(
i
)
−
f
(
x
(
i
)
)
)
2
=
∑
i
=
1
n
(
y
(
i
)
−
β
T
x
(
i
)
−
b
)
2
RSS(\beta)=\sum\limits^n_{i=1}(y^{(i)}-f(x^{(i)}))^2\\ =\sum\limits^n_{i=1}(y^{(i)}-\beta^Tx^{(i)}-b )^2
RSS(β)=i=1∑n(y(i)−f(x(i)))2=i=1∑n(y(i)−βTx(i)−b)2
可以使用梯度下降法对损失函数求最优解,得到我们需要的
β
\beta
β。
上面的写法比较啰嗦,我们选择使用矩阵的表示法:
首先把上面的 β \beta β 改写为 [ b ; β ] [b;\beta] [b;β],也就是变成了 [ b ; β 1 ; β 2 ; β 3 ; . . . ; β d ] [b;\beta_1;\beta_2;\beta_3;...;\beta_d] [b;β1;β2;β3;...;βd] 这样的一个列向量,在开始添加了一个1,实际上,也可以在末尾加,只要x的形式符合即可,西瓜书中是在末尾加的,这里需要注意一下。
然后我们改写一下数据的向量,变为
[
1
,
x
(
i
)
]
[1,x^{(i)}]
[1,x(i)] 这样一个d+1维的行向量,其中
x
(
i
)
x^{(i)}
x(i) 是一个d维行向量。然后我们将数据集中的n个这样的行向量竖着排列,就变成了一个
n
×
(
d
+
1
)
n\times (d+1)
n×(d+1) 维的矩阵
X
\boldsymbol X
X。
X
=
[
x
1
x
2
⋮
x
n
]
=
[
x
11
x
12
x
13
…
x
1
d
x
21
x
22
x
23
…
x
2
d
⋮
x
n
x
n
2
x
n
3
…
x
n
d
]
X=\begin{bmatrix} x_1\\ x_2\\ \vdots\\ x_n \end{bmatrix} =\begin{bmatrix} x_{11} \space x_{12} \space x_{13} \dots \space x_{1d}\\ x_{21} \space x_{22} \space x_{23} \dots \space x_{2d} \\ \vdots \\ x_n \space x_{n2} \space x_{n3} \dots \space x_{nd} \end{bmatrix}
X=⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡x11 x12 x13… x1dx21 x22 x23… x2d⋮xn xn2 xn3… xnd⎦⎥⎥⎥⎤
其中
x
i
j
x_{ij}
xij 是第i个数据的第j个分量。
于是我们就可以使用矩阵的形式来改写RSS如下:
R
S
S
(
β
)
=
∑
i
=
1
n
(
y
(
i
)
−
f
(
x
(
i
)
)
)
2
=
∑
i
=
1
n
(
y
(
i
)
−
β
T
x
(
i
)
−
b
)
2
=
(
y
−
X
β
)
T
(
y
−
X
β
)
RSS(\beta)=\sum\limits^n_{i=1}(y^{(i)}-f(x^{(i)}))^2\\ =\sum\limits^n_{i=1}(y^{(i)}-\beta^Tx^{(i)}-b )^2\\ =(\boldsymbol y-\boldsymbol X \boldsymbol \beta)^T(\boldsymbol y-\boldsymbol X \boldsymbol \beta)
RSS(β)=i=1∑n(y(i)−f(x(i)))2=i=1∑n(y(i)−βTx(i)−b)2=(y−Xβ)T(y−Xβ)
我们如果对其求最优解,也就是对
β
\beta
β 求一阶导,然后使其等于0,就可以得到使RSS最优的
β
\beta
β。
求导的推导过程如下,参考南瓜书:
∂ E w ^ ∂ w ^ = 2 X T ( X w ^ − y ) \cfrac{\partial E_{\hat{\boldsymbol w}}}{\partial \hat{\boldsymbol w}}=2\mathbf{X}^{\mathrm{T}}(\mathbf{X}\hat{\boldsymbol w}-\boldsymbol{y}) ∂w^∂Ew^=2XT(Xw^−y)
[推导]:将 E w ^ = ( y − X w ^ ) T ( y − X w ^ ) E_{\hat{\boldsymbol w}}=(\boldsymbol{y}-\mathbf{X}\hat{\boldsymbol w})^{\mathrm{T}}(\boldsymbol{y}-\mathbf{X}\hat{\boldsymbol w}) Ew^=(y−Xw^)T(y−Xw^)展开可得
E w ^ = y T y − y T X w ^ − w ^ T X T y + w ^ T X T X w ^ E_{\hat{\boldsymbol w}}= \boldsymbol{y}^{\mathrm{T}}\boldsymbol{y}-\boldsymbol{y}^{\mathrm{T}}\mathbf{X}\hat{\boldsymbol w}-\hat{\boldsymbol w}^{\mathrm{T}}\mathbf{X}^{\mathrm{T}}\boldsymbol{y}+\hat{\boldsymbol w}^{\mathrm{T}}\mathbf{X}^{\mathrm{T}}\mathbf{X}\hat{\boldsymbol w} Ew^=yTy−yTXw^−w^TXTy+w^TXTXw^
对 w ^ \hat{\boldsymbol w} w^求导可得
∂ E w ^ ∂ w ^ = ∂ y T y ∂ w ^ − ∂ y T X w ^ ∂ w ^ − ∂ w ^ T X T y ∂ w ^ + ∂ w ^ T X T X w ^ ∂ w ^ \cfrac{\partial E_{\hat{\boldsymbol w}}}{\partial \hat{\boldsymbol w}}= \cfrac{\partial \boldsymbol{y}^{\mathrm{T}}\boldsymbol{y}}{\partial \hat{\boldsymbol w}}-\cfrac{\partial \boldsymbol{y}^{\mathrm{T}}\mathbf{X}\hat{\boldsymbol w}}{\partial \hat{\boldsymbol w}}-\cfrac{\partial \hat{\boldsymbol w}^{\mathrm{T}}\mathbf{X}^{\mathrm{T}}\boldsymbol{y}}{\partial \hat{\boldsymbol w}}+\cfrac{\partial \hat{\boldsymbol w}^{\mathrm{T}}\mathbf{X}^{\mathrm{T}}\mathbf{X}\hat{\boldsymbol w}}{\partial \hat{\boldsymbol w}} ∂w^∂Ew^=∂w^∂yTy−∂w^∂yTXw^−∂w^∂w^TXTy+∂w^∂w^TXTXw^
由矩阵微分公式 ∂ a T x ∂ x = ∂ x T a ∂ x = a , ∂ x T A x ∂ x = ( A + A T ) x \cfrac{\partial\boldsymbol{a}^{\mathrm{T}}\boldsymbol{x}}{\partial\boldsymbol{x}}=\cfrac{\partial\boldsymbol{x}^{\mathrm{T}}\boldsymbol{a}}{\partial\boldsymbol{x}}=\boldsymbol{a},\cfrac{\partial\boldsymbol{x}^{\mathrm{T}}\mathbf{A}\boldsymbol{x}}{\partial\boldsymbol{x}}=(\mathbf{A}+\mathbf{A}^{\mathrm{T}})\boldsymbol{x} ∂x∂aTx=∂x∂xTa=a,∂x∂xTAx=(A+AT)x可得
∂ E w ^ ∂ w ^ = 0 − X T y − X T y + ( X T X + X T X ) w ^ \cfrac{\partial E_{\hat{\boldsymbol w}}}{\partial \hat{\boldsymbol w}}= 0-\mathbf{X}^{\mathrm{T}}\boldsymbol{y}-\mathbf{X}^{\mathrm{T}}\boldsymbol{y}+(\mathbf{X}^{\mathrm{T}}\mathbf{X}+\mathbf{X}^{\mathrm{T}}\mathbf{X})\hat{\boldsymbol w} ∂w^∂Ew^=0−XTy−XTy+(XTX+XTX)w^
∂ E w ^ ∂ w ^ = 2 X T ( X w ^ − y ) \cfrac{\partial E_{\hat{\boldsymbol w}}}{\partial \hat{\boldsymbol w}}=2\mathbf{X}^{\mathrm{T}}(\mathbf{X}\hat{\boldsymbol w}-\boldsymbol{y}) ∂w^∂Ew^=2XT(Xw^−y)
于是就令一阶导
−
2
X
T
(
y
−
X
β
∗
)
=
0
-2\boldsymbol X^T(\boldsymbol y-\boldsymbol X\boldsymbol\beta^*)=0
−2XT(y−Xβ∗)=0,可得:
β
∗
=
(
X
T
X
)
−
1
X
T
y
\boldsymbol \beta^*=(\boldsymbol X^T\boldsymbol X)^{-1}\boldsymbol X^T\boldsymbol y
β∗=(XTX)−1XTy
那么,我们给定输入
x
\boldsymbol x
x,通过线性回归器得到的结果即为
[
1
,
x
]
T
β
∗
[1,x]^T\boldsymbol\beta^*
[1,x]Tβ∗
Ridge线性回归(岭回归)和Lasso线性回归
但是上面的求解可能存在一些问题,因为
X
T
X
\boldsymbol X^T\boldsymbol X
XTX 不一定满秩,所以不一定有逆矩阵,比如当数据集中数据的个数比数据的维度还要低的时候。可以通过**正则化(Regularization)**来缓解这种情况,也就是在损失函数后再加一项
β
2
\beta^2
β2:
R
S
S
(
β
)
=
(
y
−
X
β
)
T
(
y
−
X
β
)
+
λ
β
T
β
RSS(\beta) =(\boldsymbol y-\boldsymbol X \boldsymbol \beta)^T(\boldsymbol y-\boldsymbol X \boldsymbol \beta) + \lambda\boldsymbol\beta^T\boldsymbol\beta
RSS(β)=(y−Xβ)T(y−Xβ)+λβTβ
通常正则化可以用来防止过拟合,而这里加上正则化项之后,我们求得的解就变成了:
β
∗
=
(
X
T
X
+
λ
I
)
−
1
X
T
y
\boldsymbol \beta^*=(\boldsymbol X^T\boldsymbol X + \lambda I)^{-1}\boldsymbol X^T\boldsymbol y
β∗=(XTX+λI)−1XTy
由于在
X
T
X
X^TX
XTX 的对角线上加上了比较小的数然后再求逆,而不是直接对
X
T
X
X^TX
XTX 求逆,就可以缓解不满秩而无法求逆的情况。
这种线性回归法也被叫做 Ridge线性回归(岭回归),也就是在损失函数上加了一个欧式距离(L2范数),同时,还有一种叫做 Lasso线性回归,区别就在于Lasso加上的是L1范数,即:
R
S
S
(
β
)
=
(
y
−
X
β
)
T
(
y
−
X
β
)
+
λ
∣
β
∣
RSS(\beta) =(\boldsymbol y-\boldsymbol X \boldsymbol \beta)^T(\boldsymbol y-\boldsymbol X \boldsymbol \beta) + \lambda|\boldsymbol\beta|
RSS(β)=(y−Xβ)T(y−Xβ)+λ∣β∣
这种线性回归求解起来比较难,因为绝对值函数不可导,没有解析解,而优点就在于它可以获得一个稀疏解向量,也就是说,得到的
β
\beta
β 中很多分量为0、少数为1,这可以起到一个筛选维度的作用,因为只有几个为1的分量是有用的,增加了可解释性,也有一些降噪的意思。
为什么Lasso线性回归会得到稀疏的解向量呢,我们来看两张图,其中左边的是Lasso,右边是ridge:
![img](https://gitee.com/howard-jiahao/pic-bed/raw/master/img/1351564-20190511192011289-592360099.png)
这是以二维的数据为例,即
x
∈
R
2
\boldsymbol x \in \boldsymbol R^2
x∈R2 ,由于Lasso的限制是
∣
β
∣
≤
t
|\beta|\le t
∣β∣≤t,而Ridge的限制是
β
2
≤
t
\beta ^2\le t
β2≤t,所以画出来限制域就是灰色的这部分,一个是正方形,一个是圆形,而坐标的两个维度就是
β
\beta
β 的两个维度(图里是
w
w
w)。图中的椭圆表示了一个个等高线,在等高线上具有相同的
R
S
S
RSS
RSS:
R
S
S
(
β
)
=
∑
i
=
1
n
(
y
(
i
)
−
f
(
x
(
i
)
)
)
2
=
∑
i
=
1
n
(
y
(
i
)
−
β
T
x
(
i
)
−
b
)
2
RSS(\beta)=\sum\limits^n_{i=1}(y^{(i)}-f(x^{(i)}))^2\\ =\sum\limits^n_{i=1}(y^{(i)}-\beta^Tx^{(i)}-b )^2\\
RSS(β)=i=1∑n(y(i)−f(x(i)))2=i=1∑n(y(i)−βTx(i)−b)2
我们期望的最优解也就是图中的
w
∗
(
β
∗
)
w^*(\beta^*)
w∗(β∗),但是由于我们需要满足限制条件,则一定需要和灰色区域相交,就无法达到这样的解,而越远离这个最优解,损失也就越大,所以我们能够达到的最优解就是和灰色区域相切的解,这样的RSS是最小的。从图中可以看出,如果是一个圆形区域,不易相切在轴上,而正方形区域则可以做到,这也就是为什么Lasso会更容易得到稀疏解的原因,而Ridge很多时候只能得到靠近0的解。