SVD究竟是个什么

奇异值分解(SVD)是线性代数中的重要工具,适用于非方阵,而特征分解主要针对方阵。SVD将矩阵分解为U、D和V,其中D是对角矩阵,包含奇异值。特征分解找出矩阵的主要方向(特征向量)和长度(特征值)。在PCA降维中,SVD能有效计算最大特征向量,且某些实现允许直接求解,避免大矩阵运算。左奇异矩阵用于行数压缩,右奇异矩阵用于列数压缩,适合数据降维。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SVD全称叫做singular value ecomposition,中文也叫做奇异值分解,我们在线性代数的学习中经常遇到。简而言之就是将矩阵分解为奇异向量以及奇异值。

特征分解

通过奇异值分解,我们会得到与特征分解相同类型的信息。
那么什么是特征分解?特征分解是最常用的矩阵分解之一,我们可以通过分解矩阵能够得到一组特征向量以及特征值。我们知道,向量是有方向的,所以我们可以理解为,特征向量为矩阵的主要方向,而特征值则为这个方向上的长度。
注意的是,这个矩阵需要是方阵,方阵的意思就是矩阵的行数与列数一致。
以下是特征分解的定义:
方阵A的特征向量是指与A相乘后相当于对该向量进行缩放的非零向量v:
A υ = λ υ A\upsilon=\lambda\upsilon Aυ=λυ
虽然任意一个实对称的矩阵都有特征分解,但是特征分解并不总是唯一的。若两个或者多个特征向量具有相同的特征值,那么由这一些特征向量生成的子空间中,任意一组正交向量都可以作为该特征值的特征向量。

正交

若两个向量的内积为零,则它们正交,可以理解为两组向量的夹角为90°。若A,B两组向量正交,那么可以说A可以无关于B,独立于B进行估计。

奇异值分解

我们在上面讲述了什么是特征分解,那么为什么又需要用到奇异值分解呢?因为特征值分解只能用于方阵,但是实际应用中,进行运算的矩阵并不是方阵,而是mn(m不等于n)的一般矩阵,那么这个时候就无法使用特征值分解了,奇异值分解具有更广泛的应用。
每个实数矩阵都有一个奇异值分解。
假设我们的矩阵A是一个m×n的矩阵,那么我们定义矩阵A的SVD为:
A = U D V T A=UDVT A=UDVT
假设A是一个m
m的矩阵,D则是mn的矩阵,VT是一个nn的矩阵。其中U,V为正交矩阵,而D为对角矩阵,D,V为特征向量组成的矩阵,D为特征值组成的对角矩阵。这么就可以理解为:若该矩阵有50个奇异值,当取前20个时,就相当于取前20个特征值,然后在对应的特征向量上进行运算。

对于奇异值,它跟我们特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。

对角矩阵D对角线上的矩阵为矩阵A的奇异值,U为左奇异值向量,V为右奇异值向量

SVD用于PCA

PCA降维,需要找到样本协方差矩阵中的最大的d个特征向量,然后用这最大的d个特征向量张成的矩阵来做低维投影降维(用于列数的降维)。可以看出,在这个过程中需要先求出协方差矩阵,当样本数多样本特征数也多的时候,这个计算量是很大的。

注意到我们的SVD也可以得到协方差矩阵最大的d个特征向量张成的矩阵,但是SVD有个好处,有一些SVD的实现算法可以不求先求出协方差矩阵,也能求出我们的右奇异矩阵V。也就是说,我们的PCA算法可以不用做特征分解,而是做SVD来完成。
另一方面,注意到PCA仅仅使用了我们SVD的右奇异矩阵,没有使用左奇异矩阵,那么左奇异矩阵有什么用呢?

假设我们的样本是m×n的矩阵X,如果我们通过SVD找到了矩阵最大的d个特征向量张成的m×d维矩阵U,则我们如果进行如下处理:

可以得到一个d×n的矩阵X‘,
这个矩阵和我们原来的m×n维样本矩阵X相比,行数从m减到了k,可见对行数进行了压缩。

左奇异矩阵可以用于行数的压缩。

右奇异矩阵可以用于列数即特征维度的压缩,也就是我们的PCA降维。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值