上一篇里忘记说了,为什么取名为矩阵之芯呢?

矩阵之芯 SVD: 奇异值分解及其几何解释除了这东西在线性代数里确实比较重要外,从长相看,是不是有点上面图片里的那家伙的身形。矩阵的奇异值分解 ,一分为仨,中间露出芯,是不是有几分开心果脱壳而出的神韵。

1基本性质

上一篇最后讨论了左右奇异向量具有如下性质,

对于 成立。

今天来看看另一个简单但是也挺有用的性质。

令 具有奇异值分解 ,该分解具有下列基本性质,

  • 1、秩 , 等于 的非零奇异值的数量。

  • 2、由左右奇异向量

可以构建 的外积展开式,

验证

注意,最后那个等号对应的式子很有意思,两个矩阵的乘积可以记为两个向量的内积形式。这里,向量都默认写为列向量的形式。

对矩阵乘法的不同理解

上面分解里虽然有三个矩阵,但我们只需要看两个矩阵的乘法。

1、矩阵乘法 的第一种理解,即乘积结果的第 行、第 列元素的值为矩阵 的第 行与矩阵 的第 列(都看成向量)的内积,

从上面式子可以看出来,每个元素都是 个乘积之和。

2、矩阵乘法 的第二种理解,先由矩阵 的第 列乘以矩阵 的第 行(都看成矩阵,用矩阵乘法,或者称为向量的外积),结果是一个矩阵,

再观察,乘积 在 位子上的元素 为,

所以,将下面这 个矩阵加起来

就是矩阵 ,即有,

§外积展开式

上面性质也可以如下展开,

这里,每一项  其实是一个秩为 1 的矩阵,称为秩 1 矩阵。

2简单应用

这一条简单的性质有什么用呢?

我们知道, 是从大到小排列的,排在后面的值可能很小了,那算出来的秩 1 矩阵的值也就很小了,对最终元素的贡献可能极其微小。因此,是不是可以考虑丢弃一部分呢?

这一点对应的其实就是下面这个低秩矩阵近似问题。

§低秩矩阵近似

一些实际应用需要求解矩阵 的近似矩阵问题,即求一个具有特定秩 的截断矩阵 。这其实对应一个最优化问题,即基于约束 下,求使得两个矩阵差值 的 Frobenius 范数最小的矩阵 。可以证实,由 的 SVD 分解可以给出这个问题的解,即

其中,对角矩阵 来自矩阵 ,只是它只包含了 个最大的奇异值(其他奇异值替换为零)。这就是所谓的 Eckart-Young 定理,这是由两位作者于 1936 年证明的。

不过这里有个问题,就是这个 选多少呢?有个简单思路,通过计算前 个奇异值之和占所有奇异值总和的一定比例,如 ,

那么就选这前 个奇异值来重构矩阵,即

我们将图像灰度看成一个矩阵,然后把它分解了,丢掉一部分重新合成一张图像,看看如何效果。这个例子应该到处都可以看到吧,再来温习一下。

我们来处理一种味道不错的水果(猜猜这是哪个品种)的图像。


import numpy as npfrom PIL import Image

import matplotlib.pyplot as plt

plt.style.use('ggplot')
def load(pic):    i = Image.open(pic)    g = i.convert('L')    mat = np.array(g).astype(np.uint8)

    return mat
mat = load('orange.png')
plt.figure(figsize=(10, 5))plt.imshow(mat, cmap='gray')plt.show()

U, Sigma, V = np.linalg.svd(mat)
U.shape, Sigma.shape, V.shape
((383, 383), (383,), (492, 492))

看看只保留奇异值最大的那个秩 1 矩阵。

k = 1re_img = U[:, :k] @ np.diag(Sigma[:k]) @ V[:k, :]

plt.figure(figsize=(10, 5))plt.imshow(re_img, cmap='gray');

灰蒙蒙一片啊,那就再多看几个。下面我们来按照百分比来自动计算这个 值。

def select_k(sigma, pcent):    s = np.add.accumulate(sigma)    s = s/s[-1]    return np.where((s>=pcent)==True)[0][0]  
select_k(Sigma, 0.9)
85

前 85 个奇异值就占了百分之九十的信息量

# 查看前百分之 70、80、90、100 的重建效果for i in [select_k(Sigma, 0.7), select_k(Sigma, 0.8), select_k(Sigma, 0.9), select_k(Sigma, 1.0)]:    re_img = U[:, :i] @ np.diag(Sigma[:i]) @ V[:i, :]

    plt.figure(figsize=(10, 5))    plt.imshow(re_img, cmap='gray')    title = "n = %s" % i    plt.title(title)    plt.show()




有没有发现,用 85 个秩 1 矩阵生成的结果跟原图差别不大吧。把前 85 个奇异值画出来看看。

plt.figure(figsize=(15, 5))plt.plot(Sigma[:85]);

3与其他分解的关系

§与特征分解的关系

从可以应用于任何 矩阵的意义上讲,奇异值分解具有更广的普适性,而特征分解(谱分解)只能适用于可对角化的矩阵。但是,这两个分解是相关的。

给定 的 SVD 分解,以下两个关系成立,

上面等式的右边是左边的特征分解。具体来说,

  • 的列(右奇异向量)是 的特征向量。

  • 的列(左奇异矢量)是 的特征向量。

  • 的非零元素(非零奇异值)是 或 的非零特征值的平方根。

正规矩阵

正规矩阵定义: 对于复数值方阵 ,如果 ,其中 是共轭转置,那么矩阵 是正规矩阵。

复值方阵可以分解为是正规矩阵

其中, 是酉矩阵,即 ,并且 是对角矩阵。 的特征向量对应相应的特征值 。

而下面分解

也被称为矩阵的酉对角化。

如果 为 Hermitian 矩阵 ,则 仅具有实值元素。

如果 限于一个酉矩阵,则 将其所有值放在复数单位圆上,即 。

在实数域内,如果 是正规矩阵,即

根据谱定理可知该类矩阵可以使用特征向量对它进行对角化,因此可以将其写为 ,其中 为正交矩阵以及 为对角矩阵。

当 是半正定时,分解 同时也是奇异值分解。否则,可以通过将矩阵 每个对角线元素 的符号移至其对应的 来将其改造为 SVD 分解。

实对称矩阵

作为一种更特殊的情况,对于每个 实对称矩阵,特征值都是实数,特征向量可以都是实数并且正交的。因此,实对称矩阵 可分解为

其中, 是正交矩阵,其列是 的特征向量,而 是对角矩阵,其元素是 的特征值。

其展开式跟 SVD 分解也有类似形式,

一般矩阵的特征分解

除了半正定正规矩阵外, 的特征分解和 SVD 有所不同。

特征分解为 ,其中 不一定为正交矩阵,而 不一定为半正定,而 为 ,其中 是对角且为半正定,而 和 均为正交矩阵。

另外,只有具有完备特征向量集的方阵具有特征分解,但是任何 矩阵都具有 SVD 分解。

例子

给定如下实矩阵,

可以求得对 进行特征分解所需的矩阵 为,

即有,

§一般矩阵

SVD 与不能作特征分解的更一般的矩阵之间的联系则可以通过极分解来建立,例如在实数域,可以构建如下分解

其中,是半正定以及正规矩阵,而 是正交矩阵。或者,以及 。相关阅读

矩阵和线性代数原来是这么来的

矩阵特征值的故事 - 缘起琴弦

二次型和矩阵合同原来是这么一回事

矩阵特征值是这么来的,以及有趣的盖尔圆

万能的 SVD 分解是哪位牛人提出来的?度量、范数和内积原来是这么个关系线性映射: 从凯莱引入矩阵乘法说起

矩阵之芯 SVD: 奇异值分解及其几何解释

低秩矩阵完备_矩阵之芯 SVD: 基本应用以及与其他分解的关系相关推荐

  1. 低秩矩阵完备_多源域和多视角 “秩约束”

    Robust Multi-view Representation: A Unified Perspective from Multi-view Learning to Domain Adaption ...

  2. mysql 矩阵乘法_矩阵乘法高级操作

    对于矩阵乘法的一些操作 我们 其实 大部分是 多追加一个系数 或者和 其他算法连在一起. 至于核心无非就是 先列出dp 方程再优化 或者 直接 对题目进行建模 构建矩阵. 至于矩阵乘法的正确性 形状的 ...

  3. 线性代数矩阵行列式_矩阵的行列式 使用Python的线性代数

    线性代数矩阵行列式 In linear algebra, the determinant is a scalar value that can be computed for a square mat ...

  4. 7.4.1 矩阵低秩近似、矩阵范数

    矩阵低秩近似.矩阵范数 根据奇异值分解,秩为 rrr 的任意矩阵 AAA 可分解为 rrr 个简单矩阵(秩为 111) σiuiviT\sigma_i\mathbf{u}_i\mathbf{v}^T_ ...

  5. 奇异值分解与低秩矩阵近似

    奇异值分解   任何实矩阵\(\textbf{A} \in \mathbb{R}^{m \times n}\)都可以分解为 $\textbf{A} = \textbf{U}\Sigma\textbf{ ...

  6. 低秩矩阵(Low-Rank)的意义

    1.回顾基础: 矩阵的秩度量的是矩阵行列之间的相关性,如果各行各列都是线性无关的,矩阵就是满秩.非零元素的行或列决定了秩的大小.//划重点,秩可以度量矩阵自身相关性 讲个小故事: 首先来思考,为什么叫 ...

  7. 低秩矩阵的应用--背景建模

    背景建模是从拍摄的视频中分离出背景和前景. 由于背景的视频基本是不变的,所以如果把每帧当做一个矩阵的一列那么,矩阵是低秩的,所以低秩矩阵的恢复来恢复出背景. 今天主要完成了,在自己的数据库让进行背景和 ...

  8. 9.3 低秩矩阵分解-机器学习笔记-斯坦福吴恩达教授

    低秩矩阵分解(Low Rank Matrix Factorization) 我们将用户对电影的评分表格: 用矩阵表示: Y=[55005??0?40?00540050]Y=\left[\begin{m ...

  9. 低秩矩阵补全算法matlab实现,推荐系统中的矩阵补全算法

    最基本的问题,以用户电影评分为例,也就是这个用户-电影矩阵. 表中是用户多电影的评分,但评分有缺失,因为用户不可能对所有电影作出评价. 那么推荐问题就是给用户合理推荐一个没看过的电影,合理是指,预测用 ...

最新文章

  1. 【343天】每日项目总结系列081(2018.01.14)
  2. 做折线图_Excel折线图这样做,老板看了要崩溃
  3. 一题多解(六)—— 一个数二进制形式 1 的个数
  4. powerquery分组_Power Query 基本功能使用
  5. 邮箱可以群发邮件吗?邮件群发怎么发?推荐邮箱邮件群发平台
  6. eclipse JRebel破解
  7. MySQL自动生成Oracle建表语句脚本
  8. 计算机考研复试之操作系统
  9. 菜谱网 java 源码_基于JSP的美食网站食谱网站、javaweb源码
  10. Vue常用组件库集合---kalrry
  11. 【QT小记】使用QPainter绘制各种基本图形
  12. imitate wechat - 1
  13. Microsoft ODBC Driver 17 for SQL Server: 以前的某个安装需要重新引导计算机以便使更改生效。若要继续,请重新启动计算机,然后再次运行安装程序
  14. Anaconda安装说明
  15. macos 虚拟镜像文件_如何在macOS中使用虚拟文件测试网络或硬盘速度
  16. python 微信群男女比例分析,区域分析,柱状图显示
  17. 解决Xshell7安装后打不开的问题
  18. 欧拉线性筛 求n的最小正因数的个数
  19. C完结:学生成绩管理系统【2018.3.26】
  20. 蚁群算法求解路径优化问题

热门文章

  1. 视频图像处理芯片排名_关于图像处理芯片(DSP)
  2. vue项目中使用axios发送请求
  3. mysql安装教程_mysql8.0.20安装教程,mysql下载安装教程8.0.20
  4. c++ 读取hdmi输入信号_小白需要知道HDMI知识
  5. java string 对象地址_Java中String对象的存储位置(学习笔记)
  6. arp扫描工具_ARP扫描与ARP欺骗--Python的Scapy/Kamene模块学习之路
  7. Linux的环境变量.bash_profile .bashrc profile文件
  8. Python解析JSON数据的基本方法
  9. 知识也许是先人留给后辈最大的财富
  10. 分享三:mysql跨库查询