特征值特征向量和奇异值分解SVD

本文详细介绍了主成分分析(PCA)的概念和直觉,通过多个例子阐述PCA在数据降维中的作用。同时,讲解了矩阵的点乘、外积、转置和对偶空间等基础知识,以及协方差和方差在PCA中的重要性。此外,还深入探讨了奇异值分解(SVD)与PCA的关系,以及SVD在求解线性方程组中的应用。

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

1. 参考文献

这一部分参考一个国外博客系列:
https://medium.com/@abdullatif.h

应用部分参考了:
https://zhuanlan.zhihu.com/p/337444962

2. 主成分分析1——直觉

在分析数据时,如果数据维度大于3,我们很难直观的对其进行想象。那么有没有可能对数据维度进行缩减,找出其中的主要部分呢?答案是有可能,就是通过主成分分析法(PCA)

2.1 第一个例子

有一组数据如下,每个数据点有四个维度,分别是,价格,面积,层数和户数。
在这里插入图片描述
仔细观察可以发现,每个维度的重要性并不相同。层数的变化非常小 σ 2 = 0.2 \sigma^2=0.2 σ2=0.2,没有什么有效信息。相比之下,户数的变化范围比较大 σ 2 = 28 \sigma^2=28 σ2=28,面积的变化范围更大 σ 2 = 43 \sigma^2=43 σ2=43,价格的变化范围最大 σ 2 = 127 \sigma^2=127 σ2=127。变化比较大说明蕴含的信息比较到。

再仔细观察,可以看到价格大约是面积的2倍,这说明两组数据之间有比较高的covarience,说明两组数据时相关的,这样可以忽略掉其中一组信息

结论:

  1. 变化范围越大越好
  2. 相关性越小越好

2.2 第二个例子

有一组数据如下图,可以看到数据沿着 x 1 x_1 x1轴变化很大,而沿着 x 2 x_2 x2轴变化很小。
在这里插入图片描述
因此可以进行如下简化:
在这里插入图片描述
可以看到经过简化后的数据变成一维了

2.3 第三个例子

有一组数据如下:
在这里插入图片描述
这个时候要进行简化,就要先对坐标轴进行旋转,找到变化最大的轴。
在这里插入图片描述
那么如何找到变化最大的轴呢??

3. 主成分分析2——一些基础知识

3.1 点乘

3.1.1 单点点乘

一张图:
在这里插入图片描述
一些说明:
(1)向量a和单位向量b点乘的结果:就是图中的红色线段长度,也就是向量a在向量b方向上的投影长度
(2)点乘的结果是向量b上距离a最近点的位置
(3)点乘的结果是向量a沿向量b方向分解的长度
(4)可以从夹角上看两个向量的近似程度

3.1.2 多点点乘

一张图:
在这里插入图片描述
假设:
在这里插入图片描述
可以将点乘表达为矩阵向量相乘的形式:
在这里插入图片描述

3.2 外积?(outer product)不太对吧。。

上面那一节得到了向量a在向量b上的投影长度,本节在投影长度基础上得到投影向量,也就是长度乘以单位方向向量b
在这里插入图片描述

在这里插入图片描述
同理,当有多个点时:
在这里插入图片描述
为求向量w1,w2,w3,w4,利用:
在这里插入图片描述

3.3 转置和对偶空间

假设有如下的数据,当写成3行2列时,将每一行看做一个数据点,则共有三个数据点,每个点时2维的,可画出下面的图
在这里插入图片描述

将数据进行转置,如下。得到新的矩阵,仍然将每一行看做一个数据点,则一共得到两个数据点,每个点3维
在这里插入图片描述
可以绘制出如下图的两个点

在这里插入图片描述
这两个点构成一个平面,如下
在这里插入图片描述
这个平面就是dual space

总结如下图:
在这里插入图片描述

3.4 variable space和dual space关系

如下图,三个数据点,均值是0。构成的variable space和dual space。这个比较好理解,假设有点:
p 1 = [ − 1 , − 2 ] p 2 = [ 0 , 0 ] p 3 = [ 1 , 2 ] p_1 = [-1,-2] \\ p_2 = [0 , 0] \\ p_3 = [1 , 2] \\ p1=[1,2]p2=[0,0]p3=[1,2]
转置之后,确实可以得到右侧的dual space图
在这里插入图片描述
这里取点:
p 1 = [ − 0.8 , − 2 ] p 2 = [ − 0.4 , 0.4 ] p 3 = [ 1.2 , 1.6 ] p_1 = [-0.8, -2] \\ p_2 = [ -0.4, 0.4] \\ p_3 = [1.2, 1.6] p1=[0.8,2]p2=[0.4,0.4]p3=[1.2,1.6]
可以看到在右侧dual space中,红向量和蓝向量的夹角随着点的离散程度(不相关程度)增大而增大。
在这里插入图片描述
(1)转置后的x向量自己点乘就得到variance
(2)转置后的x向量和y向量点乘就是covariance

3.5 variance和covariance

3.5.1 variance

当数据均值是0时,有:
在这里插入图片描述
如果忽略系数1/3,可得:
在这里插入图片描述

3.5.2 covariance

在这里插入图片描述

3.5.4 covariance matrix

在这里插入图片描述

4. 主成分分析3——variance最大方向

本节的最终目的是要找到一组数据点的variance最大的方向。
假设有一个均值为0的数据集A(nxd),A有n个数据点,每个数据点时d维度的向量。假设有一个单位方向向量v,那么数据集A中的点向v方向上的投影为:
在这里插入图片描述
得到的p是一个n行1列向量,每一个值,代表每一个数据点在v方向上投影的长度。
紧接着可以求A数据集在v方向上的方差(variance):
在这里插入图片描述
可见,我们得到了协方差矩阵C。本节的问题可以被描述为:
寻找一个方向v,使得数据集A在该方向上的方差 σ v 2 \sigma^2_v σv2最大

由于协方差矩阵C是对称阵,对称阵的特征向量是标准正交的,也就是:
在这里插入图片描述
任意一个向量都可以用垂直正交的特征向量的线性组合进行表示:
在这里插入图片描述
利用协方差矩阵C,对向量u进行线性变换:
在这里插入图片描述
进一步计算 u T C u u^TCu uTCu
在这里插入图片描述
结论1:
由于最终目的是找到一个u,使得 σ 2 = u T C u \sigma^2 = u^TCu σ2=uTCu取得最大值。根据上面的推导,我们实际上要确定k1和k2来使得目标函数取得最大值。这里 λ 1 \lambda_1 λ1 λ 2 \lambda_2 λ2是定值,并且考虑到u为单位向量,因此有 k 1 2 + k 2 2 = 1 k^2_1 +k_2^2 = 1 k12+k22=1,假设 λ 1 > λ 2 \lambda_1>\lambda_2 λ1>λ2,我们只需要取k1=1,k2=0即可使目标函数取得极大值。
也就是说,variance最大的方向,就是在特征值最大的特征向量方向。

结论2:
我们的目标是:
在这里插入图片描述
由于v就是特征向量本身,因此有:
在这里插入图片描述

5. SVD

下图展示了向量分解的过程:
在这里插入图片描述
SVD的作用就是完成向量向标准正交基的分解。

5.1 向量分解

下图为向量分解的要素图
在这里插入图片描述
(1)要有投影方向,如上图为v1和v2两个正交的单位向量,也可以是任意两个不共线的向量
(2)投影长度,如图中的 s a 1 s_{a1} sa1 s a 2 s_{a2} sa2
(3)分解后的向量,如图中的 p a 1 = s a 1 ⋅ v 1 p_{a1}=s_{a1} \cdot v1 pa1=sa1v1 p a 2 = s a 2 ⋅ v 2 p_{a2}=s_{a2} \cdot v2 pa2=sa2v2

结论:
任何一个向量分解过程都可以通过确定v1,v2, s a 1 s_{a1} sa1 s a 2 s_{a2} sa2唯一确定。

5.2 SVD引出

上面讲了一个向量的分解过程,SVD就是对一组向量进行分解。
依然先看一个向量分解:
在这里插入图片描述
这里的基向量页是表达在固定坐标系下。
由于向量内积就是投影过程,有:
在这里插入图片描述
写成矩阵形式:
在这里插入图片描述
考虑更多的点,而不仅仅是一个:
在这里插入图片描述
效果就如下图所示:
在这里插入图片描述
然后考虑更高的维度,而不仅仅是2维:
在这里插入图片描述
总结成下图:
在这里插入图片描述
将上式移项:
在这里插入图片描述
到这里我们可以看到SVD分解的后半部分,下面考虑前半部分如下:
在这里插入图片描述
我们期望看到:
在这里插入图片描述
仔细分析S矩阵有:
在这里插入图片描述
下面考虑将S矩阵的列向量进行标准化,首先通过一个例子看看进行列标准化的过程。
考虑一个矩阵M
在这里插入图片描述
首先对第一列进行操作,寻找一个变换矩阵:
在这里插入图片描述
需要的矩阵如下:
在这里插入图片描述
再考虑对第二列进行操作:
在这里插入图片描述
下面,我们要寻找一个类似的操作,对S矩阵进行标准化。要计算出如下的除数:
在这里插入图片描述
然后对S进行分解:
在这里插入图片描述
最终得到SVD分解:
在这里插入图片描述
一些解释:
首先再看一下S:
在这里插入图片描述
我们为什么要费力操作S? σ \sigma σ的含义又是什么。可以看到 σ \sigma σ是所有点在同一个轴上的投影长度的平方和,这意味着,如果 σ \sigma σ大,那么所有点离该轴近,如果 σ \sigma σ小意味着,点离该轴远,如下图,如果 σ 1 > σ 2 \sigma_1 > \sigma_2 σ1>σ2,意味着点离v1轴比离v2轴要近。
在这里插入图片描述

6. 应用

6.1 主成分分析

对一组数据进行SVD分解:
在这里插入图片描述我们想留哪一列的投影结果,就将其他列划掉,重新计算A‘矩阵就行:
在这里插入图片描述

6.2 求解线性方程组

6.2.1 一般形式

6.2.1.1 伪逆方法

在这里插入图片描述

6.2.1.2 SVD方法

在这里插入图片描述

6.2.2 有约束,且b=0形式

在slam问题中,有非常多类似的问题,比如通过8点法求解本质矩阵,求解三角化等等,都是通过SVD进行求解。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值