机器学习(十三)PCA降维原理

最近突然看到一个问题,PCA和SVD有什么关系?隐约记得自己照猫画虎实现的时候PCA的时候明明用到了SVD啊,但SVD(奇异值分解)和PCA的(特征值分解)貌似差得相当远,由此钻下去搜集了一些资料,把我的一些收获总结一下,以免以后再忘记。

参考:https://blog.csdn.net/dark_scope/article/details/53150883

PCA的简单推导

PCA有两种通俗易懂的解释,1)是最大化投影后数据的方差(让数据更分散)2)是最小化投影造成的损失。这两个思路最后都能推导出同样的结果。 

下图应该是对PCA第二种解释展示得最好的一张图片了(ref:svd,pca,relation

向量

设两个非零 向量 ab夹角为θ,则将| b|·cosθ 叫做向量 b在向量 a方向上的 投影或称 标投影(scalar projection)
在式中引入a的 单位矢量a(A),可以定义b在a上的 矢投影(vector projection)

此处输入图片的描述
图示的数据都已经 去中心化了(中心点为原点),这一步操作可以简单地通过 xi=xix¯xi=xi−x¯ 来达到,其中 x¯是样本的均值,为方便表示,后文的 xx都是去中心化后的结果。 
可以看到 PCA所谓的降维操作就是找到一个新的坐标系(旋转的两条直线式垂直的,我们可以用一组 标准正交基 {uj},j=1,...,n{uj},j=1,...,n来指示),然后 减掉其中一些维度,使误差足够小。 
假设我们要找的投影方向是 ujuj ( ujuj是单位向量,即 uTjuj=1ujTuj=1) ,点 xixi在该方向上的投影就是 (xTiuj)uj



所以要使J最小,就去掉变换后维度中最小的t个特征值对应的维度就好了。 
现在,我们再回过头看PCA的流程,就会发现一切都对应上了:

矩阵A乘以x表示,对向量x进行一次转换(旋转或拉伸)(是一种线性转换),而该转换的效果为常数c乘以向量x(即只进行拉伸)。

我们通常求特征值和特征向量即为求出该矩阵能使哪些向量(当然是特征向量)只发生拉伸,使其发生拉伸的程度如何(特征值大小)。这样做的意义在于,看清一个矩阵在那些方面能产生最大的效果(power),并根据所产生的每个特征向量(一般研究特征值最大的那几个)进行分类讨论与研究。



作者:Rex
链接:https://www.zhihu.com/question/20507061/answer/16610027
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  1. 对数据去中心化
  2. 计算XXTXXT,注:这里除或不除样本数量MMM1M−1其实对求出的特征向量没影响
  3. XXTXXT进行特征分解
  4. 选取特征值最大的几个维度进行数据映射。(去掉较小的维度)

遗留问题

看到这有人要问了,我咋记得标准流程是计算矩阵的协方差矩阵呢? 
我们来看协方差矩阵的计算公式: 


猜你喜欢

转载自blog.csdn.net/lyf52010/article/details/79874769