您的位置:首页 > 其它

SVD的介绍与原理

2015-08-01 21:12 295 查看

一.SVD的介绍

SVD,Singular Value Decomposition ,奇异值分解。PCA的实现一般有两种,一种是用特征值分解,一种是用奇异值分解。

优点:简化数据,去除噪声,提高算法的结果

缺点:数据的转换可能难以理解

适用数据类型:数值型数据

二.奇异值分解的定义

假设MM是一个m∗nm*n的矩阵,如果存在一个分解:

Mm∗n=Um∗m∑m∗nVTn∗nM_{m*n}=U_{m*m}{\sum}_{m*n}V_{n*n}^T

其中,U,VU,V为正交矩阵,∑{\sum}只有对角元素,其他元素都是0,而且∑{\sum}的对角元素是从大到小排列的,这些对角元素称为奇异值,式中

∑=[∑1OOO],且∑1=diag(σ1,σ2,...,σr),σ1≥σ2≥...≥σr>0\sum=\begin{bmatrix}
{\sum}_1&O\\
O&O\\
\end{bmatrix},且{\sum}_1=diag(\sigma_1,\sigma_2,...,\sigma_r),\sigma_1\ge\sigma_2\ge...\ge\sigma_r\gt0

则MMT,MTMMM^T,M^TM的奇异值分解为

MMT=U∑VTV∑TUT=U(∑∑T)UTMM^T=U\sum V^TV{\sum}^TU^T=U(\sum{{\sum}^T})U^T

MTM=V∑TUTU∑VT=V(∑T∑)VTM^TM=V{\sum}^TU^TU\sum V^T=V({\sum}^T{\sum})V^T

其中,∑∑T,∑T∑\sum{\sum}^T,{\sum}^T\sum为方阵

奇异值有以下写性质,

1.如果M是n*n的方阵,那么有|det(M)|=|det(∑)|=σ1σ2...σn|det(M)|=|det(\sum)|=\sigma_1\sigma_2...\sigma_n

2.考虑到MTMM^TM的奇异值分解,我们发现其特征值等于M的奇异值的平方。

三.奇异值的意义

在几何中,我们可以把矩阵看做空间上的线性变换,比如对角矩阵M作用于任意一个变量,等同于在x方向上拉伸三倍,y方向上保持不变,如下:

[3001][xy]=[3xy]\begin{bmatrix}3&0\\0&1\\\end{bmatrix}\begin{bmatrix}x\\y\\\end{bmatrix}=\begin{bmatrix}3x\\y\\\end{bmatrix}

如果M不是对角矩阵,而是一个对称正定矩阵,假设M如下,

[2112]\begin{bmatrix}2&1\\1&2\\\end{bmatrix}

那么我们总可以找到一组基,使得矩阵作用在该组基上,总变现为拉伸变换,而没有旋转变换。

对于更一般的非对称矩阵,我们再也找不到一组基,使得矩阵作用在该组基上只有拉伸变换,而没有旋转变换,如矩阵:

[1011]\begin{bmatrix}1&1\\0&1\\\end{bmatrix}

如果我们允许有拉伸和旋转变换,这是可以实现的。

则,奇异值分解的几何含义是:对于任何的一个矩阵,我们要找到一组两两正交单位向量序列,使得矩阵作用在此向量序列上后得到新的向量序列保持两两正交。

奇异值的含义是:这组变换后新的向量序列的长度

当矩阵M作用在正交的向量v1,v2v_1,v_2上时,得到的向量Mv1,Mv2Mv_1,Mv_2也是正交的,假设向量u1,u2u_1,u2是Mv1,Mv2Mv_1,Mv_2的单位向量,那么有

Mv1=σ1u1,Mv2=σ2u2Mv_1=\sigma_1u_1,Mv_2=\sigma_2u_2

依据前面的条件有,

M=M[v1,v2][vT1vT2]=[u1,u2][σ100σ2][vT1vT2]M=M\begin{bmatrix}v_1,v_2\\\end{bmatrix}\begin{bmatrix}v_1^T\\v_2^T\\\end{bmatrix}=\begin{bmatrix}u_1,u_2\\\end{bmatrix}\begin{bmatrix}\sigma_1&0\\0&\sigma_2\\\end{bmatrix}\begin{bmatrix}v_1^T\\v_2^T\\\end{bmatrix}

其中,σ1,σ2\sigma_1,\sigma_2分别为Mv1,Mv2Mv_1,Mv_2的长度。

很容易可以把结论推广到n维的情况。

举个例子说明一下,假设矩阵A存下以下奇异值分解,

A=[u1,u2][3001][vT1vT2]A=\begin{bmatrix}u_1,u_2\\\end{bmatrix}\begin{bmatrix}3&0\\0&1\\\end{bmatrix}\begin{bmatrix}v_1^T\\v_2^T\\\end{bmatrix}

其中u1,u2,v1,v2u_1,u_2,v_1,v_2均为二维平面的向量 ,依据奇异值分解的特性,u1,u2u_1,u_2线性无关,v1,v2v_1,v_2线性无关,因而v1,v2v_1,v_2可以作为一组基,假设一个一般的二维品面的向量x,那么可以得到x=ξ1v1+ξ2v2x=\xi_1v_1+\xi_2v_2

当A作用到x上,则有,

y=Ax=[u1,u2][3001][vT1vT2][v1,v2][ξ1ξ2]=3ξ1u1+ξ2u2y=Ax=\begin{bmatrix}u_1,u_2\\\end{bmatrix}\begin{bmatrix}3&0\\0&1\\\end{bmatrix}\begin{bmatrix}v_1^T\\v_2^T\\\end{bmatrix}\begin{bmatrix}v_1,v_2\\\end{bmatrix}\begin{bmatrix}\xi_1\\\xi_2\\\end{bmatrix}=3\xi_1u_1+\xi_2u_2

令η1=3ξ1,η2=ξ2\eta_1=3\xi_1,\eta_2=\xi_2,假设x是在以v1,v2v_1,v_2一组基的圆上,即ξ21+ξ22=1\xi_1^2+\xi_2^2=1,那么变换后的y则在椭圆(η13)2+η22=1({\eta_1\over3})^2+\eta_2^2=1上,这表明矩阵A将单元院变成了椭圆,且奇异值恰好为椭圆的半长轴和半短轴的长度。

说一点它的物理意义:

假设有一张图像,我们用矩阵A来表示,A中的每一个元素代表一个像素,我们这里用和的形式表示A,

A=σ1u1vT1+σ2u2vT2+...+σrurvTrA=\sigma_1u_1v_1^T+\sigma_2u_2v_2^T+...+\sigma_ru_rv_r^T

假设我们图像矩阵A为400*300的像素,那么存储这张图片我们需要120000个元素,那么右边的每一项需要元素1*300+1*400+1=701个,如果我们需要存储很多高清图片,存储空间又有限制的情况下,我们在保证图片能被识别的精度下,保留那么奇异值较大的一些项,假设这里我们保留了20个奇异值,那么我们需要存储701*20=14020项,相比原来需要的存储空间,减少了很多。

总结一下奇异值往往隐含着矩阵中潜在的重要信息,重要性和奇异值大小正相关,每一个矩阵可以表示成一系列的秩为1的特殊矩阵之和,而奇异值则是衡量这些矩阵的权重。

四.总结

这里仅仅介绍了一下SVD的定义以及一些简单的物理意义,关于SVD的一些公式的证明,还有SVD在推荐系统,图像压缩、去噪中应用还需要大家多查阅其他的一些资料,以后有时间,会继续补充说明。

五.参考资料

1.《矩阵分析与应用》,张贤达著

2.知乎回答:http://www.zhihu.com/question/22237507

3.《机器学习实战》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: