比较 SVD 和 PCA

打开本页,如果没有显示公式,请刷新页面。

在参考资料【1】的第3章3.5.3节对奇异值分解(SVD)做了详细讲解,参考资料【2】中对主成分分析(PCA)做了完整推导。

此处将 SVD 和 PCA 进行比较。

假设样本数量为 的数据集 ,其中 是维数为 的向量,即此数据集的维数是

以下是实现 PCA 的过程:

  1. 计算每个数据点相对样本平均 的偏差,并以 的矩阵表示,称为偏差矩阵(deviation matrix):

    矩阵 的每一行表示一个数据点,每一列代表一个维度(特征、属性、变量)。

    并假设不存在常数列。

  2. 标准化,每一列除以该列的样本标准差。

    • 列特征值的样本平均:
    • 列的样本方差
    • 列的样本标准差:
    • ,其中
  3. 定义 样本协方差矩阵 ,其中 即为前述表示数据的矩阵。

    也可以定义样本相关系数矩阵:

    (在下述讨论中,使用样本协方差矩阵 ,如果需要使用样本相关系数矩阵,则将 替换为 即可)

  4. 是实对称矩阵,可正交对角化:

    其中

    • 是特征向量(单位正交)构成的 正交矩阵,满足:
    • 是特征值矩阵,
  5. 主成分系数矩阵:

    特征值 是第 个主成分系数(即 的第 列)的样本方差,代表主成分 的权重。

但是,在上述计算样本协方差矩阵 时,在真实的数值计算中,可能会遇到计算中的舍入误差,从造成破坏性影响。比如:

其中 是很小的数,在计算中会得到 ,于是有:

此时,

所以,通常将 仅用于理论推导,不用于实际的数值计算。

但是,在 SVD 中,则可以绕过上述问题。

对于偏差矩阵 ,有:

其中:

  • 级矩阵 的列向量是单位正交左奇异向量 ,但 不一定等于
  • 是奇异值
  • 矩阵 的列向量是单位正交右奇异向量

注意: 的奇异值分解结果不同。

从而有:

代入到 中计算协方差矩阵:

将这个对角化的结果与前述对角化结果 比较,可知:

  • 特征值矩阵: ,奇异值 决定特征值:
  • 主成分矩阵:
  • 主成分系数矩阵: ,矩阵 和奇异值 共同决定主成分系数

不妨假设 的列向量线性无关,即 ,则 可逆,其中

等式两侧右乘 ,得:

个主成分系数的样本方差等于

经过标准差标准化的结果,称为因子分数矩阵(factor score),它的第 表示数据集在第 个主成分的权重。平均值为 0 ,方差为 1 。

下面再引入一个概念:因子负荷(factor loading),用以衡量主成分系数与原特征之间的相关性。用符号 表示第 个特征与第 个主成分系数的相关系数,即因子负荷(特别注意区别特征之间的相关系数,请参阅参考资料【1】第5章5.5.2节内容)。

为因子负荷矩阵,前述已经计算得到的 都是经过标准差标准化后的数据,则:

因为: 。代入上式,得到:

前面曾经计算过相关系数矩阵 ,如果用 替代 ,则解得因子负荷矩阵:

注意,此处的 是由 求得,如果使用 SVD 计算,与前述值有所不同。

参考资料

  1. 齐伟. 机器学习数学基础. 电子工业出版社
  2. 主成分分析
作者: 老齐
链接: http://math.itdiffer.com/svdvspca.html
来源: 机器学习
本文原创发布于「机器学习」,转载请注明出处,谢谢合作!

http://math.itdiffer.com/images/0.jpg

results matching ""

    No results matching ""