SVD奇异值分解 中特征值与奇异值的数学理解与意义

前言

之前的博客中SVD推荐算法写得不是很严谨, r̂ ui=Ff=1PufQfi+μ+bu+bi r ^ u i = ∑ f = 1 F P u f Q f i + μ + b u + b i 更像是矩阵分解多一点,没有涉及到SVD的数学意义,这篇博客大概会写一些数学SVD的数学理解,以及SVD在PCA和推荐算法上面的应用。

特征值与特征向量

如果一个向量 v v 方阵 A的特征向量,将可以表示成下面的形式:

Av=λv A v = λ v

此时 λ λ 就被称为特征向量v对应的特征值,并且一个矩阵的一组特征向量是一组正交向量。特征值分解是将一个矩阵分解成下面的形式:
A=QΣQ1 A = Q Σ Q − 1

其中 Q Q 是这个矩阵A的特征向量组成的矩阵, Σ Σ 是一个对角阵,每一个对角线上的元素就是一个特征值。可以简单理解为提取矩阵最重要的特征,Σ为线性变换中矩阵变换的主要方向(可以参考链接1)。

缺点也非常明显,就是只适用于方阵,但对于实际情景中我们数据大部分都不是方阵,此时就要引入奇异值分解SVD了。

奇异值分解

奇异值分解(Singular Value Decomposition, SVD)是线性代数中一种重要的矩阵分解,在信号处理、统计学等领域有重要应用。奇异值分解是一个能适用于任意的矩阵的一种分解的方法:

A=UΣVT A = U Σ V T

假设 A A 是一个N * M的矩阵,那么得到的U是一个N * N的方阵(里面的向量是正交的,U里面的向量称为左奇异向量), Σ Σ 是一个N * M的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),VT是一个N * N的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量)

那么,我们有

AAT=UΣVTVΣTUT=U(ΣΣT)UTATA=VΣTUTUΣVT=V(ΣTΣ)VT A A T = U Σ V T V Σ T U T = U ( Σ Σ T ) U T A T A = V Σ T U T U Σ V T = V ( Σ T Σ ) V T

这也就是说, U U 的列向量(左奇异向量),是 AAT 的特征向量;同时, V V 的列向量(右奇异向量),是 ATA A T A 的特征向量;另一方面, M M 的奇异值( Σ Σ 的非零对角元素)则是 AAT 或者 ATA A T A 的非零特征值的平方根。

将奇异值和特征值是对应起来:我们将一个矩阵 ATA A T ∗ A ,将会得到一个方阵,我们用这个方阵求特征值可以得到:

(ATA)vi=λivi ( A T A ) v i = λ i v i

这里的向量 vi v i ,就是我们上面的右奇异向量。此外我们还可以得到:

σi=λi  ,  ui=1σiAvi σ i = λ i     ,     u i = 1 σ i A v i

这里的 σi σ i 就是上面说的奇异值, ui u i 就是上面说的左奇异向量。奇异值 σi σ i 跟特征值类似,在矩阵 Σ Σ 中也是从大到小排列,而且σi的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r大的奇异值来近似描述矩阵。

定义一下部分奇异值分解:r是一个远小于m和n的数

AmnUmrΣrrVTrn A m ∗ n ≈ U m ∗ r Σ r ∗ r V r ∗ n T

奇异值分解和推荐算法

在之前的博客中的SVD推荐本质上是model-based,跟传统数学意义的SVD没有太大关系,只不过借鉴了SVD分解 R=USV R = U ∗ S ∗ V 这个形式,通过最优化方法进行模型拟合,求得 R=UV R = U ∗ V

我们可以拿这个维度减少的U作为user特征,V作为item特征,之后用降维后的特征去计算相似度。
具体例子可以看参考链接2

奇异值与主成分分析(PCA)

PCA的原理可以理解为对原始的空间中顺序地找一组相互正交的坐标轴,第一个轴是使得方差最大的,第二个轴是在与第一个轴正交的平面中使得方差最大的,第三个轴是在与第1、2个轴正交的平面中方差最大的,这样假设在N维空间中,我们可以找到N个这样的坐标轴,我们取前r个去近似这个空间,这样就从一个N维的空间压缩到r维的空间了,但是我们选择的r个坐标轴能够使得空间的压缩使得数据的损失最小。

具体可以参考之前的PCA博客

回到原问题中,奇异值和PCA是怎么扯上关系的呢?

将上式右乘 V V 可以得到

AmnVnrUmrΣrrVrnTVrn=UmrΣrr=A^mr

即可以表示为

AmnVnr= mr A m ∗ n V n ∗ r = A ^ m ∗ r

可以理解为将一个m * n的矩阵A变换成一个m * r的矩阵,这样就会使得本来有n个feature的,变成了有r个feature了(r < n),这r个其实就是对n个feature的一种提炼,我们就把这个称为feature的压缩。SVD得出的奇异向量也是从奇异值由大到小排列的,按PCA的观点来看,就是方差最大的坐标轴就是第一个奇异向量,方差次大的坐标轴就是第二个奇异向量。

可以看出,其实PCA几乎可以说是对SVD的一个包装,如果我们实现了SVD,那也就实现了PCA了,而且更好的地方是,有了SVD,我们就可以得到两个方向的PCA,如果我们对A’A进行特征值的分解,只能得到一个方向的PCA。

参考

  1. http://www.cnblogs.com/leftnoteasy/archive/2011/01/19/svd-and-applications.html
  2. https://yanyiwu.com/work/2012/09/10/SVD-application-in-recsys.html
  3. https://liam0205.me/2017/11/22/SVD-for-Human-Beings/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值