PCA:主成分分析
主要思想
假设有m个n维数据,我希望只保留k维,尽可能减少信息损失,也就是(m,n)到(m,k)的过程
比如一个实际应用场景,我有一堆w latent code,也就是(n,512)的数据
通过PCA可以得到(n,2)的数据,这就是n个二维点,可以画在平面上
推导
我们希望在n维空间里找到一个k维的超平面,目标是每个点到超平面的距离最近
首先对m个n维数据做中心化,也就是减去平均值,之后的数据就满足
\[\sum_{i=1}^{m} x^{(i)} = 0 \]假设经过投影的新坐标系由\(\{w_1,w_2,\cdots,w_n\}\)这n个标准正交基构成(两两正交,模长为1)
我们希望将这n个坐标基删去一些,只留k个
那么每个点在新坐标系里的投影就是
\[z^{(i)} = (z_1^{(i)},z_2^{(i)},\cdots,z_n^{(i)}) ^T \]其中每个分量就是
\[z_{j}^{(i)} = w_{j}^{T} x^{(i)} \]那么如果要从这个投影恢复原始数据,可以表示为
\[\hat x^{(i)} = \sum_{j=1}^{k} z_{j}^{(i)} w_{j} \]矩阵表示就是
\[\hat x^{(i)} = Wz^{(i)} \]我们希望恢复出来的损失尽量小,那就是要最小化这个函数
\[\sum_{i=1}^{m} ||x^{(i)} - \hat x^{(i)}||_2^2 \]也就是
\[\sum_{i=1}^{m}|| Wz^{(i)} - x^{(i)}||_2^2 \]首先展开平方
\[\sum_{i} (Wz^{(i)})^T(Wz^{(i)}) - 2 \sum_{i} (Wz^{(i)})^{T}x^{(i)} + \sum_{i} (x^{(i)})^Tx^{(u)} \]转置放进去
\[\sum_{i} (z^{(i)})^TW^TWz^{(i)} - 2 \sum_{i} (z^{(i)})^TW^Tx^{(i)} + \sum_{i} (x^{(i)})^Tx^{(u)} \]由于\(W^TW=I\),也就化简为
\[\sum_{i} (z^{(i)})^Tz^{(i)} - 2 \sum_{i} (z^{(i)})^TW^Tx^{(i)} + \sum_{i} (x^{(i)})^Tx^{(u)} \]由于\(z^{(i)} = W^T x^{(i)}\),可以进一步写为
\[\sum_{i} (z^{(i)})^Tz^{(i)} - 2 \sum_{i} (z^{(i)})^Tz^{(i)} + \sum_{i} (x^{(i)})^Tx^{(u)} \]合并一下
\[- \sum_{i} (z^{(i)})^Tz^{(i)} + \sum_{i} (x^{(i)})^Tx^{(u)} \]后面的部分是常数,所以只需要最小化
\[- \sum_{i} (z^{(i)})^Tz^{(i)} \]写成矩阵形式就是
\[\arg \min -tr(W^TXX^TW) \]其中限制是\(W^TW = I\)
显然最小值由\(XX^T\)最大的k个特征值对应的特征向量组成
那么这就是我们需要的新坐标轴了
重要问题
PCA出来的轴天然正交,这是好的一点
PCA要求数据满足高斯分布,否则结果会旋转、拉伸,这是不好的一点
如果在W Space做,得到的latent code模长不对,这个问题仍需进一步探索
标签:Tz,推导,Tx,TW,sum,笔记,PCA,Wz From: https://www.cnblogs.com/ghostcai/p/17244602.html