• 是一个m*m的正交矩阵,其向量被称为左奇异向量
  • V
  • 也是一个n*n的正交矩阵,其向量被成为右奇异向量
  • Σ
    • 是一个m*n的矩阵,其对角线上的元素为奇异值,其余元素皆为0

    当选取top k个奇异值时,可以将矩阵降维成为:

    AmnUmkΣkkVTkn

    特征值与奇异值

    奇异值可以通过特征值来得出:

    1. 求出 ATA
    的特征值和特征向量, (ATA)νi=λiνi

  • 计算奇异值 σi=λi

  • 右奇异向量等于 νi

  • 左奇异向量等于 1σiAνi

    SVD in Spark示例

    示例数据

    示例程序

    示例结果

    主成分分析

    主成分分析,Principal components analysis(PCA)是一种分析、简化数据集的技术。主成分分析经常用于减少数据集的维数,同时保持数据集中的对方差贡献最大的特征。其方法主要是通过对协方差矩阵进行特征分解,以得出数据的主成分(即特征向量)与它们的权值(即特征值)。

    wiki上PCA的数学定义是:一个正交化线性变换,把数据变换到一个新的坐标系统中,使得这一数据的任何投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。如下图所示,通过变化将X-Y坐标系映射到signal和noise上:
    pca

    上图中通过坐标变化后,找出方差最大的方向为第一个坐标(signal),然后在其正交的平面上找出方差最大的方向为第二个坐标(noise)。这样就可以通过选取top k个坐标方向来达到对维度(特征)的提炼。其数学表达如下,其中A矩阵表示m行n维的数据,P表示坐标系的变换:

    AmnPmn=A˜mn

    PCA将上述中的维度n进行提炼,降维成k(k<n),数学表达如下:

    AmnPmk=A˜mk

    SVD在PCA中的使用

    前文中提到SVD的降维公式:

    AmnUmkΣkkVTkn

    若将两边同时乘以 Vnk

    ,则得到:

    AmnVnkUmkΣkkVTknVnk

    由于 Vnk

    为正交矩阵,所以:

    AmnVnkUmkΣkkA˜mk

    就这样通过SVD神奇的实现了PCA的坐标系变换和特征的提炼。此外,SVD还可以进行数据的压缩,如下:

    UTkmAmnUTkmUmkΣkkVTkn


    同样由于 Unk

    为正交矩阵,所以:

    UTkmAmnΣkkVTknA˜kn

    如此则将m行数据压缩成k行数据,其含义就是去除那些十分相近的数据。

    PCA in Spark示例

    示例程序

    示例结果