[数学基础]线性代数
学习内容源于深度之眼公众号的花书训练营课程
1. 从特殊矩阵的对角化到矩阵压缩
假设
B
B
B 是一个方阵,如果存在一个单位正交矩阵
P
P
P 使得
A
=
P
B
P
−
1
A = PBP^{-1}
A=PBP−1 ,其中
A
A
A 是一个对角阵,则称
A
A
A 是
B
B
B 的对角化。单位正交矩阵
P
P
P 有这么一个性质:
P
P
T
=
P
T
P
=
I
PP^{T}=P^{T}P=I
PPT=PTP=I ,再结合逆矩阵的性质可知
P
T
=
P
−
1
P^T=P^{-1}
PT=P−1 ,从而有
B
=
P
−
1
A
P
=
P
T
A
P
B=P^{-1}AP=P^TAP
B=P−1AP=PTAP
然而并不是所有的方阵都可以进行对角化的,根据定理可知,对称矩阵一定可以对角化,其中如果是对称正定矩阵则对角阵
A
A
A 的元素
λ
i
\lambda_i
λi 均为正数。
我们令单位正交矩阵
P
T
=
[
u
1
,
u
2
,
⋯
,
u
n
]
P^T = [\boldsymbol{ u_1,u_2,\cdots,u_n}]
PT=[u1,u2,⋯,un] ,其中
u
i
\boldsymbol{u_i}
ui 是一个
n
n
n 维的列向量,则
B
B
B 可以这样表示
B
=
[
u
1
,
u
2
,
⋯
,
u
n
]
[
λ
1
λ
2
⋱
λ
n
]
[
u
1
T
u
2
T
⋮
u
n
T
]
=
[
λ
1
u
1
,
λ
2
u
2
,
⋯
,
λ
n
u
n
]
[
u
1
T
u
2
T
⋮
u
n
T
]
=
λ
1
u
1
u
1
T
+
λ
2
u
2
u
2
T
+
⋯
+
λ
n
u
n
u
n
T
\begin{aligned} B &= [\boldsymbol{ u_1,u_2,\cdots,u_n}] \begin{bmatrix} \lambda_1& & & \\ &\lambda_2 & &\\ & & \ddots & \\ & & & \lambda_n \end{bmatrix} \begin{bmatrix} \boldsymbol{u_1}^T \\ \boldsymbol{u_2}^T\\ \vdots \\ \boldsymbol{u_n}^T \end{bmatrix} \\ & = [\lambda_1\boldsymbol{u_1},\lambda_2\boldsymbol{u_2},\cdots,\lambda_n\boldsymbol{u_n}] \begin{bmatrix} \boldsymbol{u_1}^T \\ \boldsymbol{u_2}^T\\ \vdots \\ \boldsymbol{u_n}^T \end{bmatrix} \\ & = \lambda_1\boldsymbol{u_1}\boldsymbol{u_1}^T + \lambda_2\boldsymbol{u_2}\boldsymbol{u_2}^T + \cdots + \lambda_n\boldsymbol{u_n}\boldsymbol{u_n}^T \end{aligned}
B=[u1,u2,⋯,un]⎣⎢⎢⎡λ1λ2⋱λn⎦⎥⎥⎤⎣⎢⎢⎢⎡u1Tu2T⋮unT⎦⎥⎥⎥⎤=[λ1u1,λ2u2,⋯,λnun]⎣⎢⎢⎢⎡u1Tu2T⋮unT⎦⎥⎥⎥⎤=λ1u1u1T+λ2u2u2T+⋯+λnununT
其中,
u
i
u
i
T
\boldsymbol{u_i}\boldsymbol{u_i}^T
uiuiT 是一个
n
×
n
n \times n
n×n 的矩阵。因此矩阵
B
B
B 可以看作是
n
n
n 个特别矩阵的加权和。根据存储条件或者误差限可以适当的进行近似替代,将对角阵
A
A
A 的元素
λ
i
\lambda_i
λi 进行降序排列,取前几项的和去近似矩阵
B
B
B ,
λ
i
\lambda_i
λi 在这里就是信息占比权重,比如,取前
k
k
k 个
λ
\lambda
λ 做矩阵
B
B
B 的近似:
B
^
=
λ
1
u
1
u
1
T
+
λ
2
u
2
u
2
T
+
⋯
+
λ
n
u
k
u
k
T
\hat{B} = \lambda_1\boldsymbol{u_1}\boldsymbol{u_1}^T + \lambda_2\boldsymbol{u_2}\boldsymbol{u_2}^T + \cdots + \lambda_n\boldsymbol{u_k}\boldsymbol{u_k}^T
B^=λ1u1u1T+λ2u2u2T+⋯+λnukukT
此时矩阵
B
^
\hat{B}
B^ 包含了
B
B
B 的信息的
η
=
∑
i
=
1
k
λ
i
∑
i
=
1
n
λ
i
\eta = \frac{\displaystyle \sum_{i=1}^k\lambda_i}{\displaystyle \sum_{i=1}^n\lambda_i}
η=i=1∑nλii=1∑kλi 。这个过程就是矩阵压缩的技术。
2. 从特殊矩阵的分解到一般矩阵的SVD分解
矩阵对角化的条件还是蛮苛刻的,必须满足两个条件:方阵以及对称。可见一般情况下一个矩阵 A m × n A_{m\times n} Am×n 是不能进行对角化的。那么有没有其他的分解方法呢?
对于任意一个矩阵 A m × n A_{m \times n} Am×n ,我们可以推导出 ( A T A ) n × n (A^TA)_{n\times n} (ATA)n×n 是一个对称半正定矩阵。
对称性:
( A T A ) T = A T ( A T ) T = A T A (A^TA)^T=A^T(A^T)^T=A^TA (ATA)T=AT(AT)T=ATA
半正定性:
∀ x ∈ R n , x T ( A T A ) x = ( x T A T ) ( A x ) = ( A x ) T ( A x ) ≥ 0 \forall {\boldsymbol x} \in \R^n,{\boldsymbol x}^T(A^TA){\boldsymbol x} = ({\boldsymbol x}^TA^T)(A{\boldsymbol x})=(A{\boldsymbol x})^T(A\boldsymbol x)\ge0 ∀x∈Rn,xT(ATA)x=(xTAT)(Ax)=(Ax)T(Ax)≥0
同理,可知
(
A
A
T
)
m
×
m
(AA^T)_{m\times m}
(AAT)m×m 也是一个对称半正定矩阵。因此两者都可以对角化:
A
T
A
=
U
T
D
1
U
A
A
T
=
V
T
D
2
V
\begin{aligned} A^TA = U^TD_1U\\ AA^T = V^TD_2V \end{aligned}
ATA=UTD1UAAT=VTD2V
其中,
U
∈
R
n
×
n
,
V
∈
R
m
×
m
U \in \R^{n\times n},V \in \R^{m\times m}
U∈Rn×n,V∈Rm×m 都是单位正交矩阵,
D
1
∈
R
n
×
n
,
D
2
∈
R
m
×
m
D_1\in \R^{n\times n},D_2 \in \R^{m\times m}
D1∈Rn×n,D2∈Rm×m 都是对角矩阵,而且
D
1
,
D
2
D_1,D_2
D1,D2 对角线上的非零元素是一样的。不妨设
D
1
,
D
2
D_1,D_2
D1,D2 对角线上的非零元素为前
k
k
k 个,分别为
λ
1
,
λ
2
,
⋯
,
λ
k
\lambda_1,\lambda_2,\cdots,\lambda_k
λ1,λ2,⋯,λk 。
则矩阵
A
m
×
n
A_{m\times n}
Am×n 的SVD分解为以下形式:
A
m
×
n
=
V
m
×
m
T
[
λ
1
1
2
λ
2
1
2
⋱
λ
k
1
2
0
⋱
]
m
×
n
U
n
×
n
A_{m\times n} = V^T_{m\times m} \begin{bmatrix} \lambda_1^{\frac{1}{2}} & & & \\ & \lambda_2^{\frac{1}{2}} & & \\ & & \ddots & \\ & & & \lambda_k^{\frac{1}{2}} \\ & & & & 0 \\ & & & & & \ddots \end{bmatrix}_{m\times n} U_{n\times n}
Am×n=Vm×mT⎣⎢⎢⎢⎢⎢⎢⎢⎡λ121λ221⋱λk210⋱⎦⎥⎥⎥⎥⎥⎥⎥⎤m×nUn×n
令
V
T
=
[
v
1
,
v
2
,
⋯
,
v
m
]
,
v
i
∈
R
m
.
U
T
=
[
u
1
,
u
2
,
⋯
,
u
n
]
,
u
i
∈
R
n
V^T = [\boldsymbol {v_1,v_2,\cdots,v_m}],{\boldsymbol v_i}\in \R^m.U^T =[\boldsymbol {u_1,u_2,\cdots,u_n}],{\boldsymbol u_i} \in \R^n
VT=[v1,v2,⋯,vm],vi∈Rm.UT=[u1,u2,⋯,un],ui∈Rn ,有
A
m
×
n
=
[
v
1
,
v
2
,
⋯
,
v
m
]
[
λ
1
1
2
λ
2
1
2
⋱
λ
k
1
2
0
⋱
]
[
u
1
T
u
2
T
⋮
u
n
T
]
=
[
λ
1
1
2
v
1
,
λ
2
1
2
v
2
,
⋯
,
λ
k
1
2
v
k
,
0
,
⋯
,
0
]
[
u
1
T
u
2
T
⋮
u
n
T
]
=
λ
1
1
2
v
1
u
1
T
+
λ
2
1
2
v
2
u
2
T
+
⋯
+
λ
k
1
2
v
k
u
k
T
\begin{aligned} A_{m\times n} &= [\boldsymbol {v_1,v_2,\cdots,v_m}] \begin{bmatrix} \lambda_1^{\frac{1}{2}} & & & \\ & \lambda_2^{\frac{1}{2}} & & \\ & & \ddots & \\ & & & \lambda_k^{\frac{1}{2}} \\ & & & & 0 \\ & & & & & \ddots \end{bmatrix} \begin{bmatrix} \boldsymbol{u_1}^T \\ \boldsymbol{u_2}^T \\ \vdots \\ \boldsymbol{u_n}^T \\ \end{bmatrix}\\ &= [\lambda_1^{\frac{1}{2}} {\boldsymbol v_1},\lambda_2^{\frac{1}{2}} {\boldsymbol v_2},\cdots,\lambda_k^{\frac{1}{2}} {\boldsymbol v_k},0,\cdots,0] \begin{bmatrix} \boldsymbol{u_1}^T \\ \boldsymbol{u_2}^T \\ \vdots \\ \boldsymbol{u_n}^T \\ \end{bmatrix}\\ &= \lambda_1^{\frac{1}{2}} {\boldsymbol v_1} \boldsymbol{u_1}^T + \lambda_2^{\frac{1}{2}} {\boldsymbol v_2} \boldsymbol{u_2}^T + \cdots +\lambda_k^{\frac{1}{2}} {\boldsymbol v_k} \boldsymbol{u_k}^T \end{aligned}
Am×n=[v1,v2,⋯,vm]⎣⎢⎢⎢⎢⎢⎢⎢⎡λ121λ221⋱λk210⋱⎦⎥⎥⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎡u1Tu2T⋮unT⎦⎥⎥⎥⎤=[λ121v1,λ221v2,⋯,λk21vk,0,⋯,0]⎣⎢⎢⎢⎡u1Tu2T⋮unT⎦⎥⎥⎥⎤=λ121v1u1T+λ221v2u2T+⋯+λk21vkukT
对于矩阵
A
m
×
n
A_{m\times n}
Am×n 的存储需要
(
m
+
n
+
1
)
×
k
(m+n+1)\times k
(m+n+1)×k 个参数。如若想要在一定的存储条件和误差限范围内进行存前
p
p
p 项近似,则误差为
E
r
r
o
r
=
1
−
∑
i
=
1
p
λ
i
∑
i
=
1
m
i
n
(
m
,
n
)
λ
i
Error= 1 -\frac{\displaystyle \sum_{i=1}^p\lambda_i}{\displaystyle \sum_{i=1}^{min(m,n)}\lambda_i}
Error=1−i=1∑min(m,n)λii=1∑pλi
3. 从逆矩阵到最小二乘法再到伪逆矩阵和最小范数
背景来源:
已知向量
x
1
,
x
2
,
⋯
,
x
N
,
x
i
∈
R
n
{\boldsymbol x_1},{\boldsymbol x_2},\cdots,{\boldsymbol x_N},{\boldsymbol x_i} \in\R^n
x1,x2,⋯,xN,xi∈Rn 和
y
1
,
y
2
,
⋯
,
y
N
,
y
i
∈
R
1
{\boldsymbol y_1},{\boldsymbol y_2},\cdots,{\boldsymbol y_N},{\boldsymbol y_i} \in \R^1
y1,y2,⋯,yN,yi∈R1 ,有线性方程组
[
y
1
y
2
⋮
y
N
]
=
[
x
11
x
12
⋯
x
1
n
x
21
x
22
⋯
x
2
n
⋮
⋮
⋱
⋮
x
N
1
x
N
2
⋯
x
N
n
]
[
a
1
a
2
⋮
a
n
]
\begin{aligned} \begin{bmatrix} {\boldsymbol y_1} \\ {\boldsymbol y_2} \\ \vdots \\ {\boldsymbol y_N} \end{bmatrix}= \begin{bmatrix} x_{11} & x_{12} & \cdots &x_{1n} \\ x_{21} & x_{22} & \cdots &x_{2n} \\ \vdots & \vdots & \ddots &\vdots \\ x_{N1} & x_{N2} & \cdots &x_{Nn} \\ \end{bmatrix} \begin{bmatrix} {a_1} \\ {a_2} \\ \vdots \\ {a_n} \end{bmatrix} \end{aligned}
⎣⎢⎢⎢⎡y1y2⋮yN⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡x11x21⋮xN1x12x22⋮xN2⋯⋯⋱⋯x1nx2n⋮xNn⎦⎥⎥⎥⎤⎣⎢⎢⎢⎡a1a2⋮an⎦⎥⎥⎥⎤
待求
a
=
[
a
1
,
a
2
,
⋯
,
a
n
]
T
{\boldsymbol a} = [a_1,a_2,\cdots,a_n]^T
a=[a1,a2,⋯,an]T 。用矩阵形式表示为
X
N
×
n
a
n
×
1
=
y
N
×
1
X_{N \times n} {\boldsymbol a}_{n\times1} = {\boldsymbol y}_{N\times1}
XN×nan×1=yN×1
如果上式中
N
=
n
N=n
N=n 并且
X
X
X 可逆,则有唯一解
a
=
X
−
1
y
{\boldsymbol a} = X^{-1}{\boldsymbol y}
a=X−1y
但是上述求解的条件也是很苛刻,因为可逆这个条件使得矩阵
X
X
X 必须是方阵,即需要数据的个数和数据的维度相等,并且还得满足其正定性。
一般情况下
N
≠
n
N \neq n
N=n ,因此公式
(
5
)
(5)
(5) 难以直接求精确解,但是我们可以求取它的近似解,使得近似解尽可能地接近精确解。即
min
a
∣
∣
X
a
−
y
∣
∣
2
\min_a ||X {\boldsymbol a} - {\boldsymbol y}||^2
amin∣∣Xa−y∣∣2
令
J
=
∣
∣
X
a
−
y
∣
∣
2
=
(
X
a
−
y
)
T
(
X
a
−
y
)
=
(
a
T
X
T
−
y
T
)
(
X
a
−
y
)
=
a
T
X
T
X
a
−
a
T
X
T
y
−
y
T
X
a
+
y
T
y
=
a
T
X
T
X
a
−
2
y
T
X
a
+
y
T
y
\begin{aligned} J &=||X {\boldsymbol a} - {\boldsymbol y}||^2 \\ &= (X {\boldsymbol a} - {\boldsymbol y})^T(X {\boldsymbol a} - {\boldsymbol y})\\ &= ({\boldsymbol a}^TX^T-{\boldsymbol y^T})(X {\boldsymbol a} - {\boldsymbol y})\\ &= {\boldsymbol a}^TX^TX{\boldsymbol a} - {\boldsymbol a}^TX^T {\boldsymbol y} - {\boldsymbol y}^T X {\boldsymbol a} + {\boldsymbol y}^T{\boldsymbol y} \\ & = {\boldsymbol a}^TX^TX{\boldsymbol a} - 2{\boldsymbol y}^T X {\boldsymbol a} + {\boldsymbol y}^T{\boldsymbol y} \end{aligned}
J=∣∣Xa−y∣∣2=(Xa−y)T(Xa−y)=(aTXT−yT)(Xa−y)=aTXTXa−aTXTy−yTXa+yTy=aTXTXa−2yTXa+yTy
其极小值需要满足一个必要条件
∂
J
∂
a
=
0
2
X
T
X
a
−
2
X
T
y
=
0
X
T
X
a
=
X
T
y
\begin{aligned} \frac{\partial J}{\partial {\boldsymbol a}} &= 0 \\ 2 X^TX{\boldsymbol a} -2X^T{\boldsymbol y} &= 0 \\ X^TX{\boldsymbol a} &= X^T{\boldsymbol y} \\ \end{aligned}
∂a∂J2XTXa−2XTyXTXa=0=0=XTy
这个时候有一个问题出现了,
X
T
X
X^TX
XTX 可逆吗?尽管我们知道
X
T
X
X^TX
XTX 是一个对称半正定矩阵,但他并不能保证一定是可逆的,因此需要分情况讨论。
-
当 N > n N>n N>n 时
此时 ( X T X ) (X^TX) (XTX) 是一个 n × n {n \times n} n×n 的矩阵,一般情况下它是可逆的,因此有
a = ( X T X ) − 1 X T y {\boldsymbol a} = (X^TX)^{-1}X^T{\boldsymbol y} a=(XTX)−1XTy
其中 ( X T X ) − 1 X T (X^TX)^{-1}X^T (XTX)−1XT 被称为 X X X 的伪逆。这个时候公式 ( 8 ) (8) (8) 就被称为最小二乘法。 -
当 N < n N< n N<n 时
此时 ( X T X ) (X^TX) (XTX) 是一个 n × n {n \times n} n×n 的矩阵,由于 R ( X T X ) ≤ R ( X ) ≤ N R(X^TX)\le R(X) \le N R(XTX)≤R(X)≤N 进而 R ( X T X ) ≠ n R(X^TX)\neq n R(XTX)=n 因此它是不可逆的。
当遇见第2种情况时,我们该怎么办呢?这里给大家提供一种正则化的方法,即令
J = ∣ ∣ X a − y ∣ ∣ 2 + λ ∣ ∣ a ∣ ∣ 2 = ( X a − y ) T ( X a − y ) + λ a T a = ( a T X T − y T ) ( X a − y ) + λ a T a = a T X T X a − a T X T y − y T X a + y T y + λ a T a = a T X T X a − 2 y T X a + y T y + λ a T a \begin{aligned} J &=||X {\boldsymbol a} - {\boldsymbol y}||^2 + \lambda|| {\boldsymbol a}||^2\\ &= (X {\boldsymbol a} - {\boldsymbol y})^T(X {\boldsymbol a} - {\boldsymbol y}) + \lambda {\boldsymbol a}^T {\boldsymbol a}\\ &= ({\boldsymbol a}^TX^T-{\boldsymbol y^T})(X {\boldsymbol a} - {\boldsymbol y}) + \lambda {\boldsymbol a}^T {\boldsymbol a} \\ &= {\boldsymbol a}^TX^TX{\boldsymbol a} - {\boldsymbol a}^TX^T {\boldsymbol y} - {\boldsymbol y}^T X {\boldsymbol a} + {\boldsymbol y}^T{\boldsymbol y} + \lambda {\boldsymbol a}^T {\boldsymbol a} \\ & = {\boldsymbol a}^TX^TX{\boldsymbol a} - 2{\boldsymbol y}^T X {\boldsymbol a} + {\boldsymbol y}^T{\boldsymbol y} + \lambda {\boldsymbol a}^T {\boldsymbol a} \end{aligned} J=∣∣Xa−y∣∣2+λ∣∣a∣∣2=(Xa−y)T(Xa−y)+λaTa=(aTXT−yT)(Xa−y)+λaTa=aTXTXa−aTXTy−yTXa+yTy+λaTa=aTXTXa−2yTXa+yTy+λaTa
此时再令
∂ J ∂ a = 0 2 X T X a − 2 X T y + λ a = 0 X T X a + λ a = X T y ( X T X + λ I ) a = X T y \begin{aligned} \frac{\partial J}{\partial {\boldsymbol a}} &= 0 \\ 2 X^TX{\boldsymbol a} -2X^T{\boldsymbol y} + \lambda {\boldsymbol a}&= 0 \\ X^TX{\boldsymbol a} + \lambda {\boldsymbol a} &= X^T{\boldsymbol y} \\ (X^TX+\lambda I){\boldsymbol a} &= X^T {\boldsymbol y}\\ \end{aligned} ∂a∂J2XTXa−2XTy+λaXTXa+λa(XTX+λI)a=0=0=XTy=XTy
在上面的式子里, ( X T X + λ I ) (X^TX+\lambda I) (XTX+λI) 一定是可逆的。∀ y ∈ R n , y ≠ 0 \forall {\boldsymbol y} \in \R^n,{\boldsymbol y}\neq {\boldsymbol 0} ∀y∈Rn,y=0 ,有
y T ( X T X + λ I ) y = y T X T X y + λ y T y = ( X y ) T ( X y ) + λ y T y = ∣ ∣ X y ∣ ∣ 2 + λ ∣ ∣ y ∣ ∣ 2 > 0 \begin{aligned} {\boldsymbol y}^T(X^TX+\lambda I){\boldsymbol y} &={\boldsymbol y}^TX^TX{\boldsymbol y} + \lambda {\boldsymbol y}^T{\boldsymbol y}\\ &=(X{\boldsymbol y})^T(X{\boldsymbol y}) + \lambda {\boldsymbol y}^T{\boldsymbol y} \\ &= ||X{\boldsymbol y}||^2+\lambda ||{\boldsymbol y}||^2 > 0 \end{aligned} yT(XTX+λI)y=yTXTXy+λyTy=(Xy)T(Xy)+λyTy=∣∣Xy∣∣2+λ∣∣y∣∣2>0
因此 ( X T X + λ I ) (X^TX+\lambda I) (XTX+λI) 是对称正定的,所以可逆。因此有
a = ( X T X + λ I ) − 1 X T y {\boldsymbol a} = (X^TX+\lambda I)^{-1} X^T {\boldsymbol y} a=(XTX+λI)−1XTy
这种求解方法称之为最小范数法,也是机器学习中的岭回归。
4. PCA原理和推导
原理
PCA实质上还是一种数据压缩的技术,如上图所示,已知 N N N 个样本点(‘+’标记),每一个样本点需要两个参数来表述,那么所有样本点共需要 2 ∗ N 2*N 2∗N 个参数。现在我们想找一个方向如图中 u ⃗ \vec{u} u ,使得每一个样本点向这个方向做投影,使得 u ⃗ \vec{u} u 成为新的坐标轴,此时样本点在新坐标轴上的位置只需要一个参数就可以表示,那么所有投影点共需要 N + 2 N+2 N+2 个参数来表示,从而达到了数据降维的目的。
但是这种用投影点替代真实样本点的方法,必然会带来误差,也就是A和A’之间的距离。因此我们需要找到一个投影方向,使得所有样本点与投影点之间的误差和最小,即最小重构误差。
做PCA前,需要将样本进行中心化操作,这样可以使得误差更小。
推导
首先我们需要知道一个原始点与投影点之间的误差是多少?如图所示,假定
∣
∣
u
⃗
∣
∣
=
1
||\vec{u}||=1
∣∣u∣∣=1 ,已知有一点
x
⃗
\vec{x}
x ,在未知的
u
⃗
\vec{u}
u 方向上的投影点为
<
x
⃗
,
u
⃗
>
u
⃗
<\vec{x},\vec{u}>\vec{u}
<x,u>u ,此时误差为
E
=
x
⃗
−
<
x
⃗
,
u
⃗
>
u
⃗
=
x
−
(
x
T
u
)
u
\begin{aligned} E &= \vec{x} - <\vec{x},\vec{u}>\vec{u}\\ &= x - (x^Tu)u \end{aligned}
E=x−<x,u>u=x−(xTu)u
其中,
x
,
u
∈
R
n
,
且
u
T
u
=
1
x,u\in \R^n,且u^Tu=1
x,u∈Rn,且uTu=1
我们的目的就是求取误差
J
J
J 取最小值时的
u
⃗
\vec{u}
u,即
min
u
⃗
∣
∣
E
∣
∣
2
=
∣
∣
x
−
(
x
T
u
)
u
∣
∣
2
=
[
x
−
(
x
T
u
)
u
]
T
[
x
−
(
x
T
u
)
u
]
=
[
x
T
−
(
x
T
u
)
u
T
]
[
x
−
(
x
T
u
)
u
]
=
x
T
x
−
(
x
T
u
)
2
−
(
x
T
u
)
2
+
(
x
T
u
)
2
=
x
T
x
−
(
x
T
u
)
2
=
∣
∣
x
∣
∣
2
−
(
x
T
u
)
2
\begin{aligned} \min_{\vec{u}}||E||^2 &= ||x - (x^Tu)u||^2 \\ &= [x - (x^Tu)u]^T[x - (x^Tu)u] \\ &= [x^T - (x^Tu)u^T][x - (x^Tu)u]\\ &= x^Tx - (x^Tu)^2 - (x^Tu)^2 + (x^Tu)^2\\ &= x^Tx- (x^Tu)^2\\ &= ||x||^2 - (x^Tu)^2 \end{aligned}
umin∣∣E∣∣2=∣∣x−(xTu)u∣∣2=[x−(xTu)u]T[x−(xTu)u]=[xT−(xTu)uT][x−(xTu)u]=xTx−(xTu)2−(xTu)2+(xTu)2=xTx−(xTu)2=∣∣x∣∣2−(xTu)2
从而就是
max
u
⃗
(
x
T
u
)
2
⇒
max
u
⃗
(
x
T
u
)
(
x
T
u
)
⇒
max
u
⃗
(
u
T
x
)
(
x
T
u
)
⇒
max
u
⃗
u
T
(
x
x
T
)
u
\max_{\vec{u}} (x^Tu)^2 \Rightarrow \max_{\vec{u}} (x^Tu)(x^Tu) \Rightarrow \max_{\vec{u}} (u^Tx) (x^Tu) \Rightarrow \max_{\vec{u} }u^T(xx^T)u
umax(xTu)2⇒umax(xTu)(xTu)⇒umax(uTx)(xTu)⇒umaxuT(xxT)u
以上推导是针对使得一个样本的重构误差最小,那么如果给了
N
N
N 个样本点,我们就需要找到一个
u
⃗
\vec{u}
u 使得所有样本点的重构误差和最小,即
max
u
⃗
u
T
∑
i
=
1
N
(
x
i
x
i
T
)
u
\max_{\vec{u}} u^T \displaystyle \sum_{i=1}^N (x_ix_i^T)u
umaxuTi=1∑N(xixiT)u
令
X
=
∑
i
=
1
N
(
x
i
x
i
T
)
X = \displaystyle \sum_{i=1}^N (x_ix_i^T)
X=i=1∑N(xixiT) ,此时
X
X
X 一般是对称正定矩阵,则有最优化公式
{
max
u
⃗
u
T
X
u
s
t
.
∣
∣
u
∣
∣
=
1
\left\{ \begin{aligned} \max_{\vec{u}} u^T Xu \\ st. ||u||=1 \end{aligned} \right.
⎩⎨⎧umaxuTXust.∣∣u∣∣=1
上面是一个有约束条件的最优化公式,我们使用拉格朗日乘子法进行求解,令
L
(
u
,
λ
)
=
u
T
X
u
+
λ
(
1
−
u
T
u
)
\begin{aligned} L(u,\lambda) = u^TXu + \lambda(1-u^Tu) \end{aligned}
L(u,λ)=uTXu+λ(1−uTu)
然后对
u
,
λ
u,\lambda
u,λ 进行求导,使得
∂
L
∂
u
=
0
⇒
X
u
=
λ
u
∂
L
∂
λ
=
0
⇒
u
T
u
=
1
\frac{\partial L}{\partial u} = 0 \Rightarrow Xu=\lambda u\\ \frac{\partial L}{\partial \lambda} = 0 \Rightarrow u^Tu=1\\
∂u∂L=0⇒Xu=λu∂λ∂L=0⇒uTu=1
根据公式
(
12
)
(12)
(12),我们只需要对
X
X
X 进行特征分解,找到其特征向量,然后对其特征向量做单位化即可。由于
X
X
X 是对称正定矩阵,因此它有
n
n
n 个 特征值和其对应的特征向量,这里的特征向量就是我们想要的投影主方向,其中特征值的大小是反映了该主方向的重要程度。