Principal Components Analysis

May 7, 2016


假设我们有维数据点,

因为一些原因,现在需要对其进行有损压缩。

对每个维数据点,在维空间中找到一个数据点作为其压缩结果

压缩为的过程称为编码,从重新构造出的过程称为解码

因为两个过程实际上都能用矩阵乘法表示,我们将解码过程表示为

\begin{align} x=Dc \end{align}

上式中,是一个列的矩阵

  • 由于放大的值,缩小的值,上式仍然成立,为了使结果唯一,令的所有列向量均为单位向量
  • 为了使解码空间(的列空间)能够覆盖整个维空间,令个列向量互相正交

上两个约束的公式化表述是

由解码过程不难推出编码过程就是

\begin{align} c=D^Tx \end{align}

经过编码再解码的结果

我们的优化目标就是最小化的差距,最优值的公式化表述如下

\begin{align} & D^* = \mathop{argmin}_D\sum_{i}||x^{(i)}-DD^Tx^{(i)}||^2_2 \\ & s.t. \quad D^TD=I_l \end{align}

为一个列的矩阵,第个行向量表示

使用,式子可化简为

\begin{align} & D^* = \mathop{argmin}_D||X-XDD^T||^2_F \\ & s.t. \quad D^TD=I_l \end{align}

F表示Frobenius范数

继续化简

\begin{align} D^* &= \mathop{argmin}_D||X-XDD^T||^2_F \\ &= \mathop{argmin}_DTr\left((X-XDD^T)^T(X-XDD^T)\right) \\ &= \mathop{argmin}_DTr\left((X^T-DD^TX^T)(X-XDD^T)\right) \\ &= \mathop{argmin}_DTr\left( X^TX-X^TXDD^T-DD^TX^TX+DD^TX^TXDD^T \right) \\ &= \mathop{argmin}_DTr\left( -X^TXDD^T-DD^TX^TX+DD^TX^TXDD^T \right) \\ &= \mathop{argmin}_D -Tr(X^TXDD^T)-Tr(DD^TX^TX)+Tr(DD^TX^TXDD^T) \\ &= \mathop{argmin}_D -2Tr(X^TXDD^T)+Tr(X^TXDD^TDD^T) \\ &= \mathop{argmin}_D -2Tr(X^TXDD^T)+Tr(X^TXDD^T) \\ &= \mathop{argmin}_D -Tr(X^TXDD^T) \\ &= \mathop{argmax}_D Tr(D^TX^TXD) \\ \end{align}

于是,优化目标变为

\begin{align} & D^* = \mathop{argmax}_D Tr(D^TX^TXD) \\ & s.t. \quad D^TD=I_l \end{align}

特征分解,有

\begin{align} X^TX= V \Lambda V^{-1} \end{align}

\begin{align} V &= \begin{bmatrix} v_1 & v_2 & … & v_n \end{bmatrix} \\ \Lambda &= \begin{bmatrix} \lambda_1 & 0 & … & 0 \\ 0 & \lambda_2 & … & 0 \\ … & … & … & … \\ 0 & 0 & 0 & \lambda_n \end{bmatrix} \end{align}

表示特征向量,且保证是单位向量,此外

优化目标变为

\begin{align} & D^* = \mathop{argmax}_D Tr(D^TV\Lambda V^{-1}D) \\ & s.t. \quad D^TD=I_l \end{align}

最优解可直接得到

\begin{align} D = \begin{bmatrix} v_1 & v_2 & … & v_l \end{bmatrix} \end{align}