转-奇异值分解

We Recommend a Singular Value Decomposition

我们推荐奇异值分解

奇异值分解可以方便地把一个矩阵(包含我们感兴趣的数据)分解得更加简单和有意义。 本文讲解了奇异值分解的几何解释,顺便也介绍了一些应用。

From http://www.ams.org/samplings/feature-column/fcarc-svd

David Austin,Grand ValleyState University

介绍

  本文的主题是奇异值分解(singular value decomposition,SVD),它应该是数学系研究生标准课程的一部分,但是经常被忽略。除了十分直观,此类分解(decomposition)还极其有用。比如,Netflix,一在线电影租赁公司,为改进他们的推荐系统设立了100万美元奖金,要求是准确度(accuracy)提高10%。 令人惊讶的是,这个看起来很普通的问题,实际上十分具有挑战性。参与的团队正在使用十分复杂的技术。这些技术的核心便是奇异值分解。

  奇异值分解可以方便地把一个矩阵(包含我们感兴趣的数据)分解得更加简单和有意义。 本文讲解了奇异值分解的几何解释,顺便也介绍了一些应用。

线性转换的几何学解释

让我们先看一些简单的2x2的矩阵。第一个例子是如下对角矩阵(diagonal matad-images.jianshu.io/upload_images/10000468-3f74806ef09d3c2c?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

从几何学角度,我们可以把类似矩阵看作是一种转换:在平面上取一点(x, y),然后通过矩阵相乘,把此点转换到另外一点:

image

此转换效果是:平面在水平方向伸展了3倍,垂直方向无变化。

image

现在我们再看矩阵

image

它产生以下效果:

image

此转换看上去不像前面的简单明了。但是让我们把网格(grid,http://mathworld.wolfram.com/Grid.html)旋转45度,看看会发生什么情况。

image

啊哈。我们发现这个新网格的转换与第一张图的网格转换一样:乘以一个对角矩阵,网格在某个方向上拉伸了3倍。

因为矩阵M是对称的,即M的转置(transpose,沿着对角翻转)等于M,所以这只是一类特殊的情况。如果我们有一2x2的对称矩阵,通常会产生以下转换效果:先在domain中旋转网格,然后在两个方向上拉伸(stretch)或者反射(reflect)。换句话讲,对称矩阵的行为像对角矩阵(除了旋转)。

说得更数学化些:给定一对称矩阵M, 我们可能会找到一由正交向量(orthogonal vector) vi 组成的集合,M*****vivi的标量倍(scalarmultiple),也就是说

M****vi = λiv**i

其中λi 是一标量。

从几何角度来说,这意味着当向量vi乘以M后,它被简单的拉伸(stretch)或者反射(reflect)了。

正因为这个特性,我把向量vi 称为矩阵M特征向量(eigenvector);标量λi 称为特征值(eigenvalue)。一个容易验证的重要的事实是:对称矩阵的特征向量(带不同特征值)是正交的。

如果用对称矩阵的特征向量按放(align)网格,这个矩阵会再拉伸(stretch)或者反射(reflect)这个(被旋转后的)网格,如同它对自己的特征向量一样。

这个线性转换的几何描述属于简单的一类:网格只是在某个方向被拉伸了。对于更加普通的矩阵,我们会问这么一个问题:我们能否找到一个正交网格(两组线相互垂直的),能转换到另外一个正交网格。让我们看最后一个例子,它使用一非对称矩阵:

image

这个矩阵产生一个称为 “修剪”(shear)的几何效果。

image

沿着水平轴,容易找到一组特征向量。但是,上面的图片显示这些特征向量不能用于创建正交的网格(能转换到另外一个正交网格),虽然如此,我们还是先看一下我们旋转这个网格30度会发生什么。

image

注意由平行四边形构成的位于坐标原点的夹角在右边增加了。让我们把网格旋转60度。

image

嗯。右边的网格看上去是正交的了。实际上,通过在domain中旋转网格大约58.28度,两个网格就全是正交的了。

image

奇异值分解(Singular Value Decomposition)

这就是SVD在2x2矩阵下的几何学本质:对于任意的2x2矩阵,我们能找到一个正交的网格(grid),它被转换到了另外一个正交网格。

我们使用向量来描述这个现象:如果我们通过某种方式挑出两个单位向量(unit vector)v1v2,它们是正交的,向量Mv1Mv2 也是正交的。

image

我们用u1u2代表向量Mv1Mv2 方向的单位向量,用σ1 andσ2代表向量Mv1Mv2的长度,它们描述网格在这些方向上的拉伸量。这些数字称为M的奇异值(singularvalue,在这个例子里,奇异值是golden ratio 和它的reciprocal,但是在这里不重要)。

image

因此我们有

Mv1 = σ1u1

Mv2 = σ2u2

现在我们可简单说一下矩阵M是如何处理普通向量x的。因为单位向量v1v2是正交的(译者注:形成了一规范正交基,****orthonomal basis),所以我们有:

x = (v1x)v1 + (v2∙x)v2

(译者注:x ∙v1 = (v1∙x) v1∙v1 + (v2∙x)v2∙v1 = (v1∙x) 1+0 = v1∙x=x*∙v1)

这意味着

Mx = (v1x)M****v1 + (v2x)Mv**2

Mx = (v1x)σ1u1+ (v2x)σ2u2

记住dot product 操作可以用矩阵转置实现:

vx = vTx

从而导出

Mx = u1σ1v1Tx +u2σ2v2Tx**

M = u1σ1v1T +u2σ2v2T**

上述表达式可以简写成

M = UΣVT

其中U 是由向量u1u2(作为列)组成的矩阵,Σ 是对角矩阵,对角线上的值是σ1σ2,V 是向量v1v2(作为列)组成的矩阵. 矩阵V的上标T 代表V的矩阵转置。

上面显示了如何将矩阵M分解为三矩阵的积: V描述在domain中的规范正交基(orthonomal basis),U描述co-domain中的规范正交基,Σ描述在V中的向量在U中拉伸量。

译者注:

1. 如果把每个矩阵看作一种转换动作,可以描述为:先旋转,然后拉伸展,然后再一次旋转。

2.所以SVD的Idea是:如果我们在向量空间RnRm上选择正确的基(basis),每个mxn矩阵均可对角线化(diagonalized)。计算的问题就是如何找到这些basis。

如何作奇异值分解?

奇异值分解的强大之处在于适用于任何矩阵。那我们是如何做到呢?让我们回顾前面的一个例子,在domain中加上一个单位圆。在co-domain中它将是椭圆,它的长轴(major axis)和短轴(minoraxis) 定义了在co-domain中的正交网格。

image

注意长轴短轴分别由Mv1Mv2定义。因此这两个向量是单位圆上向量(在椭圆上的)最长和最短的向量。

image

换句话讲,单位圆上的函数|Mx| 在x=v1时有最大值,x=v2有最小值。这把问题降低到一个十分标准的微积分问题:我们希望在单位圆上优化一个函数。可以证明函数的临界点在矩阵MTM的特征向量上。因此这个矩阵是对称的,对应于不同的特征值的特征向量将是正交的。这就产生了一组向量vi

奇异值定义为σi = |Mvi|, 向量ui则是Mvi方向上的单位向量。但是为什么这些ui是正交的呢?

要解释这个,我们假设σi and σj 是两个不同的奇异值。于是有

Mvi = σiui

Mvj = σjuj

让我们先看表达式Mvi∙Mvj。 为了方便先假设它们的奇异值是非零的。另外一方面,vivj是对称矩阵MTM的特征向量,它们是相互正交的,结果是这个表达式等于零。

Mvi∙Mvj =viTMTMvj = vi∙MTMvj =vi∙λjvj = λjvi∙vj =0.**

另外一方面,我们有

Mvi∙Mvj =σiσjui∙uj =0**

因此uiuj是正交的。到此为止,我们发现了一组正交向量vi,它能转换为另外一组正交向量ui。(vi对应的)奇异值描述了在不同方向上的拉伸程度。

在实际应用中,这不是为矩阵寻找奇异值分解的过程,因为这种方法效率不高,或者说数值计算上是低效的。

另外一个例子

让我们看一矩阵:

image

这个矩阵在几何上的效果如下图:

image

| | | |

在这种情况下,第二个奇异值是0,因此我们写成

M = u1σ1v1T**.

(译者注:M = u1σ1 v1T+ u2σ2 v2T

换句话讲,如果其中的一些奇异值是0,对应的项就不出现在M的分解中。这样,我们发现M的rank(矩阵秩,它等于线性转换后的维度)就等于非0奇异值的数量。

数据压缩

奇异值分解能让数据表示更加有效。例如,我们想传输以下图片,含15x25个黑或白的像素点。

image

因为图片中只有三种列,就像下图显示的,也许我们能用更加紧凑的形式。

image

我们用0代表黑色,1代表白色,用一个15x25的矩阵表示这个图像。如此一来,便有了375个元素的矩阵:

image

如果我们对上述M作奇异值分解,会发现只有三个非0的奇异值

σ1 = 14.72
σ2 = 5.22
σ3 = 3.31

因此,矩阵可表示为:

M=u1σ1v1T +u2σ2v2T + u3σ3v3T

这意味着我们有:三个向量vi,每个有15 个元素;三个向量ui,每个有25个元素;三个奇异值σi。这意味着我们能只用123个数字代表矩阵(153+253+3=123),而不是375个。就这样奇异值分解帮助我们发现了矩阵中存在的冗余,并提供了剔除它们的方法。

为什么只有三个非零的奇异值呢?前面讲过,非0奇异值的数量等于矩阵的rank。在这个例子中,矩阵只有三个线性独立的列,也就是它的rank=3。

降噪

前面的例子显示我们是如何利用“很多奇异值是0”来解决问题的。通常大的奇异值对应着有趣信息多的所在。比如,设想我们用一个扫描仪把这个图像输入到电脑。但是,扫描仪在图像中引入了一些非理想的数据(通常称为“噪音”)。

image

与前面的例子一样我们用15x25的矩阵表示数据,然后进行奇异值分解。可发现以下奇异值

*** σ***1 = 14.15
σ2= 4.67
σ3= 3.00
σ4= 0.21
σ5= 0.19
...
σ15= 0.05

显然,前三个是最重要的(最大),我们可以假设其他小的奇异值是噪音造成的,所以近似表示矩阵如下

M u1σ1v1T +u2σ2v2T+u3σ3v3T

这导致了以下改进的图像。

image

数据分析

在收集数据的时候会遇到噪音数据:无论如何好的器材,测量经常会有误差。因为大的奇异值(singular values)对应了矩阵中的重要特性。因此一旦数据收集完成,便自然可用SVD来研究。

例如,我们收集了以下数据

image

我们可能会把这些数据放到一个矩阵中

-1.03 0.74 -0.02 0.51 -1.31 0.99 0.69 -0.12 -0.72 1.11

-2.23 1.61 -0.02 0.88 -2.39 2.02 1.62 -0.35 -1.67 2.46

然后运行SVD,我们发现如下奇异值

σ1 = 6.04

σ2 = 0.22

其中一个奇异值如此之大,可以安全地假设小的σ2 是由于数据噪音引起的,这个奇异值在理想情况下应该是0。在这则案例中,矩阵的rank 等于1,意味着所有数据应该在向量ui定义的这条线上。

image

这个简单的例子说出了PCA(principal component analysis)起源,它是一组使用奇异值剔除数据中依赖和冗余的技术。

同样,SVD可用于检测数据中的存在的分组(group)。这就可以解释,为什么SVD正用于改进netflix的电影推荐系统。系统会根据你的电影评分(观看过的),把你分到某个组中,组内人员的评分与你的相似,然后系统就向你推荐组内其他人评分高的电影。

参考文献

  • Gilbert Strang, Linear Algebra and Its Applications. Brooks Cole.

    Strang's book is something of a classic though some may find it to be a little too formal.

  • William H. Press et al, Numercial Recipes in C: The Art of Scientific Computing. Cambridge University Press.

    Authoritative, yet highly readable. Older versions are available online.

  • Dan Kalman, A Singularly Valuable Decomposition: The SVD of a Matrix, The College Mathematics Journal27 (1996), 2-23.

    Kalman's article, like this one, aims to improve the profile of the singular value decomposition. It also a description of how least-squares computations are facilitated by the decomposition.

  • If You Liked This, You're Sure to Love That,The New York Times, November 21, 2008.

    This article describes Netflix's prize competition as well as some of the challenges associated with it.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容