2.10 PCA
本节主要记录部分推导过程中的问题,PCA的推导全过程之后再补充
1. 如何从2.71过渡到2.72
个人认为,从2.72往2.71推导更容易一些,然后我们再逆向考虑就行了
先介绍一下Frobenius范数,定义公式如下,即矩阵每个元素的平方和开根
∥
A
∥
F
≡
∑
i
=
1
m
∑
j
=
1
n
∣
a
i
j
∣
2
(1)
\|\mathbf{A}\|_{F} \equiv \sqrt{\sum_{i=1}^{m} \sum_{j=1}^{n}\left|a_{i j}\right|^{2}}\tag{1}
∥A∥F≡i=1∑mj=1∑n∣aij∣2(1)
假设
A
=
[
a
1
T
a
2
T
⋅
⋅
⋅
a
m
T
]
A = \left[\begin{array}{c} a_1^T \\ a_2^T \\ \cdot \\ \cdot \\ \cdot \\ a_m^T \end{array}\right]
A=⎣⎢⎢⎢⎢⎢⎢⎡a1Ta2T⋅⋅⋅amT⎦⎥⎥⎥⎥⎥⎥⎤。那么有
∥
A
∥
F
2
=
∑
i
=
1
n
∣
∣
a
i
∣
∣
2
2
(2)
\|\mathbf{A}\|_{F}^2 =\sum_{i=1}^{n}{||a_i||_2^2}\tag{2}
∥A∥F2=i=1∑n∣∣ai∣∣22(2)
我想这个式子比较好理解,请记住它,一会儿会用到。
根据
X
i
,
:
=
x
(
i
)
T
\boldsymbol{X}_{i,:}=\boldsymbol{x}^{(i)^{T}}
Xi,:=x(i)T,我们可以得出
X
X
X 是这样的,每个
x
(
i
)
x^{(i)}
x(i)都是n维列向量
X
=
[
x
(
1
)
T
x
(
2
)
T
⋅
⋅
⋅
x
(
m
)
T
]
(3)
X=\left[\begin{array}{c} x^{(1)^{T}} \\ x^{(2)^{T}} \\ \cdot \\ \cdot \\ \cdot \\ x^{(m)^{T}} \end{array}\right]\tag{3}
X=⎣⎢⎢⎢⎢⎢⎢⎡x(1)Tx(2)T⋅⋅⋅x(m)T⎦⎥⎥⎥⎥⎥⎥⎤(3)
我们试着表示一下
X
−
X
d
d
T
X- Xdd^T
X−XddT,如下
X
−
X
d
d
T
=
[
x
(
1
)
T
x
(
2
)
T
⋮
x
(
m
)
T
]
−
[
x
(
1
)
T
x
(
2
)
T
⋮
x
(
m
)
T
]
d
d
T
(4)
X-Xdd^T = \left[\begin{array}{c} x^{(1)^{T}} \\ x^{(2)^{T}} \\ \vdots \\ x^{(m)^{T}} \end{array}\right]-\left[\begin{array}{c} x^{(1)^{T}} \\ x^{(2)^{T}} \\ \vdots \\ x^{\left(m)^{T}\right.} \end{array}\right] d d^{T}\tag{4}
X−XddT=⎣⎢⎢⎢⎢⎡x(1)Tx(2)T⋮x(m)T⎦⎥⎥⎥⎥⎤−⎣⎢⎢⎢⎢⎡x(1)Tx(2)T⋮x(m)T⎦⎥⎥⎥⎥⎤ddT(4)
= [ x ( 1 ) T − x ( 1 ) T d d T x ( 2 ) T − x ( 2 ) T d d T ⋮ x ( m ) T − x ( m ) T d d T ] (5) =\left[\begin{array}{c} x^{(1)^{T}} -x^{(1)^{T}}dd^T\\ x^{(2)^{T}} -x^{(2)^{T}}dd^T\\ \vdots \\ x^{(m)^{T}} -x^{(m)^{T}}dd^T \end{array}\right]\tag{5} =⎣⎢⎢⎢⎢⎡x(1)T−x(1)TddTx(2)T−x(2)TddT⋮x(m)T−x(m)TddT⎦⎥⎥⎥⎥⎤(5)
观察(4),每一行都是一个列向量的转置,这个列向量就是 x ( i ) − x ( i ) T d d x^{(i)}-x^{(i)^T}dd x(i)−x(i)Tdd,即(2)式中的 a i a_i ai
注意,由于 x ( i ) T d x^{(i)^T}d x(i)Td是一个标量,所以转置的时候不用对它做变换,这一点很关键
那么根据(2)式,我们可以得到
∥
X
−
X
d
d
T
∥
F
2
=
∑
i
=
1
n
∣
∣
x
(
i
)
−
x
(
i
)
T
d
d
∣
∣
2
2
(6)
\|\mathbf{X-Xdd^T}\|_{F}^2 =\sum_{i=1}^{n}{||x^{(i)}-x^{(i)^T}dd||_2^2}\tag{6}
∥X−XddT∥F2=i=1∑n∣∣x(i)−x(i)Tdd∣∣22(6)
看到这儿,对比2.71式,我们已经实现了这个转换过程,大功告成。
现在逆向考虑也变得简单了,就是根据(2)式从右边向左边推即可
2. 如何根据2.84理解最优的d是 X T X X^TX XTX的最大特征值对应的特征向量
2.84式中 d T X T X d d^TX^TXd dTXTXd一定是标量,所以迹运算可以忽略
我们先假设d是
X
T
X
X^TX
XTX的特征向量,那么一定有
X
T
X
d
=
λ
d
X^TXd = \lambda d
XTXd=λd,带入2.84得到
arg
max
d
(
d
⊤
λ
d
)
=
arg
max
d
(
λ
)
=
λ
m
a
x
(7)
\underset{d}{\arg \max } \operatorname{}\left(\boldsymbol{d}^{\top}\boldsymbol{\lambda} \boldsymbol{d}\right) \\ =\underset{d}{\arg \max } \operatorname{}\left(\boldsymbol{\lambda}\right) \\ = \boldsymbol{\lambda_{max}} \tag{7}
dargmax(d⊤λd)=dargmax(λ)=λmax(7)
也就是说,只要能证明最大值在d为特征向量时取得或者证明最大特征值就是这个表达式的最大值,那么最优的d一定是最大特征值对应的特征向量。我们解决了问题的一半。
证明最大值在d为特征向量时取得是不太好证的,但是证明最大特征值就是这个表达式的最大值,我倒是有些想法。
我们把 X T X X^TX XTX特征分解后,得到 P T Λ P P^T\Lambda P PTΛP,其中P是一个正交阵,即 P T P = 1 P^TP = 1 PTP=1代入2.84
d
T
P
T
Λ
P
d
d^TP^T\Lambda Pd
dTPTΛPd,直接令V = Pd,得到
v
T
Λ
v
v^T\Lambda v
vTΛv ,展开成二次项即为
v
1
2
λ
1
+
v
2
2
λ
2
+
.
.
.
+
v
n
2
λ
n
(8)
v_1^2\lambda_1+v_2^2\lambda_2+...+v_n^2\lambda_n\tag{8}
v12λ1+v22λ2+...+vn2λn(8)
又因为 λ 1 < λ m a x , λ 2 < λ m a x , . . . , λ n < λ m a x \lambda_1<\lambda_{max},\lambda_2<\lambda_{max},...,\lambda_n<\lambda_{max} λ1<λmax,λ2<λmax,...,λn<λmax,
所以有
v
1
2
λ
1
+
v
2
2
λ
2
+
.
.
.
+
v
n
2
λ
n
<
=
(
v
1
2
+
v
2
2
+
.
.
.
+
v
n
2
)
∗
λ
m
a
x
=
V
T
V
∗
λ
m
a
x
=
(
P
d
)
T
(
P
d
)
∗
λ
m
a
x
=
d
T
P
T
P
d
∗
λ
m
a
x
=
λ
m
a
x
(9)
v_1^2\lambda_1+v_2^2\lambda_2+...+v_n^2\lambda_n<=(v_1^2+v_2^2+...+v_n^2)*\lambda_{max} \\ \\ = V^TV*\lambda_{max} \\ \\ = (Pd)^T(Pd)*\lambda_{max} \\ \\ = d^TP^TPd*\lambda_{max} = \lambda_{max} \tag{9}
v12λ1+v22λ2+...+vn2λn<=(v12+v22+...+vn2)∗λmax=VTV∗λmax=(Pd)T(Pd)∗λmax=dTPTPd∗λmax=λmax(9)
得证!!
3. 归纳法证明
待补充…