我已经读过关于奇异值分解(SVD)的文章。在几乎所有的教科书中都提到将矩阵分解为具有给定规格的三个矩阵。
但是,以这种形式拆分矩阵背后的直觉是什么?PCA和其他用于降维的算法在算法具有良好的可视化特性的意义上是直观的,但使用SVD并非如此。
我已经读过关于奇异值分解(SVD)的文章。在几乎所有的教科书中都提到将矩阵分解为具有给定规格的三个矩阵。
但是,以这种形式拆分矩阵背后的直觉是什么?PCA和其他用于降维的算法在算法具有良好的可视化特性的意义上是直观的,但使用SVD并非如此。
Answers:
写矩阵的SVD(实,)为 其中是,是对角和是。在矩阵的列的术语和,我们可以写出 。这表明写为 rank-1矩阵之和。等级1矩阵是什么样的?让我们来看看: n × p X = U D V T U n × p D p × p V T p × p U
现在考虑一下,它包含黑白图像的灰度值,矩阵中的每个条目代表一个像素。例如下面的狒狒图片:
然后将此图像读取到R中,并使用库来获取结果结构的矩阵部分pixmap
。
计算SVD:
baboon.svd <- svd(bab) # May take some time
我们如何考虑呢?我们得到狒狒图像,表示为简单图像的总和,每个图像仅显示垂直和水平结构,即它是垂直和水平条纹的图像!因此,狒狒的SVD将狒狒图像表示为简单图像的叠加,每个图像仅显示水平/垂直条纹。让我们计算具有成分和成分的图像的低阶重建:512 512 1 20
baboon.1 <- sweep(baboon.svd$u[,1,drop=FALSE],2,baboon.svd$d[1],"*") %*%
t(baboon.svd$v[,1,drop=FALSE])
baboon.20 <- sweep(baboon.svd$u[,1:20,drop=FALSE],2,baboon.svd$d[1:20],"*") %*%
t(baboon.svd$v[,1:20,drop=FALSE])
产生以下两个图像:
在左侧,我们可以轻松地在等级1图像中看到垂直/水平条纹。
最后,让我们看一下“残差图像”,即从奇异值最低的秩一图像中重建的图像(如上所述,未显示代码)。这里是:
这很有趣:我们看到原始图像中难以表现为垂直/水平线重叠的部分,主要是对角鼻毛和一些纹理以及眼睛!
令(因此量化在方向的爆炸力)。假设定义了单位向量,使得
等式(2)可以简明地使用矩阵符号作为待表达
其中是矩阵,它的列是,是矩阵,它的第列是和
这是关键的事实,是缺少的部分:事实证明与正交:
我声称如果这不是真的,则对于问题(1)并非最佳。确实,如果不满足(4),则有可能通过在方向上对其进行微扰来改善。
假设(矛盾)不满足(4)。如果在正交方向受到轻微干扰,则的范数不会更改(或者至少可以忽略的范数的更改)。当我在地球表面行走时,我到地球中心的距离不会改变。但是,当在方向上受到扰动时,矢量在非正交方向受到扰动,因此范数的变化是不可忽略的。的规范可以增加不可忽略的数量。这意味着对于问题(1)并不是最佳的,这是一个矛盾。我喜欢这种说法,因为:1)直觉很明确;2)直觉可以直接转换为严格的证明。
类似的论点表明与和正交,依此类推。向量是成对正交的。这意味着单位矢量可以选择为成对正交,这意味着上面的矩阵是正交矩阵。这完成了我们对SVD的发现。
为了将上述直观的论据转化为严格的证明,我们必须面对这样一个事实:如果在方向上受到扰动,则扰动向量
并不是真正的单位向量。(其规范为。)要获得严格的证明,请定义
向量实际上是一个单位向量。但是您可以很容易地看出,如果不满足(4),则对于足够小的值,我们有
(假设的符号
(顺便说一句,我建议在这里阅读乔巧媛对SVD的解释。特别是,请看一下我们上面讨论的“关键引理#1”。正如乔楚说的那样,关键引理1是“技术的核心值分解”。)
杜德(Dude)花了一个小时的时间观看此讲座:https : //www.youtube.com/watch?v=EokL7E6o1AE
这个家伙超级直截了当,重要的是不要跳过任何一个,因为所有这些最终都会融合在一起。即使开始时看起来可能有点慢,他仍在努力确定一个关键点,他做到了!
我将为您总结一下,而不仅仅是给您提供每个人都做的三个矩阵(因为当我阅读其他说明时,这使我感到困惑)。这些矩阵从何而来,为什么我们要这样设置呢?讲座钉了它!可以从具有相同尺寸的基本矩阵构造每个矩阵(在有史以来的任何历史中),然后旋转并拉伸(这是线性代数的基本定理)。人们抛出的这三个矩阵中的每个矩阵都代表一个初始矩阵(U),一个缩放矩阵(sigma)和一个旋转矩阵(V)。
比例矩阵显示出主导旋转的矢量,这些称为奇异值。分解正在求解U,sigma和V。