PCA和SVD

以下示例来自这篇神文

同时这有一篇关于SVD分解的理解,个人感觉讲的也很好

PCA算法

总结一下PCA的算法步骤:

设有m条n维数据。

1)将原始数据按列组成n行m列矩阵X

2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值

3)求出协方差矩阵

4)求出协方差矩阵的特征值及对应的特征向量

5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P

6)Y=PX即为降维到k维后的数据

实例

这里是上文提到的

为例,我们用PCA方法将这组二维数据其降到一维。

因为这个矩阵的每行已经是零均值,这里我们直接求协方差矩阵:

然后求其特征值和特征向量,具体求解方法不再详述,可以参考相关资料。求解后特征值为:

其对应的特征向量分别是:

其中对应的特征向量分别是一个通解,c1c1和c2c2可取任意实数。那么标准化后的特征向量为:

因此我们的矩阵P是:

可以验证协方差矩阵C的对角化:

最后我们用P的第一行乘以数据矩阵,就得到了降维后的表示:

降维投影结果如下图:

你可能感兴趣的:(PCA和SVD)