奇异值分解SVD讲解

奇异值分解技术(简称SVD)具有长期且有些令人惊讶的历史。它开始于社会科学与智力测试。早期的情报研究人员指出,用于衡量智力的不同方面的测试,例如口头和空间,通常是密切相关的。

因此,他们假设有一个共同的智力的一般衡量标准,他们称之为“g”,因为“一般情报”,现在通常被称为“智商”,所以他们着手解释构成的不同因素智力,以便拉出最重要的一个。

今天,奇异值分解已经通过许多科学分支传播,特别是心理学和社会学,气候和大气科学以及天文学。它在机器学习以及描述性和预测性统计中也非常有用。

力学的启发

回顾基本力学,力的分解是力的合成的逆运算,求一个力的分力的过程,同样遵守平行四边形法则。如果分解后的两个力是互相垂直的,就类似于坐标分解,一般可有无数种分法,如图所示。

所以,任何力矢量都可以沿x轴和y轴分解为其组件:

令人失望的是,几乎所有网上SVD方面的博客都讲的使其比必要的更复杂,而核心思想是非常简单的。

SVD只不过是将矢量分解为正交轴- 我们只是认为它可能需要更堂皇的名称。

让我们看看情况如何。

当矢量a被分解时,我们得到3个信息:

第一、 投影方向的单元矢量(v 和v )我们进行矢量分解的方向。在上面它们是x和y轴,但可以是任何其他正交轴。

第二、长度投影(线段sa1和sa2),这告诉我们有多少矢量被包含在投影的各个方向(a在v比在v上的投影更多,因此,sa1>sa2)。

第三、矢量投影(矢量pa1和pa2),用于重建原始矢量的分量(矢量和为原始矢量),以及用于其可以很容易地验证pa1 = sa1* v和pa2= sa2* v,很容易从以前的2个推断出来。

关键结论:

任何向量都可以用下式表示:

1.投影方向单位向量(v 1,v 2,...)。

2.投影到它们上面的长度(s1,s2,......)。

SVD所做的就是将这个结论扩展到多个向量(或点)和所有维度:

这是数据集的一个示例,一个点可以被认为是从原点出发的矢量。但是要处理这么多数据就是一个比较棘手的混乱。

如何处理这个混乱

如果不先处理单个向量,我们就无法处理这个混乱!

数学中的许多概括,主要使用矩阵。因此,我们必须找到一种方法来表示使用矩阵的向量分解的操作。

事实证明这是很自然的事情:

与之前的数字相同,但通过倾斜投影轴,来表明不限于x和y。a和a是向量a的坐标,按照惯例放入列矩阵(列向量)。对于v1和v2也是如此。

我们想要沿着单位矢量v 1和v 2分解或者说投影矢量a。

该投影是由点积来实现的,它为我们提供了长度投影sa1和sa2:

将a投射到v1和v2上。

但是如果我们可以利用矩阵,那么效率是出色的......

通过为每个单位矢量添加更多的列,一次写入两个方程式。

我们甚至可以添加更多点......

添加一个额外的行就相当于添加了点。S是包含投影长度的矩阵。

在添加点b之后,它就是这样的样子:

现在可以很容易地推广到任意数量的点和维度:

n=点的个数;

d=维度大小;

A=包含点的矩阵;

V=包含分解轴的矩阵;

S=包含投影长度的矩阵。

下面的动态很好的体现了数学优雅:

总结概括:

在这种情况下,点积只是普通的矩阵乘法。

这就是说:

因为V列是正交的,所以它的逆=它的转置(正交矩阵的属性)。

这就是SVD的关键结论:

任何一组矢量(A)可以用其在某组正交轴(V)上的投影长度(S)表示。

传统的SVD公式说:

但这只是意味着我们想看看如何:

这就是接下来需要我们推导的。

如果仔细查看矩阵S,您会发现它包括:

事实证明(出于后面会看到的原因)我们最好能够对这些列向量进行归一化,即使它们具有单位长度。

这是通过相当于将每个列向量除以其大小来完成的,以矩阵形式。

看一个例子,来看看这个"分裂"的事情是如何完成的。

假设我们想将M的第1列除以2。要求必须乘以另一个矩阵来保持恒等:

可以直接验证未知矩阵只不过是单位矩阵,第1行第1列被除数2替换:

第二列除以3现在变成了直接的事-只需用元素3有来更换单位阵第2行第2列:

应该明白如何将此操作推广到任何大小的任何矩阵。

现在,我们要在上面的"除法"的概念应用到矩阵。

为了标准化S的列,我们将它们除以它们的大小......

.通过使用S,我们在上面的例子中用M做了什么:

最后得到:

这不就是奇异值分解的形式吗?

解释

我们来谈谈这个U和Σ......

σ是什么?为什么我们要把S标准化来找到它们?

由上面我们已经知道,σ是所有点在单位矢量v投影长度的平方和的平方根。

这是什么意思?

红色部分= 向量在v1上的投影。蓝色部分= 向量在v2上的投影。点越接近特定投影轴,相应σ的值越大。

因为σ在其定义中包含特定轴上的投影长度之和,因此它们表示所有点与该轴的接近程度。

例如,如果σ1>σ2,那么大多数点比v2更接近v1,反之亦然。

这在SVD的无数应用中具有巨大的实用性。

主要应用

找到矩阵的SVD分解的算法并不是不随机选择投影方向(矩阵V的列)的。

他们选择要投影的向量作为数据集的主成分(矩阵A)。

它们是变化最大的线(最大方差)。

特征降维的目的是把数据集投影到方差最大的线(或平面):

洋红色:投射前的点。紫罗兰:投影后的点(维数减少)。

现在,使用SVD投影数据集的行为变得非常简单,因为所有点都已经在所有主成分(v单位向量)上投影(分解):

因此,例如,将数据集投影到第一个主成分上......

现在,我们要做的就是删除与第一主成分无关的所有列。现在A'中的投影数据集 。

将两个矩阵(上面的S和V)相乘得到包含投影点的矩阵A'。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值