奇异值分解(SVD)与主成分分析(PCA)

在线性代数中,奇异值分解(SVD)是实或复矩阵的分解,它在信号处理和统计学中有许多有用的应用。[In linear algebra, the singular value decomposition (SVD) is a factorization of a real or complex matrix, with many useful applications in signal processing and statistics.]
形式上来说,mn阶的实或复矩阵M的奇异值分解是形式如下的分解:[Formally, the singular value decomposition of an m×n real or complex matrix M is a factorization of the form]

[Singular Value Decomposition]

其中,U是一个m
m阶的实或复单位阵,Σ是一个m n阶的矩形对角阵,在对角线上有非负的实数值。V(V的共轭转置)是一个n n的实或复单位阵。Σ的对角项Σij称之为M的奇异值。U的m个列以及对应的V的n个列被分别称为M的左奇异矢量和右奇异矢量。[where U is anΣ的对角项 m×m real or complex unitary matrix, Σ is an m×n rectangular diagonal matrix with nonnegative real numbers on the diagonal, and V (the conjugate transpose of V) is an n×n real or complex unitary matrix. The diagonal entries Σ i, iof Σ are known as the singular values of M. The m columns of U and the n columns of V are called the left-singular vectors and right-singular vectors of M, respectively.]
奇异值分解和特征值分解密切相关,即:[The singular value decomposition and the eigendecomposition are closely related. Namely:]

  • M的左奇异矢量是MM的特征矢量。[The left-singular vectors of M are eigenvectors of MM.]
  • M的右奇异矢量是MM的特征矢量。[The right-singular vectors of M are eigenvectors of MM.]
  • M的非零奇异值(可在Σ的对角项上找到)是MM以及MM特征值的非零平方根。[The non-zero-singular values of M (found on the diagonal entries of Σ) are the square roots of the non-zero eigenvalues of both MM* and MM*.]
    采用SVD的应用包括计算伪逆局阵、数据的最小平方拟合、矩阵逼近以及确定矩阵的秩、range以及null space等。[Applications which employ the SVD include computing the pseudoinverse, least squares fitting of data, matrix approximation, and determining the rank, range and null space of a matrix.]

关于SVD的具体原理,这里有一篇非常好的中文文章,细致地推导了整个过程——SVD原理详解

主成分分析PCA

PCA(Principal Components Analysis)即主成分分析,是图像处理中经常用到的降维方法,大家知道,我们在处理有关数字图像处理方面的问题时,比如经常用的图像的查询问题,在一个几万或者几百万甚至更大的数据库中查询一幅相近的图像。这时,我们通常的方法是对图像库中的图片提取响应的特征,如颜色,纹理,sift,surf,vlad等等特征,然后将其保存,建立响应的数据索引,然后对要查询的图像提取相应的特征,与数据库中的图像特征对比,找出与之最近的图片。这里,如果我们为了提高查询的准确率,通常会提取一些较为复杂的特征,如sift,surf等,一幅图像有很多个这种特征点,每个特征点又有一个相应的描述该特征点的128维的向量,设想如果一幅图像有300个这种特征点,那么该幅图像就有300*vector(128维)个,如果我们数据库中有一百万张图片,这个存储量是相当大的,建立索引也很耗时,如果我们对每个向量进行PCA处理,将其降维为64维,是不是很节约存储空间啊?

主成分分析一般过程

特征抽取的目标是根据原始的d个特征的组合形成k个新的特征,即将数据从d维空间映射到k维空间。在文本分析领域常用的降维方法是主成分分析(Principal Component Analysis, PCA)和奇异值分解(Singular Value Decomposition, SVD)。 在下文的叙述中,将沿袭机器学习的常用符号,使用x表示一个列向量,它是样本x在d维空间中的点。而由n个样本构成的数据集可以表示为一个d×n的矩阵XPCA PCA背后的数学基础是特征值分析,即Σv=λv,v是特征向量,λ是特征值。PCA的目标是最大化数据间累积方差。PCA的一般过程是:

  • 去除平均值:means;
  • 计算X的协方差矩阵Σ;
  • 计算Σ的特征向量和特征值(特征向量用列向量v_d×1表示);
  • 将特征值从大到小排序;
  • 保留最上面的k个特征向量(这k个特征向量保证了数据映射到特征值最大的特征向量的方向时,数据间的累积方差最大,数据映射到第二大的特征向量时,数据间的累积方差次之,且特征向量之间保持正交)构成的特征向量矩阵V_d×k;
  • 将数据转换到上述k个特征向量构建的新空间中(V^TX=A*_k×n + means,A是一个k×n的矩阵)。

我想用一个简单的例子来说明主成分分析的能力:

奇异值分解(SVD)与主成分分析(PCA)_第1张图片
主成分分析简单实例(从博客上扣的图)

关于SVD和PCA这里我只是通过做一个简单的介绍,如果大家感兴趣可以参考以下更多的博文和资料:

  • http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html 【强大的矩阵奇异值分解(SVD)及其应用】
  • http://www.tuicool.com/articles/BnUVraB 【SVD的计算步骤】
  • http://blog.csdn.net/zhongkejingwang/article/details/43053513 【奇异值分解(SVD)原理详解及推导 】
  • http://blog.sina.com.cn/s/blog_50363a7901011ax8.html 【奇异值分解[Singular Value Decomposition]】
  • http://www.ams.org/samplings/feature-column/fcarc-svd
  • http://blog.csdn.net/misscoder/article/details/51094330 【 PCA (主成分分析)详解 (写给初学者) 结合matlab 】

你可能感兴趣的:(奇异值分解(SVD)与主成分分析(PCA))