主要内容
- 子空间投影
- 最小二乘法
正文
虽然我们很早就接触了投影,但是我们可能并没有理解他的几何意义,这里的子空间的投影将会刷新我们对投影的认识。
一维子空间到一维子空间的投影
看下面的这个图片,想象一下,这是在二维平面中的两个直线,而且过原点。那么它们就是两个一维子空间。这是一个比较简单的例子,而后我们再扩展到高维空间。
在这里有两个子空间
a
a
a和
b
b
b,我们想在
a
a
a上找到离
b
b
b最近的地方,让这个最近的地方代替
b
b
b,于是这样就会产生误差。我们都知道垂线是最短的。所以,我们将
b
b
b上的每一点投影下去,就会得到一个线段,它构成一个向量
p
p
p,这个线段就是
a
a
a上离
b
b
b最近的地方。而
p
p
p是在向量
a
a
a上的一个向量。所以他们之前的关系可以表示为
p
=
x
a
p=xa
p=xa此外,图中的
e
e
e表示误差。根据投影,我们可以得到
e
e
e与
a
a
a的垂直关系
a
T
e
=
0
a^Te=0
aTe=0,即:
a
T
(
b
−
x
a
)
=
0
a^T(b-xa)=0
aT(b−xa)=0
a
T
b
−
x
a
T
a
=
0
a^Tb-xa^Ta=0
aTb−xaTa=0
x
=
a
T
b
a
T
a
x=\frac{a^Tb}{a^Ta}
x=aTaaTb通过上面的化简,我们可以得到
x
x
x的值,然后将
x
x
x导入到
p
=
x
a
p=xa
p=xa中,我们可以得到
p
=
a
a
T
b
a
T
a
p=a\frac{a^Tb}{a^Ta}
p=aaTaaTb
p
=
P
b
p=Pb
p=Pb表示
b
b
b经过一个投影矩阵
P
P
P的作用,得到了它的投影。那么从这种形式
p
=
P
b
p=Pb
p=Pb上来看,
P
=
a
a
T
a
T
a
P=\frac{aa^T}{a^Ta}
P=aTaaaT从上面的图中观察,我们将
b
b
b进行一次投影得到了
p
p
p,将
b
b
b进行两次投影,也就是将
p
p
p再进行投影,那么我们仍然会得到
p
p
p,这就是投影矩阵
P
P
P的特殊性质,我们先从几何的角度分析了一下。用代数来表示就是:
P
2
=
P
P^2=P
P2=P
P
T
=
P
P^T=P
PT=P后者可以从
P
P
P的公式中发现,它明显是对称的。
实际上,一开始我们说我们企图找到 a a a上离 b b b的最近的地方来代替 b b b,这样就可以用 a a a进行表示了,然而这样的表示会产生误差 e e e。所以,这种思想为我们提供了解决方程组无解问题的思路,那就是将向量往系数矩阵的列空间中投影,这样可以产生一个最近似的解,然而仍然是有误差存在的。
子空间的投影
我们发现上面的公式中,
a
a
a是一个向量,当我们把他扩展到高维的时候,公式中含有的应该是矩阵。例如下面的图
这是位于三维空间中的两个子空间。
b
b
b是三维空间中过原点的一条直线,
A
A
A是三维空间中过原点的一个平面。对于
A
x
=
b
Ax=b
Ax=b,显然
b
b
b不在
A
A
A的列空间中,所以方程组无解,不过我们试图找到
A
A
A中离
b
b
b最近的一个地方,来近似求解,这样我们会得到一个误差,不过该误差在此情况下,是最小的,也就是说,这种方法求出来的解是一个最优解但不是真实解。同样的,由于垂线最短,所以我们做投影,得到
p
p
p,这样
p
p
p显然位于
A
A
A的列空间中,于是我们可以得到
A
x
^
=
p
A\hat{x}=p
Ax^=p
x
^
\hat{x}
x^表示
x
x
x的近似解。上面的方程意味着,
p
p
p可以由
A
A
A中的向量线性组合得到。于是刚才求解
x
x
x的问题就化成了求解
x
^
\hat{x}
x^的问题。对于方程
A
x
^
=
p
A\hat{x}=p
Ax^=p,我们只能得到
A
A
A的信息,比如我们可以得到
A
A
A的一组基,然而关于
p
p
p的信息,我们不知道。所以还需要寻找其他的条件。注意到,误差
e
e
e在几何上是垂直
A
A
A的,所以有
A
T
e
=
0
A^Te=0
ATe=0,即:
A
T
(
b
−
A
x
^
)
=
0
A^T(b-A\hat{x})=0
AT(b−Ax^)=0在这个方程中,只有
x
^
\hat{x}
x^是未知的,因而,我们可以求得:
x
^
=
(
A
T
A
)
−
1
A
T
b
\hat{x}=(A^TA)^{-1}A^Tb
x^=(ATA)−1ATb类似一维的情况,我们得到了
x
^
\hat{x}
x^的值,也就可以得到
P
P
P的值,
p
=
A
(
A
T
A
)
−
1
A
T
b
p=A(A^TA)^{-1}A^Tb
p=A(ATA)−1ATb
P
=
A
(
A
T
A
)
−
1
A
T
P=A(A^TA)^{-1}A^T
P=A(ATA)−1AT 同样的,无论我们从几何上看
P
2
P^2
P2还是从公式上看,它都满足
P
2
=
p
P^2=p
P2=p 另外还满足:
P
T
=
(
A
(
A
T
A
)
−
1
A
T
)
T
=
A
(
A
T
A
)
−
1
A
T
=
P
P^T=(A(A^TA)^{-1}A^T)^T=A(A^TA)^{-1}A^T=P
PT=(A(ATA)−1AT)T=A(ATA)−1AT=P所以它是对称矩阵。
至此我们便得到了高维情况下的近似解的形式,投影矩阵的形式。利用这些公式我们可以求解线性方程组无解的问题。
最小二乘法
首先看一下,两个特殊的情况: 当 b b b垂直于 A A A时, b b b在 A A A上的投影为一个点,代数上表示为 0 0 0;从公式上也可以看出,当 b b b垂直于 A A A时, A T b = 0 A^Tb=0 ATb=0,所以 p = A ( A T A ) − 1 A T b = 0 p=A(A^TA)^{-1}A^Tb=0 p=A(ATA)−1ATb=0。另一个极端情况就是当 b b b在 A A A中时,这是从几何上看,它的投影仍然为它本身;在公式上,当 b b b在 A A A中时,就有 A x = b Ax=b Ax=b,所以 p = A ( A T A ) − 1 A T b = A ( A T A ) − 1 A T A x = A x = b p=A(A^TA)^{-1}A^Tb=A(A^TA)^{-1}A^TAx=Ax=b p=A(ATA)−1ATb=A(ATA)−1ATAx=Ax=b。
从上面的这两种情况可以看出,向量
b
b
b总是含有两个分量,一个位于
A
A
A的列空间中,一个位于与
A
A
A的列空间垂直的空间中。而投影矩阵的作用就是拿掉垂直的那个分量,而保留列空间中的那个分量。这种关系可以用下面的这幅图来表示:
p
p
p是
b
b
b的投影,
e
e
e是误差向量。我们可以通过投影矩阵
P
P
P得到
p
p
p,即
p
=
P
b
p=Pb
p=Pb 我们可以使用类似的方式来表示
e
e
e:
e
=
(
I
−
P
)
b
e=(I-P)b
e=(I−P)b
最小二乘法: 例题:求解三个点
(
1
,
1
)
,
(
2
,
2
)
,
(
3
,
2
)
(1,1),(2,2),(3,2)
(1,1),(2,2),(3,2)拟合的直线方程。
我们可以设出直线方程:y=C+Dx,代入三个点列出方程。
{
C
+
D
=
1
C
+
2
D
=
2
C
+
3
D
=
2
=
[
1
1
1
2
1
3
]
[
C
D
]
=
[
1
2
2
]
\begin{cases}C+D=1\\C+2D=2\\C+3D=2\end{cases}\qquad = \qquad \begin{bmatrix}1&1\\1&2\\1&3\end{bmatrix}\begin{bmatrix}C\\D\end{bmatrix}=\begin{bmatrix}1\\2\\2\end{bmatrix}
⎩⎪⎨⎪⎧C+D=1C+2D=2C+3D=2=⎣⎡111123⎦⎤[CD]=⎣⎡122⎦⎤ 显然这个方程组无解。实际上这是一个线性方程组
A
x
=
b
Ax=b
Ax=b无解的问题。但是我们可以通过像投影的方式,来求一个近似解。现在先求误差。实际的点为
b
b
b,然而在直线上的点为
A
x
Ax
Ax,不妨设为
p
p
p。于是我们可以得到误差:
∣
e
∣
2
=
∣
A
x
−
b
∣
2
|e|^2=|Ax-b|^2
∣e∣2=∣Ax−b∣2 在图像上显示为直线上的点到实际点的竖直距离的平方。对于实际点
b
b
b,拟合后的点
p
p
p在
A
A
A的列空间上,并且
e
e
e在
A
A
A的左零空间上,反映在图上为:
接下来的关键在于如何拟合。在上面的图中,我们可以发现,
p
p
p几乎就是
b
b
b在列空间上的投影。根据之前的投影的内容我们可以得到:
p
=
A
(
A
T
A
)
−
1
A
T
b
p=A(A^TA)^{-1}A^Tb
p=A(ATA)−1ATb 我们所求的
p
p
p,也就是拟合的点,位于列空间上,又有
A
x
^
=
p
=
A
(
A
T
A
)
−
1
A
T
b
A\hat{x}=p=A(A^TA)^{-1}A^Tb
Ax^=p=A(ATA)−1ATb
x
^
=
(
A
T
A
)
−
1
A
T
b
\hat{x}=(A^TA)^{-1}A^Tb
x^=(ATA)−1ATb
A
T
A
x
^
=
A
T
b
A^TA\hat{x}=A^Tb
ATAx^=ATb到这里我们可以发现,这个方程实际上就是在
A
x
^
=
b
A\hat{x}=b
Ax^=b上乘以了
A
T
A^T
AT,所以在解决无解的问题时,我们通常乘以
A
T
A^T
AT来解决问题。这便是最小二乘法的线性代数解释,使用微积分的方法,我们得到的过程可能是不同的,但是在关键的方程上还是相同的。
比如使用微积分的方法,我们将三个点的误差记为 e 1 , e 2 , e 3 e_1,e_2,e_3 e1,e2,e3,而 ∣ e ∣ 2 = ∣ e 1 ∣ 2 + ∣ e 2 ∣ 2 + ∣ e 3 ∣ 2 = ( C + D − 1 ) 2 + . . . . . |e|^2=|e_1|^2+|e_2|^2+|e_3|^2=(C+D-1)^2+..... ∣e∣2=∣e1∣2+∣e2∣2+∣e3∣2=(C+D−1)2+..... 将这个方程看成是二元一次函数,通过求偏导来确定极小值。这得到的结果与上面的结果是相同的。微积分的方法更倾向于使用纯代数的方法来求解,而线性代数的方法则是更多的利用了几何意义。