PCA(主成分分析)推导过程详解

PCA(主成分分析)推导过程

假设在 n n 维空间内有 m m 个点{ x ( 1 ) , x ( 2 ) , , x ( m ) x^{(1)}, x^{(2)}, ……, x^{(m)} }, 为了降低维度,对于每一个 n n 维向量的样本点 x ( i ) x^{(i)} ,我们希望找到一个对应 x ( i ) x^{(i)} l l 维编码向量 c ( i ) c^{(i)}
假设编码函数为 c = f ( x ) c = f_{(x)} ,通过这个编码函数将原始的 m m 维数据降维至 l l 维。
假设解码函数维 g ( c ) = g ( f ( x ) ) x g_{(c)} = g_{(f_{(x)})}\approx x ,通过将上一步得到的编码向量解码至 n n 维并与原始向量作比较得到误差。
用矩阵形式表示函数,则 g ( c ) = D c g_{(c)}=Dc ,其中 D D 是一个 n × l n \times l 的矩阵。
但是我们发现,如果我们按比例缩小所有点对应的编码向量 c c 中的第 i i 个位置的元素 c i c_{i} ,那么只要等比例放大 D : , i D_{:, i} ,则解码后的结果不变,如:
假设 n = 3 , m = 4 , l = 2 n = 3, m = 4, l = 2 ,即样本点有4个,它们的维度为3,经过编码后,它们的维度被降低到了2维。
C 1 = [ 1 2 3 4 5 6 7 8 ] C_{1}= \left[\begin{matrix}1 & 2 & 3 & 4\\5 & 6 & 7 & 8\\\end{matrix}\right]
D 1 = [ 1 2 4 5 7 8 ] D_{1} = \left[ \begin{matrix}1 & 2\\4 & 5\\7 & 8 \end{matrix}\right]
则通过 g ( c ) = D c g_{(c)}=Dc 解码可得
g ( c ) 1 = [ 11 14 17 20 29 28 47 56 47 62 77 92 ] g_{(c)1}= \left[\begin{matrix}11 & 14 & 17 & 20\\29 & 28 & 47 & 56\\47 & 62 & 77 & 92\\\end{matrix}\right]
而在按0.5的比例缩小所有样本点的初始向量的第一个维度后,
C 2 = [ 0.5 1 1.5 2 5 6 7 8 ] C_{2}= \left[\begin{matrix}0.5 & 1 & 1.5 & 2\\5 & 6 & 7 & 8\\\end{matrix}\right]
此时只要将 D 1 D_{1} 的第一列放大两倍至 D 2 D_{2}
D 2 = [ 2 2 8 5 14 8 ] D_{2} = \left[ \begin{matrix}2 & 2\\8 & 5\\14 & 8 \end{matrix}\right]
即可得:
g ( c ) 2 = [ 11 14 17 20 29 28 47 56 47 62 77 92 ] = g ( c ) 1 g_{(c)2}= \left[\begin{matrix}11 & 14 & 17 & 20\\29 & 28 & 47 & 56\\47 & 62 & 77 & 92\\\end{matrix}\right]=g_{(c)1}
因此,每个样本点编码后的向量不唯一。
为了使问题具有唯一解,我们限制 D D 中所有列向量都有单位范数。
为了使编码问题更加简单, P C A PCA 限制 D D 的列向量彼此正交。
为了为每个样本点寻找一个最优编码向量 c c^{*} ,我们使用 L 2 L2 范数的平方来衡量原始向量 x x 和重构向量 g ( c ) g_{(c^{*})} 的距离。
即对于一个样本点来说,有:
c = a r g m i n c x g ( c ) 2 2 c^{*}=\mathop{argmin}\limits_{c}||x-g_{(c)}||_{2}^{2}
= ( x g ( c ) ) T ( x g ( c ) ) =(x-g_{(c)})^{T}(x-g_{(c)})
= x T x x T g ( c ) g ( c ) T x + g ( c ) T g ( c ) =x^{T}x-x^{T}g_{(c)}-g_{(c)}^{T}x+g_{(c)}^{T}g_{(c)}
由于 x T g ( c ) x^{T}g_{(c)} g ( c ) T x g_{(c)}^{T}x 都是标量,故二者相等。且由于第一项 x T x x^{T}x 不依赖于 c c ,可以忽略,所以:
c = a r g m i n c 2 x T g ( c ) + g ( c ) T g ( c ) c^{*}=\mathop{argmin}\limits_{c}-2x^{T}g_{(c)}+g_{(c)}^{T}g_{(c)}
用矩阵形式表示 g ( c ) g_{(c)} 后,得到:
c = a r g m i n c 2 x T D c + c T D T D c c^{*}=\mathop{argmin}\limits_{c}-2x^{T}Dc+c^{T}D^{T}Dc
由于 D T D = I l D^{T}D=I_{l}
c = a r g m i n c 2 x T D c + c T c c^{*}=\mathop{argmin}\limits_{c}-2x^{T}Dc+c^{T}c
2 x T D c + c T D T D c -2x^{T}Dc+c^{T}D^{T}Dc c c 求导得:
c ( 2 x T D c + c T c ) = 0 \bigtriangledown_{c}(-2x^{T}Dc+c^{T}c)=0
2 D T x + 2 c = 0 -2D^{T}x+2c=0
c = D T x c=D^{T}x
故编码操作被化简为一个简单的矩阵-向量乘法操作。即:
f ( x ) = D T x f_{(x)}=D^{T}x
进一步,PCA解码操作为
r ( x ) = g ( D T x ) = D D T x r_{(x)}=g_{(D^{T}x)}=DD^{T}x
接下来,我们要挑选编码矩阵 D D
因为要用相同的矩阵D对所有点进行编码,我们不能再孤立地看待每个点。反之,我们必须最小化所有维数和所有点上的误差矩阵的 F r o b e n i u s Frobenius 范数,即:
D = a r g m i n D i , j ( x j ( i ) r ( x ( i ) ) j ) 2 subject to  D D T = I l D^{*}=\mathop{argmin}\limits_{D}\sqrt{\sum_{i,j}{(x_{j}^{(i)}-r(x^{(i)})_{j})^2}}\text{\quad subject to }DD^{T}=I_{l}
首先,我们考虑 l = 1 l=1 的情况,即将 n n 维原始向量编码为1维向量。此时 D D 为一个单一向量 d d 。则问题被简化为:
d = a r g m i n d i x ( i ) d d T x ( i ) 2 2 subject to  d 2 = 1 d^{*}=\mathop{argmin}\limits_{d}\sum_{i}{||x^{(i)}-dd^{T}x^{(i)}||_{2}^2}\text{\quad subject to }||d||_{2}=1
通常,标量 d T x ( i ) d^{T}x^{(i)} 应放在向量 d d 的左边,且考虑到标量的转置和其自身相等,上式可以写作:
d = a r g m i n d i x ( i ) x ( i ) T d d 2 2 subject to  d 2 = 1 d^{*}=\mathop{argmin}\limits_{d}\sum_{i}{||x^{(i)}-x^{(i)T}dd||_{2}^2}\text{\quad subject to }||d||_{2}=1
此时,将表示各点的 m m 个向量上下堆叠成一个 m × n m\times n 的矩阵,记为 X X ,其中, X i , : = x ( i ) T X_{i, :}=x^{(i)T} 。所以这个问题可以被重新表述为:
d = a r g m i n d X X d d T F 2 subject to  d 2 = 1 d^{*}=\mathop{argmin}\limits_{d}\||X-Xdd^{T}||_{F}^2\text{\quad subject to }||d||_{2}=1
此处由 x ( i ) x ( i ) T d d x^{(i)}-x^{(i)T}dd 变为 X X d d T X-Xdd^{T} 是合理的,例如, n = 3 , m = 3 n=3, m=3 ,设:
x ( 1 ) = [ 1 1 1 ]    x ( 2 ) = [ 2 2 2 ]    x ( 3 ) = [ 3 3 3 ] x^{(1)}= \left[ \begin{matrix}1 \\1 \\1 \end{matrix}\right]\; x^{(2)}= \left[ \begin{matrix}2 \\2 \\2 \end{matrix}\right]\; x^{(3)}= \left[ \begin{matrix}3 \\3 \\3 \end{matrix}\right]
d = [ 5 5 5 ] d= \left[ \begin{matrix}5 \\5 \\5\end{matrix}\right]
则:
X = [ 1 1 1 2 2 2 3 3 3 ] X= \left[ \begin{matrix}1&1&1 \\2&2&2 \\3&3&3 \end{matrix}\right]
x ( 1 ) x ( 1 ) T d d = [ 1 1 1 ] [ 1 1 1 ] [ 5 5 5 ] [ 5 5 5 ] = [ 74 74 74 ] x^{(1)}-x^{(1)T}dd=\left[ \begin{matrix}1 \\1 \\1 \end{matrix}\right]- \left[ \begin{matrix}1 &1 &1 \end{matrix}\right] \left[ \begin{matrix}5 \\5 \\5 \end{matrix}\right] \left[ \begin{matrix}5 \\5 \\5 \end{matrix}\right]= \left[ \begin{matrix}-74 \\-74 \\-74 \end{matrix}\right]
同理可得:
x ( 2 ) x ( 2 ) T d d = [ 149 149 149 ]    x ( 3 ) x ( 3 ) T d d = [ 224 224 224 ] x^{(2)}-x^{(2)T}dd=\left[ \begin{matrix}-149 \\-149 \\-149 \end{matrix}\right]\; x^{(3)}-x^{(3)T}dd=\left[ \begin{matrix}-224 \\-224 \\-224 \end{matrix}\right]

X X d d T = [ 1 1 1 2 2 2 3 3 3 ] [ 15 30 45 ] [ 5 5 5 ] = [ 74 74 74 149 149 149 224 224 224 ] X-Xdd^{T}=\left[ \begin{matrix}1&1&1 \\2&2&2 \\3&3&3 \end{matrix}\right]- \left[ \begin{matrix}15 \\30 \\45 \end{matrix}\right] \left[ \begin{matrix}5 &5 &5 \end{matrix}\right]= \left[ \begin{matrix}-74&-74&-74 \\-149&-149&-149 \\-224&-224&-224 \end{matrix}\right]
故可以用 X X d d T X-Xdd^{T} 代替 x ( i ) x ( i ) T d d x^{(i)}-x^{(i)T}dd
暂时不考虑约束,此 F r o b e n i u s Frobenius 范数可做以下简化:
a r g m i n d X X d d T F 2 \mathop{argmin}\limits_{d}\||X-Xdd^{T}||_{F}^2
= a r g m i n d T r ( ( X X d d T ) T ( X X d d T ) ) =\mathop{argmin}\limits_{d}Tr((X-Xdd^{T})^{T}(X-Xdd^{T}))
= a r g m i n d T r ( X T X ) T r ( X T X d d T ) T r ( d d T X T X ) + T r ( d d T X T X d d T ) =\mathop{argmin}\limits_{d}Tr(X^{T}X)-Tr(X^{T}Xdd^{T})-Tr(dd^{T}X^{T}X)+Tr(dd^{T}X^{T}Xdd^{T})
= a r g m i n d 2 T r ( X T X d d T ) + T r ( X T X d d T d d T ) =\mathop{argmin}\limits_{d}-2Tr(X^{T}Xdd^{T})+Tr(X^{T}Xdd^{T}dd^{T})
这些化简利用的性质有,
1)与 d d 无关的项不影响 a r g m i n argmin
2)循环改变迹运算中相乘矩阵的顺序不影响结果。
此时,我们再来考虑约束条件
a r g m i n d 2 T r ( X T X d d T ) + T r ( X T X d d T d d T ) subject to  d T d = 1 \mathop{argmin}\limits_{d}-2Tr(X^{T}Xdd^{T})+Tr(X^{T}Xdd^{T}dd^{T})\text{\quad subject to } d^{T}d=1
= a r g m i n d 2 T r ( X T X d d T ) + T r ( X T X d d T ) subject to  d T d = 1 =\mathop{argmin}\limits_{d}-2Tr(X^{T}Xdd^{T})+Tr(X^{T}Xdd^{T})\text{\quad subject to } d^{T}d=1
= a r g m i n d T r ( X T X d d T ) subject to  d T d = 1 =\mathop{argmin}\limits_{d}-Tr(X^{T}Xdd^{T})\text{\quad subject to } d^{T}d=1
= a r g m a x d T r ( X T X d d T ) subject to  d T d = 1 =\mathop{argmax}\limits_{d}Tr(X^{T}Xdd^{T})\text{\quad subject to } d^{T}d=1
= a r g m a x d T r ( d T X T X d ) subject to  d T d = 1 =\mathop{argmax}\limits_{d}Tr(d^{T}X^{T}Xd)\text{\quad subject to } d^{T}d=1
故这个优化问题可以通过特征分解来求解。具体来讲,最优的 d d X T X X^{T}X 最大特征值对应的特征向量。
以上推导特定于 l = 1 l=1 的情况,仅得到了一个主成分。更一般地,当我们需要得到主成分的基时,矩阵 D D 由前 l l 个最大的特征值对应的特征向量组成。

发布了36 篇原创文章 · 获赞 1 · 访问量 571

猜你喜欢

转载自blog.csdn.net/qq_36758914/article/details/103317220