其他分享
首页 > 其他分享> > 奇异值分解

奇异值分解

作者:互联网

概述

  奇异值分解(Singular Value Decomposition,SVD)是线性代数中一种重要的矩阵分解方法,区别于只适用于实对称矩阵的特征分解方法,奇异值分解可对任意实矩阵进行分解。

特征分解

 特征分解(eigendecomposition)又叫谱分解(Spectral decomposition),是把一个矩阵根据其特征值和特征向量分解的过程,只有可以正交化的矩阵才可以进行特征分解。

\(A\)为\(n\)阶方阵,若存在\(n\)维非零向量\(x\)使得:

\[Ax = \lambda x \]

则称\(\lambda\)为矩阵\(A\)的特征值,\(x\)为\(A\)属于\(\lambda\)的特征向量(eigenvector)。

  有了上述定义,接下来讨论如何计算一个矩阵的特征值和特征向量。由定义可知:

\[Ax-\lambda x=0 \Rightarrow (A-\lambda I)x=0 \]

  其中\(I\)为单位矩阵,显然上式的推导结果是一个\(n\)元\(n\)次的齐次线性方程组,\(x\)为该方程组的一个非零解,则有$r(A-\lambda I)=r < n \Leftrightarrow |A-\lambda I|=0 \(,其中\)|A-\lambda I|=0\(称为\)A\(的特征方程,\)|A-\lambda I|\(称为\)A$的特征多项式。基于此,可得到求解方阵A特征值和特征向量的步骤如下:

1、计算方阵A的特征多项式\(|A-\lambda I|\);

2、求出特征方程\(|A-\lambda I|=0\)的所有根(包括复根和重根),这些根\(\lambda_1,\lambda_2,\cdots,\lambda_n\)即为\(A\)的所有特征值;

3、对于\(A\)的每一个特征值\(\lambda_i(1\leq i\leq n)\),求解齐次线性方程组\((A-\lambda_i I)x=0\),该方程组的每一个非零解都是\(A\)属于特征值\(\lambda_i\)的特征向量;

  求出矩阵\(A\)的特征值和特征向量后,若矩阵\(A\)有\(n\)个线性独立的特征向量,那么 \(A\)是可以正交化的,此时 \(A\) 的特征分解为:

\[A = WDW^{-1} \]

其中\(W\)时\(n\)个特征向量所组成的\(n \times n\)维矩阵,\(D\)为以这\(n\)个特征值为主对角线元素的对角阵。

奇异值分解

应用

  对于奇异值,它跟我们特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。也就是说,我们也可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵:

\[A_{m \times n} = U_{m \times m}D_{m \times n}V^T_{n \times n} \approx U_{m \times k} D_{k \times k} V^T_{k \times n} \]

这样处理的好处是,我们可以用三个较小的矩阵\(U_{m \times k},D_{k \times k},V_{k \times n}^T\)来表示一个大矩阵\(A\),如下图所示,使用三个灰色部分的小矩阵来表示大矩阵。

图片来源于刘建平Pinard

  由于这个重要的性质,SVD可以用于PCA降维,来做图片数据压缩和去噪。也可以用于推荐算法,将用户和喜好对应的矩阵做特征分解,进而得到隐含的用户需求来做推荐。同时也可以用于NLP中的算法,比如潜在语义索引(LSI)。

Note:

  需要注意的是,奇异值分解中特征值的求解是比较核心的地方,在工程应用中,往往需要进行奇异值分解都是大矩阵,对这类大矩阵,如果采用上面的方法求解特征值需要花费较多的时间和资源。对此,可以采用乘幂法反幂法或者QR方法来近似求解矩阵的特征根,在此不做进一步展开,有兴趣的读者可以进一步了解一下。

基本概念说明

标签:frac,矩阵,sqrt,分解,pmatrix,奇异,end,lambda
来源: https://www.cnblogs.com/wcjb/p/16256102.html