1. 特征值分解 & 奇异值分解
上面说到通过对协方差矩阵进行特征值分解(Eigen Values Decomposition)可以得到主成分,实际上也可以不用求解协方差矩阵,而是直接对数据矩阵 进行奇异值分解(Sigular Values Decomposition)即可。
矩阵的奇异值分解是指
其中
, 是列正交矩阵,
image.png是对角元素大于等于零,其余元素都为零的矩阵,对角线上的元素为矩阵 的奇异值,并且依次递减。
假若我们获得了奇异值分解的结果,选择的前 k 列,的左上 (k, k)的矩阵, V 的前k列,那么我们有
其中
可以当作降维后的矩阵, image.png
可以当作我们要求的矩阵,也被称为主成分(Components)。
下面推导:
image.png从上面推导可以看出矩阵的第 j 个特征向量实际上就是V的第 j 列,这就是为什么 就是我们要寻找的了。
关于特征值与奇异值,有以下关系:
- 的每一列是 的特征向量
- 的每一列是 的特征向量
- 与有相同的特征值(特征向量不同),是奇异值的平方
由于是奇异值分解,并且数据矩阵进行了零均值化,所以。
可以看出奇艺值是 或 的特征值的平方根。
2..PCA 和SVD之间的关系
1.从上面的PCA 和SVD的推导中可以发现,奇异值的平方与N-1的乘积就是PCA中协方差矩阵的特征值。单实际中去中心化的协方差矩阵的特征值是否除以m-1对特征值的相互关系没有影响,所以实际操作中一般不会除以m-1.
2.SVD 的分解结果均为正 is purely conventional. 因为我们在开根号时其实可以取正,也可以取负。但是惯例来讲我们都取正。但是在PCA中没有这个限制,有些向量的关系可能为负,这样他们的PCA也可能为负的。
reference:
https://blog.csdn.net/Dark_Scope/article/details/53150883
https://math.stackexchange.com/questions/2060572/why-are-singular-values-always-non-negative
https://towardsdatascience.com/svd-8c2f72e264f
https://towardsdatascience.com/pca-and-svd-explained-with-numpy-5d13b0d2a4d8
网友评论