点击上方“小白学视觉”,选择加”星标“或“置顶”
重磅干货,第一时间送达
前言
奇异值分解(SVD)在降维,数据压缩,推荐系统等有广泛的应用,任何矩阵都可以进行奇异值分解,本文通过正交变换不改变基向量间的夹角循序渐进的推导SVD算法,以及用协方差含义去理解行降维和列降维,最后介绍了SVD的数据压缩原理 。
目录
1. 正交变换
2. 特征值分解含义
3. 奇异值分解
4. 奇异值分解例子
5. 行降维和列降维
6. 数据压缩
7. SVD总结
1.正交变换

上式表示:X是Y的正交变换 ,其中U是正交矩阵,X和Y为列向量 。
下面用一个例子说明正交变换的含义:
假设有两个单位列向量a和b,两向量的夹角为θ,如下图:

现对向量a,b进行正交变换:

,
的模:

由上式可知
和
的模都为1。
和
的内积:

由上式可知,正交变换前后的内积相等。
和
的夹角
:

比较(2)式和(3)式得:正交变换前后的夹角相等,即:
因此,正交变换的性质可用下图来表示:

正交变换的两个重要性质:
1)正交变换不改变向量的模。
2)正交变换不改变向量的夹角。
如果向量
和
是基向量,那么正交变换的结果如下图:

上图可以得到重要结论:基向量正交变换后的结果仍是基向量 。基向量是表示向量最简洁的方法,向量在基向量的投影就是所在基向量的坐标,我们通过这种思想去理解特征值分解和推导SVD分解。
2.特征值分解的含义

其中U是正交矩阵,
是对角矩阵。
为了可视化特征值分解,假设A是2×2的对称矩阵,
,
。(2.1)式展开为:

用图形表示为:

特征向量和特征值的几何意义:若向量经过矩阵变换后保持方向不变,只是进行长度上的伸缩,那么该向量是矩阵的特征向量,伸缩倍数是特征值。
3.SVD分解推导
我们考虑了当基向量是对称矩阵的特征向量时,矩阵变换后仍是基向量,但是,我们在实际项目中遇到的大都是行和列不相等的矩阵,如统计每个学生的科目乘积,行数为学生个数,列数为科目数,这种形成的矩阵很难是方阵,因此SVD分解是更普遍的矩阵分解方法 。
先回顾一下正交变换的思想:基向量正交变换后的结果仍是基向量 。
我们用正交变换的思想来推导SVD分解:
假设A是M*N的矩阵,秩为K,Rank(A)=k。
存在一组正交基V:

矩阵对其变换后仍是正交基,记为U:

由正交基定义,得:

上式展开:



∴ (3.2)式得:

即假设成立 。
图形表示如下:

正交向量的模:

单位化正交向量,得:

结论:当基向量是
的特征向量时,矩阵A转换后的向量也是基向量 。
用矩阵的形式表示(3.3)式:



V是N*K矩阵,U是M*K矩阵,
是M*K的矩阵,需要扩展成方阵形式:
将正交基
扩展
空间的正交基,即U是M*M方阵 。
将正交基
扩展成
空间的正交基,其中
是矩阵A的零空间,即:

对应的特征值
=0,
是M*N对角矩阵,V是N*N方阵
因此(3.4)式写成向量形式为:




(3.5)式写成向量形式:

令:


则:
A = XY
因为X和Y分别是列满秩和行满秩,所以上式是A的满秩分解。
(3.5)式的奇异矩阵
的值
是
特征值的平方根,下面推导奇异值分解的U和V:

即V是
的特征向量构成的矩阵,称为右奇异矩阵。

即U是
的特征向量构成的矩阵,称为左奇异矩阵 。
小结:矩阵A的奇异值分解:

其中U是
的特征向量构成的矩阵,V是
的特征向量构成的矩阵,奇异值矩阵
的值是
特征值的平方根 。
3.奇异值分解的例子










4. 行降维和列降维
4.行降维和列将维
单个变量用方差描述,无偏方差公式:



多个变量(如三个变量)之间的关系可以用协方差矩阵描述:

相关系数公式:

由上式可知,协方差是描述变量间的相关关系程度:
1)协方差cov(x,y) > 0时,变量x与y正相关;
2)协方差cov(x,y)<0时,变量x与y负相关;
3)协方差cov(x,y)=0时,变量x与y不相关;
变量与协方差关系的定性分析图:

现在开始讨论
和
的含义:
假设数据集是n维的,共有m个数据,每一行表示一例数据,即:

表示第i个样本,
表示第j维特征,
表示第i个样本的第j维特征 。


由上式可知,
是描述各特征间相关关系的矩阵,所以
的正交基V是以数据集的特征空间进行展开的。
数据集A在特征空间展开为:

由上一篇文章可知,特征值表示了
在相应特征向量的信息分量。特征值越大,包含矩阵
的信息分量亦越大。
若我们选择前r个特征值来表示原始数据集,数据集A在特征空间展开为:

(4.2)式对列进行了降维,即右奇异矩阵V可以用于列数的压缩,与PCA降维算法一致。
行降维:


由上式可知:
是描述样本数据间相关关系的矩阵,因此,左奇异矩阵U是以样本空间进行展开,原理与列降维一致,这里不详细介绍了 。
若我们选择前r个特征值来表示原始数据集,数据集A在样本空间展开为:

因此,上式实现了行降维,即左奇异矩阵可以用于行数的压缩 。
5.数据压缩
矩阵A的秩为k,A的满秩分解:

满秩分解图形如下:

由上图可知,存储X和Y的矩阵比存储A矩阵占用的空间小,因此满秩分解起到了数据压缩作用。
矩阵A的奇异值分解:

若我们选择前r个特征值近似矩阵A,得:

如下图:

我们用灰色部分的三个小矩阵近似表示矩阵A,存储空间大大的降低了。
6.SVD总结
参考:
https://blog.csdn.net/zhongkejingwang/article/details/
https://www.cnblogs.com/pinard/p/6251584.html
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227460.html原文链接:https://javaforall.net
