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. 归纳法证明
待补充…