两个观点看最小二乘法
写在前面
之前在学习《机器学习基石》的线性回归章节的时候,林老师在最后的部分给了最小二乘的另一种观点当时很不理解。之后在《线性代数及其应用》的目录上看到最小二乘法的内容但是由于那时还有其他的事情要做,所以就暂时没有看。今天在《从零开始:机器学习的数学原理和算法实践》读到对应的内容这一次是从线性代数的近似解角度切入的。
传统角度的最优化问题
从统计学角度来看线性回归无非就是找到一条直线去尽可能的拟合图中的散点。拟合的标准就是使得直线到散点距离之和最小。在机器学习中直线就是我们训练出来的模型,给定一个输入它能够预测相对相应的值。图中的点就是实际的值,我们希望我们预测的值与实际的值的偏差越小越好这也就诞生了最小二乘法。传统最小二乘法中“二乘”是平方的意思,“最小二乘”就是指平方和最小,具体来说就是各个测量值和真实值之间的误差的平方和最小化,即各个点横坐标对应的原始点纵坐标与直线上拟合点纵坐标误差的平方和最小化,假定实际值用b表示,模型预测出来的线用p表示写成表达式就是:
∣
b
−
p
∣
=
(
b
1
−
p
1
)
2
+
(
b
2
−
p
2
)
2
+
⋯
(
b
3
−
p
3
)
2
|b - p| = \sqrt{\smash[b]{(b_1 - p_1)^{2} + (b_2 - p_2)^{2} + \dotsb (b_3 - p_3)^{2}}}
∣b−p∣=(b1−p1)2+(b2−p2)2+⋯(b3−p3)2
它的解析解可以看线性回归章节中的前半部分,最后训练得到的结果就是
W
L
I
N
=
(
X
T
X
)
−
1
X
T
y
W_{LIN} = (X^\mathrm{T}X)^{-1} X^\mathrm{T}y
WLIN=(XTX)−1XTy
线性代数角度的近似解
仍然是这张图,在线性代数看来刚开始我们的目标是找到一条直线使得能够穿过这三个点(满足这三个点)。容易得如下方程组。
{
x
1
+
x
2
=
0
2
x
1
+
x
2
=
0
x
1
+
x
1
=
2
\begin{cases} x_1 + x_2 = 0 \\ 2x_1 + x_2 = 0 \\ x_1 + x_1 = 2 \end{cases}
⎩⎪⎨⎪⎧x1+x2=02x1+x2=0x1+x1=2
线性代数告诉我们这个方程组没有精确解,在这种情况下我们退而求其次去求解一个近似解,这就是最小二乘做的工作。
将上述方程组写成
A
x
=
b
Ax = b
Ax=b的形式。现在我们已经知道了A中的列向量所张成的空间不能够表示b,我们的近似解只能够在A张成的空间里面去寻找。那么找哪一条比较好呢?当然是距离目标解距离最近的那一条,也就是b在A空间上的投影向量,下图是一个例子。
如图所示AB与X轴的差值最小的一个线段就是AG(垂线最短)。同时我们知道BG就是AB在X轴上的投影。同样的我们找到了b在A空间上的投影p向量如下图所示:
p就是b在A空间上的近似。我们要求的解变成如下形式。
A
x
=
b
=
>
A
x
^
=
p
Ax = b => A\hat{x} = p
Ax=b=>Ax^=p
那么投影向量p具有哪些特点呢?
(1)投影向量p
必须在二维空间即列空间C(A)上,也就是:
A
x
^
=
[
a
1
a
1
]
[
x
1
^
x
2
^
]
=
p
A\hat{x} = \begin{bmatrix} a_1 & a_1 \end{bmatrix} \begin{bmatrix} \hat{x_1} \\ \hat{x_2} \end{bmatrix} = p
Ax^=[a1a1][x1^x2^]=p
(2)误差向量垂直于二维空间即列空间C(A)上的任一向量,误差向量e垂直于二维空间的两个基向量——向量a1和向量a2容,易知道有:
a
1
⋅
e
=
0
和
a
2
⋅
e
=
0
a_1 \cdot e = 0 \ 和 \ a_2 \cdot e = 0
a1⋅e=0 和 a2⋅e=0
上述两条关键信息能够有效地帮助我们约束到这个合理的投影向量p
。
将等式关系
e
=
b
−
p
和
p
=
A
x
^
e = b - p \ 和\ p = A\hat{x}
e=b−p 和 p=Ax^带入方程中得到:
a
1
⋅
e
=
a
1
⋅
(
b
−
p
)
=
a
1
⋅
(
b
−
A
x
^
)
=
0
a_1 \cdot e = a_1\cdot(b - p) = a_1\cdot(b - A\hat{x}) = 0
a1⋅e=a1⋅(b−p)=a1⋅(b−Ax^)=0由于向量内积可以转化为矩阵乘法形式,上述式子可以进一步化简。上述式子可以化简为:
a
1
⋅
e
=
a
1
⋅
(
b
−
p
)
=
a
1
⋅
(
b
−
A
x
^
)
=
a
1
T
⋅
(
b
−
A
x
^
)
=
0
a_1 \cdot e = a_1\cdot(b - p) = a_1\cdot(b - A\hat{x}) =a_1^\mathrm{T}\cdot(b - A\hat{x})= 0
a1⋅e=a1⋅(b−p)=a1⋅(b−Ax^)=a1T⋅(b−Ax^)=0a2同理:
a
2
⋅
e
=
a
2
⋅
(
b
−
p
)
=
a
2
⋅
(
b
−
A
x
^
)
=
a
2
T
⋅
(
b
−
A
x
^
)
=
0
a_2 \cdot e = a_2\cdot(b - p) = a_2\cdot(b - A\hat{x}) =a_2^\mathrm{T}\cdot(b - A\hat{x})= 0
a2⋅e=a2⋅(b−p)=a2⋅(b−Ax^)=a2T⋅(b−Ax^)=0
进一步的可以简化为:
[
a
1
a
2
]
(
b
−
A
x
^
)
=
0
\begin{bmatrix} {a_1} \\ {a_2} \end{bmatrix} (b - A\hat{x})= 0
[a1a2](b−Ax^)=0
A
T
(
b
−
A
x
^
)
=
0
=
>
A
T
A
x
^
=
A
T
b
A^\mathrm{T}(b - A\hat{x}) =0 => A^\mathrm{T}A\hat{x} = A^\mathrm{T}b
AT(b−Ax^)=0=>ATAx^=ATb
再将近似向量p与投影矩阵P
A
x
^
=
p
=
P
b
A\hat{x} = p = Pb
Ax^=p=Pb带入可以得到如下的方程组:
{
x
^
=
(
A
T
A
)
−
1
A
T
b
p
=
A
(
A
T
A
)
−
1
A
T
b
P
=
A
(
A
T
A
)
−
1
A
T
\begin{cases} \hat{x} = (A^\mathrm{T}A)^{-1} A^\mathrm{T}b\\ p = A(A^\mathrm{T}A)^{-1}A^\mathrm{T}b \\ P = A(A^\mathrm{T}A)^{-1}A^\mathrm{T} \end{cases}
⎩⎪⎨⎪⎧x^=(ATA)−1ATbp=A(ATA)−1ATbP=A(ATA)−1AT
到此我们就可以求出近似解了。
写在最后
我们可以看到传统的最小二乘的结果与线性代数得到的结果保持一致:
W
L
I
N
=
(
X
T
X
)
−
1
X
T
y
W_{LIN} = (X^\mathrm{T}X)^{-1} X^\mathrm{T}y
WLIN=(XTX)−1XTy与
x
^
=
(
A
T
A
)
−
1
A
T
b
\hat{x} = (A^\mathrm{T}A)^{-1} A^\mathrm{T}b
x^=(ATA)−1ATb。