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.《机器学习实战》
相关文章推荐
- linux下mysql的一些基本操作
- 2015.8.1(建军节)
- 余弦相似度-java代码实现
- 交易基础(一)投资前思考
- Ubuntu Eclipse CDT 使用math数学函数库:对×××未定义的引用
- 2015 Multi-University Training Contest 3(hdu 5324 - Boring Class)树套树
- objective C程序 NSString用法和类的概念
- Activity的四种启动模式
- 杨辉三角的不同实现方法
- java的api操作HDFS实现递归打印目录并实现在Linux下的显示效果
- C/C++字符串操作函数总结
- [c]hdoj1023 卡特兰数
- IIS8/IIS7/IIS6 出现ADODB.Connection 错误 '800a0e7a'的解决办法
- Length of Last Word
- 无向图的欧拉回路和欧拉通路
- 本本win10的脾气,无法共享wifi
- 内部类、常用类、正则表达式、File类(2015/8/01)
- 线程---创建,终止
- 100.Same Tree
- 【快速幂运算与矩阵快速幂专题】