线性回归推导
视频参考:白板推导
项目实战:线性回归、Lasso回归、岭回归预测北京PM2.5浓度
一. 回顾
对于一元线性回归模型, 假设从总体中获取了n组观察值(X1,Y1),(X2,Y2), …,(Xn,Yn)。对于平面中的这n个点,可以使用无数条曲线来拟合。要求样本回归函数尽可能好地拟合这组值。综合起来看,这条直线处于样本数据的中心位置最合理。 选择最佳拟合曲线的标准可以确定为:使总的拟合误差(即总残差)达到最小。有以下三个标准可以选择:
- 用“残差和最小”确定直线位置是一个途径。但很快发现计算“残差和”存在相互抵消的问题。
- 用“残差绝对值和最小”确定直线位置也是一个途径。但绝对值的计算比较麻烦。
- 最小二乘法的原则是以“残差平方和最小”确定直线位置。用最小二乘法除了计算比较方便外,得到的估计量还具有优良特性。这种方法对异常值非常敏感。
最常用的是普通最小二乘法( Ordinary Least Square,OLS):所选择的回归模型应该使所有观察值的残差平方和达到最小。(Q为残差平方和)- 即采用平方损失函数.
二.最小二乘法推导
2.1.前置条件:
对于N个数据集
D
=
(
x
1
,
y
1
)
,
(
(
x
2
,
y
2
)
⋅
⋅
⋅
⋅
⋅
⋅
(
x
N
,
y
N
)
D = {(x_{1},y_{1}),((x_{2},y_{2}) ······(x_{N},y_{N})}
D=(x1,y1),((x2,y2)⋅⋅⋅⋅⋅⋅(xN,yN)
其中xi ∈ℝp,yi∈ℝ,i =1,2,3,……N
在机器学习中常把向量定义为列向量,所以我们令feature值为X,label值为Y,即:
X
=
(
x
1
,
x
2
…
…
x
N
)
T
=
[
x
11
x
12
⋯
x
1
N
x
21
x
22
⋯
x
2
N
⋮
⋮
⋱
⋮
x
P
1
x
P
2
⋯
x
P
N
]
X = ( x_ {1},x_ {2}……x_ {N})^T= \left[ \begin{matrix} x_ {11} & x_ {12} & \cdots & x_ {1N} \\ x_ {21} & x_ {22} & \cdots & x_ {2N} \\ \vdots & \vdots & \ddots & \vdots \\ x_ {P1} & x_ {P2} & \cdots & x_ {PN} \\ \end{matrix} \right]
X=(x1,x2……xN)T=⎣⎢⎢⎢⎡x11x21⋮xP1x12x22⋮xP2⋯⋯⋱⋯x1Nx2N⋮xPN⎦⎥⎥⎥⎤
Y = [ y 1 y 2 ⋮ y N ] Y = \left[ \begin{matrix} y_{1} \\ y_{2} \\ \vdots \\ y_{N} \end{matrix} \right] Y=⎣⎢⎢⎢⎡y1y2⋮yN⎦⎥⎥⎥⎤
2.1.最小二乘法就损失函数极小值:
构建线性模型:
y
⃗
=
w
T
x
\vec{ y } = w^Tx
y=wTx
则对于损失函数
L
(
w
)
=
∑
i
=
1
n
∣
∣
w
T
x
i
−
y
i
∣
∣
2
L(w) = \sum_{i=1}^n ||w^Tx_{i} - y_{i}||^2
L(w)=i=1∑n∣∣wTxi−yi∣∣2
因为结果是一个实数,所以可以将式子直接改写为:
L
(
w
)
=
∑
i
=
1
n
(
w
T
x
i
−
y
i
)
2
L(w) = \sum_{i=1}^n (w^Tx_{i} - y_{i})^2
L(w)=i=1∑n(wTxi−yi)2
则:
L
(
w
)
=
∑
i
=
1
n
(
w
T
x
i
−
y
i
)
2
=
(
w
T
x
1
−
y
1
w
T
x
2
−
y
2
⋯
w
T
x
N
−
y
N
)
(
w
T
x
1
−
y
1
w
T
x
2
−
y
2
⋮
w
T
x
N
−
y
N
)
=
(
w
T
x
1
−
y
1
w
T
x
2
−
y
2
⋯
w
T
x
N
−
y
N
)
(
w
T
x
1
−
y
1
w
T
x
2
−
y
2
⋯
w
T
x
N
−
y
N
)
T
L(w) = \sum_{i=1}^n (w^Tx_{i} - y_{i})^2 \\= (\begin{matrix} w^Tx_{1} - y_{1} & w^Tx_{2} - y_{2} & \cdots & w^Tx_{N} - y_{N}\end{matrix})\left( \begin{matrix} w^Tx_{1} - y_{1} \\ w^Tx_{2} - y_{2} \\ \vdots \\ w^Tx_{N} - y_{N} \end{matrix} \right) \\=(\begin{matrix} w^Tx_{1} - y_{1} & w^Tx_{2} - y_{2} & \cdots & w^Tx_{N} - y_{N}\end{matrix})(\begin{matrix} w^Tx_{1} - y_{1} & w^Tx_{2} - y_{2} & \cdots & w^Tx_{N} - y_{N}\end{matrix})^T
L(w)=i=1∑n(wTxi−yi)2=(wTx1−y1wTx2−y2⋯wTxN−yN)⎝⎜⎜⎜⎛wTx1−y1wTx2−y2⋮wTxN−yN⎠⎟⎟⎟⎞=(wTx1−y1wTx2−y2⋯wTxN−yN)(wTx1−y1wTx2−y2⋯wTxN−yN)T
括号中的式子可以看做是两个向量相减:
(
w
T
x
1
−
y
1
w
T
x
2
−
y
2
⋯
w
T
x
N
−
y
N
)
=
(
w
T
x
1
w
T
x
2
⋯
w
T
x
N
)
−
(
y
1
y
2
⋯
y
N
)
=
w
T
(
x
1
x
2
⋯
x
N
)
−
(
y
1
y
2
⋯
y
N
)
(\begin{matrix} w^Tx_{1} - y_{1} & w^Tx_{2} - y_{2} & \cdots & w^Tx_{N} - y_{N}\end{matrix}) \\=(\begin{matrix} w^Tx_{1} & w^Tx_{2} & \cdots & w^Tx_{N} \end{matrix}) - (\begin{matrix} y_{1} &y_{2} & \cdots &y_{N}\end{matrix}) \\=w^T(\begin{matrix} x_{1} & x_{2}& \cdots & x_{N}\end{matrix}) - (\begin{matrix} y_{1} &y_{2} & \cdots &y_{N}\end{matrix})
(wTx1−y1wTx2−y2⋯wTxN−yN)=(wTx1wTx2⋯wTxN)−(y1y2⋯yN)=wT(x1x2⋯xN)−(y1y2⋯yN)
因为
X
=
(
x
1
x
2
⋯
x
N
)
T
Y
=
(
y
1
y
2
⋯
y
N
)
T
X = (\begin{matrix} x_{1} & x_{2}& \cdots & x_{N}\end{matrix}) ^T\\ Y = (\begin{matrix} y_{1} &y_{2} & \cdots &y_{N}\end{matrix}) ^T
X=(x1x2⋯xN)TY=(y1y2⋯yN)T
所以损失函数可以写成:
L
(
w
)
=
(
w
T
X
T
−
Y
T
)
(
w
T
X
T
−
Y
T
)
T
=
(
w
T
X
T
−
Y
T
)
(
X
w
−
Y
)
=
w
T
X
T
X
w
−
Y
T
X
w
−
w
T
X
T
Y
+
Y
T
Y
L(w) = (w^TX^T-Y^T)(w^TX^T-Y^T)^T \\ = (w^TX^T-Y^T)(Xw-Y) \\ = w^TX^TXw - Y^TXw-w^TX^TY+Y^TY
L(w)=(wTXT−YT)(wTXT−YT)T=(wTXT−YT)(Xw−Y)=wTXTXw−YTXw−wTXTY+YTY
因为损失函数是一个实数,所以式中的每一个函数皆为实数,所以
∣
Y
T
X
w
∣
=
∣
(
Y
T
X
w
)
T
∣
=
∣
w
T
X
T
Y
∣
|Y^TXw| = |(Y^TXw)^T| = |w^TX^TY|
∣YTXw∣=∣(YTXw)T∣=∣wTXTY∣
所以最终损失函数:
L
(
w
)
=
w
T
X
T
X
w
−
2
w
T
X
T
Y
+
Y
T
Y
L(w) = w^TX^TXw - 2w^TX^TY+Y^TY
L(w)=wTXTXw−2wTXTY+YTY
令损失函数最小求得的w就是我们的目标,即损失函数对w求导为0:
d
L
(
w
)
/
d
w
=
2
X
T
X
w
−
2
Y
T
X
=
0
\text{d}L(w)/dw = 2X^TXw-2Y^TX = 0
dL(w)/dw=2XTXw−2YTX=0
求得
w
=
(
X
T
X
)
−
1
X
T
Y
w = (X^TX)^{-1}X^TY
w=(XTX)−1XTY
这就是最小二乘法的解法,就是求得损失函数的极值点。
3.岭回归推导
引入岭回归是因为最小二乘法中是假定XTX是一定可逆的。但是当数据量过少或者特征存在多重共线性时,XTX可能不可逆。所以引入岭回归处理。岭回归的本质是正则化,是为了防止模型过拟合而加上一个惩罚系数。
正则化框架:
a
r
g
m
i
n
[
L
(
w
)
+
λ
P
(
w
)
]
argmin[L(w) + λP(w)]
argmin[L(w)+λP(w)]
其中P(w)就是惩罚项。
正则化分为L1回归和L2回归。
- Li回归中:P(w) = ||w||1
- L2回归中:P(w) = ||w||22= wTw
则:
J
(
w
)
=
∑
i
=
1
n
(
w
T
x
i
−
y
i
)
2
+
λ
w
T
w
=
(
w
T
X
T
−
Y
T
)
(
X
w
−
Y
)
+
λ
w
T
w
=
w
T
X
T
X
w
−
Y
T
X
w
−
w
T
X
T
Y
+
Y
T
Y
+
λ
w
T
w
J(w) = \sum_{i=1}^n (w^Tx_{i} - y_{i})^2 + λw^Tw \\ = (w^TX^T-Y^T)(Xw-Y)+ λw^Tw\\= w^TX^TXw - Y^TXw-w^TX^TY+Y^TY + λw^Tw
J(w)=i=1∑n(wTxi−yi)2+λwTw=(wTXT−YT)(Xw−Y)+λwTw=wTXTXw−YTXw−wTXTY+YTY+λwTw
即:(矩阵求导与最小二乘法相同)
J
(
w
)
=
w
T
(
X
T
X
+
λ
I
)
w
−
2
w
T
X
T
Y
+
Y
T
Y
J(w) = w^T(X^TX+λI)w - 2w^TX^TY+Y^TY
J(w)=wT(XTX+λI)w−2wTXTY+YTY
则
w
⃗
=
a
r
g
m
i
n
(
J
(
w
)
)
\vec{ w } =argmin(J(w))
w=argmin(J(w))
J(w)对w求导:
d
J
(
w
)
/
d
w
=
2
(
X
T
X
+
λ
I
)
w
−
2
Y
T
X
=
0
\text{d}J(w)/dw = 2(X^TX+λI)w-2Y^TX = 0
dJ(w)/dw=2(XTX+λI)w−2YTX=0
解得:
w
⃗
=
w
=
(
X
T
X
+
λ
I
)
−
1
X
T
Y
\vec{ w } =w = (X^TX+λI)^{-1}X^TY
w=w=(XTX+λI)−1XTY
4.注
- 矩阵的转置
( A B ) T = B T A T (AB)^T = B^TA^T (AB)T=BTAT - 矩阵求导