\qquad
看了很多关于最小二乘解的博客,事实上都没有找到自己想要的证明过程,后来学了矩阵函数时才彻底搞明白了这件事情,所以和大家简单分享如下:
\qquad
已知矩阵
A
m
×
n
(
m
>
n
)
A_{m×n}(m>n)
Am×n(m>n)是列满秩的,则超定方程组
A
x
=
B
Ax=B
Ax=B的最小二乘解为
x
=
(
A
T
A
)
−
1
A
T
B
x=(A^TA)^{-1}A^TB
x=(ATA)−1ATB
\qquad
需要说明的是根据线性代数的知识,
r
a
n
k
(
A
T
A
)
=
r
a
n
k
(
A
A
T
)
=
r
a
n
k
(
A
)
=
n
rank(A^TA)=rank(AA^T)=rank(A)=n
rank(ATA)=rank(AAT)=rank(A)=n,而
A
T
A
A^TA
ATA的维数是n×n,所以
A
T
A
A^TA
ATA一定可逆。事实上MATLAB矩阵求伪逆用的也是这个公式(只不过令
B
=
E
m
B=E_m
B=Em)。
\qquad
最小二乘法是让近似解代入的等式右边的
B
∗
B^*
B∗与
B
B
B的度量最小,为了和向量的模长兼容,这里取的是矩阵的Frobenius范数(详见这里)因此问题转换为
x
∗
=
a
r
g
min
x
∣
∣
B
∗
−
B
∣
∣
F
s
.
t
.
A
x
∗
=
B
∗
x^*=arg\min_{x}||B^*-B||_F\\ s.t.Ax^*=B^*
x∗=argxmin∣∣B∗−B∣∣Fs.t.Ax∗=B∗
为了简便起见,我们仅讨论B是向量的情况(事实上矩阵的情况也可以通过向量化的方法加以解决),即
A
x
=
b
Ax=b
Ax=b。
该问题也等价为
F
(
x
)
=
(
A
x
−
b
)
T
(
A
x
−
b
)
x
∗
=
a
r
g
min
x
F
(
x
)
F(x)=(Ax-b)^T(Ax-b)\\ x^*=arg\min_{x}F(x)
F(x)=(Ax−b)T(Ax−b)x∗=argxminF(x)
将
F
(
x
)
F(x)
F(x)展开如下:
F
(
x
)
=
(
A
x
−
b
)
T
(
A
x
−
b
)
=
(
x
T
A
−
b
T
)
(
A
x
−
b
)
=
x
T
(
A
T
A
)
x
−
b
T
A
x
−
A
T
b
x
+
b
T
b
=
x
T
(
A
T
A
)
x
−
2
x
T
(
A
T
b
)
+
b
T
b
\begin{aligned} F(x)&=(Ax-b)^T(Ax-b)\\ &=(x^TA-b^T)(Ax-b)\\ &=x^T(A^TA)x-b^TAx-A^Tbx+b^Tb\\ &=x^T(A^TA)x-2x^T(A^Tb)+b^Tb \end{aligned}
F(x)=(Ax−b)T(Ax−b)=(xTA−bT)(Ax−b)=xT(ATA)x−bTAx−ATbx+bTb=xT(ATA)x−2xT(ATb)+bTb
需要说明的是
b
T
A
x
b^TAx
bTAx是数,因此它等于本身的转置等于
A
T
b
x
A^Tbx
ATbx,下面就是求
F
(
x
)
F(x)
F(x)的最小值,由于
A
A
T
AA^T
AAT是半正定的(因为
x
T
(
A
A
T
)
x
=
(
A
T
x
)
T
(
A
T
x
)
≥
0
x^T(AA^T)x=(A^Tx)^T(A^Tx)\geq0
xT(AAT)x=(ATx)T(ATx)≥0),而因为之前我们证明了
A
A
A列满秩时
A
T
A
A^TA
ATA可逆,因此
A
T
A
A^TA
ATA必定没有零特征值,所以
A
A
T
AA^T
AAT是正定的。这样,
F
(
x
)
F(x)
F(x)的极值点就一定是极小值点(即严格凸优化问题)。下面无非就是求导的问题:
∂
F
(
x
)
∂
x
=
(
A
T
A
+
(
A
T
A
)
T
)
x
−
2
(
A
T
b
)
=
2
(
A
T
A
)
x
−
2
(
A
T
b
)
\frac{\partial F(x)}{\partial x}=(A^TA+(A^TA)^T)x-2(A^Tb)\\= 2(A^TA)x-2(A^Tb)
∂x∂F(x)=(ATA+(ATA)T)x−2(ATb)=2(ATA)x−2(ATb)
令其等于0,求得
x
∗
=
(
A
T
A
)
−
1
A
T
b
x^*=(A^TA)^{-1}A^Tb
x∗=(ATA)−1ATb
这就是
F
(
x
)
F(x)
F(x)的极小值点即最小二乘解。
不清楚矩阵函数求导的同志可以看一下如下的公式:
d
A
(
x
)
B
(
x
)
d
x
=
d
A
(
x
)
x
B
(
x
)
+
A
(
x
)
d
B
(
x
)
d
x
d
x
T
A
x
d
x
=
(
A
+
A
T
)
x
d
C
T
x
d
x
=
d
x
T
C
d
x
=
C
\begin{aligned} &\frac{dA(x)B(x)}{dx}=\frac{dA(x)}{x}B(x)+A(x)\frac{dB(x)}{dx}\\ &\frac{dx^TAx}{dx}=(A+A^T)x\\ &\frac{dC^Tx}{dx}=\frac{dx^TC}{dx}=C \end{aligned}
dxdA(x)B(x)=xdA(x)B(x)+A(x)dxdB(x)dxdxTAx=(A+AT)xdxdCTx=dxdxTC=C