Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >SVD奇异值分解 中特征值与奇异值的数学理解与意义

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

作者头像
大鹅
发布于 2021-06-16 09:12:24
发布于 2021-06-16 09:12:24
2.2K0
举报

前言

之前的博客中SVD推荐算法写得不是很严谨,

\hat{r}_{ui}=\sum_{f=1}^{F}{P_{uf}Q_{fi}}+\mu+b_u+b_i

更像是矩阵分解多一点,没有涉及到SVD的数学意义,这篇博客大概会写一些数学SVD的数学理解,以及SVD在PCA和推荐算法上面的应用。

特征值与特征向量

如果一个向量

v

方阵

A

的特征向量,将可以表示成下面的形式:

Av=\lambda v

此时

λ

就被称为特征向量

v

对应的特征值,并且一个矩阵的一组特征向量是一组正交向量。特征值分解是将一个矩阵分解成下面的形式:

A=Q\Sigma Q^{-1}

其中

Q

是这个矩阵

A

的特征向量组成的矩阵,

Σ

是一个对角阵,每一个对角线上的元素就是一个特征值。可以简单理解为提取矩阵最重要的特征,

Σ

为线性变换中矩阵变换的主要方向(可以参考链接1)。

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

奇异值分解

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

A=U\Sigma V^T

假设

A

是一个N * M的矩阵,那么得到的

U

是一个N * N的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),

Σ

是一个N * M的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),

V^T

是一个N * N的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量)

那么,我们有

AA^T=U\Sigma V^TV\Sigma^TU^T=U(\Sigma \Sigma^T)U^T \\A^TA=V\Sigma^T U^TU\Sigma V^T=V(\Sigma^T \Sigma) V^T

这也就是说,

U

的列向量(左奇异向量),是

AA^T

的特征向量;同时,

V

的列向量(右奇异向量),是

A^TA

的特征向量;另一方面,

M

的奇异值(

Σ

的非零对角元素)则是

AA^T

或者

A^TA

的非零特征值的平方根。

将奇异值和特征值是对应起来:我们将一个矩阵

A^T* A

,将会得到一个方阵,我们用这个方阵求特征值可以得到:

(A^TA)v_i=\lambda_iv_i

这里的向量

v_i

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

\sigma_i=\sqrt \lambda_i \ \ ,\ \ u_i=\frac{1}{\sigma_i}Av_i

这里的

σ_i

就是上面说的奇异值,

u_i

就是上面说的左奇异向量。奇异值

σ_i

跟特征值类似,在矩阵

Σ

中也是从大到小排列,而且

σ_i

的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r大的奇异值来近似描述矩阵。

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

A_{m*n}\approx U_{m*r}\Sigma_{r*r}V^T_{r*n}

奇异值分解和推荐算法

在之前的博客中的SVD推荐本质上是model-based,跟传统数学意义的SVD没有太大关系,只不过借鉴了SVD分解

R=U*S*V

这个形式,通过最优化方法进行模型拟合,求得

R=U*V

我们可以拿这个维度减少的U作为user特征,V作为item特征,之后用降维后的特征去计算相似度。

具体例子可以看参考链接2

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

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

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

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

将上式右乘

V

可以得到

A_{m*n}V_{n*r}\approx U_{m*r}\Sigma_{r*r}V^T_{r*n}V_{r*n}=U_{m*r}\Sigma_{r*r}=\hat A_{m*r}

即可以表示为

A_{m*n}V_{n*r}=\hat 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/
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/04/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
奇异值分解(SVD)原理与在降维中的应用
地址:https://www.cnblogs.com/pinard/p/6251584.html
机器学习算法工程师
2018/07/26
2K0
奇异值分解(SVD)原理与在降维中的应用
奇异值分解(SVD)原理与在降维中的应用
    奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石。本文就对SVD的原理做一个总结,并讨论在在PCA降维算法中是如何运用运用SVD的。
刘建平Pinard
2018/08/14
6710
奇异值分解(SVD)原理与在降维中的应用
机器学习算法之PCA算法
在机器学习中降维是我们经常需要用到的算法,在降维的众多方法中PCA无疑是最经典的机器学习算法之一,最近准备撸一个人脸识别算法,也会频繁用到PCA,本文就带着大家一起来学习PCA算法。
BBuf
2019/12/04
1.2K0
机器学习算法之PCA算法
机器学习中的数学(6)-强大的矩阵奇异值分解(SVD)及其应用
上一次写了关于PCA与LDA的文章,PCA的实现一般有两种,一种是用特征值分解去实现的,一种是用奇异值分解去实现的。在上篇文章中便是基于特征值分解的一种解释。 特征值和奇异值在大部分人的印象中,往往是停留在纯粹的数学计算中。而且线性代数或者矩阵论里面,也很少讲任何跟特征值与奇异值有关的应用背景。奇异值分解是一个有着很明显的物理意义的一种方法,它可以将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,这些小矩阵描述的是矩阵的重要的特性。就像是描述一个人一样,给别人描述说这个人长得浓眉大眼,方脸,络腮胡,
机器学习AI算法工程
2018/03/12
1.4K0
机器学习中的数学(6)-强大的矩阵奇异值分解(SVD)及其应用
SVD奇异值分解的数学涵义及其应用实例
SVD(Singular Value Decomposition, 奇异值分解)是线性代数中既优雅又强大的工具, 它揭示了矩阵最本质的变换. 使用SVD对矩阵进行分解, 能得到代表矩阵最本质变化的矩阵元素. 这就好比一个合数能表示为若干质数之积, 分解合数能得到表示该合数的质因数; 复杂周期信号可以表示为若干简单的正弦波和余弦波之和, 使用傅里叶变换能得到表示该信号的简单波; 复杂矩阵所代表的线性变换可由若干个简单矩阵所代表的线性变换组合起来, 使用SVD能找到这些简单矩阵. 本文由以下章节, 对SVD进行阐述:
SIGAI学习与实践平台
2019/05/29
1.3K0
如何让奇异值分解(SVD)变得不“奇异”?
在之前的一篇文章:划重点!通俗解释协方差与相关系数,红色石头为大家通俗化地讲解了协方差是如何定义的,以及如何直观理解协方差,并且比较了协方差与相关系数的关系。
红色石头
2022/01/12
6110
如何让奇异值分解(SVD)变得不“奇异”?
机器学习(29)之奇异值分解SVD原理与应用详解
关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 前言 奇异值分解(Singular Value Decomposition,简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域,是很多机器学习算法的基石。本文就对SVD的原理做一个总结,并讨论在在PCA降维算法中是如何运用运用SVD的。 特征值与特征向量 首先回顾下特征值和特征向量的定义如下: Ax=λx 其中A是
昱良
2018/04/04
2K0
机器学习(29)之奇异值分解SVD原理与应用详解
通俗易懂的讲解奇异值分解(SVD)和主成分分析(PCA)
奇异值分解(The Singular Value Decomposition,SVD)
deephub
2020/06/17
2.4K0
数据降维处理:PCA之奇异值分解(SVD)介绍
《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来! 01 — 回顾 昨天实践了一个数据降维的例子,用到了5个二维的样本点,通过特征值分解法,将样本降维为1个维度,这个过程又称为数据压缩,关于这篇文章,请参考: 数据降维处理:PCA之特征值分解法例子解析 今天来进一步谈谈数据降维,以实现主成分提取的另一种应用非常广泛的方法:奇异值分解法,它和特征值分解法有些相似,但是从某些角度讲,比特征值分解法更强
double
2018/04/02
1.8K0
数据降维处理:PCA之奇异值分解(SVD)介绍
深度学习笔记之奇异值分解及几何意义
SVD实际上是数学专业内容,但它现在已经渗入到不同的领域中。SVD的过程不是很好理解,因为它不够直观,但它对矩阵分解的效果却非常好。比如,Netflix(一个提供在线电影租赁的公司)曾经就悬赏100万美金,如果谁能提高它的电影推荐系统评分预测准确率提高10%的话。令人惊讶的是,这个目标充满了挑战,来自世界各地的团队运用了各种不同的技术。最终的获胜队伍"BellKor's Pragmatic Chaos"采用的核心算法就是基于SVD。
Jetpropelledsnake21
2020/08/02
1.6K0
【技术分享】奇异值分解
  在了解特征值分解之后,我们知道,矩阵A不一定是方阵。为了得到方阵,可以将矩阵A的转置乘以该矩阵。从而可以得到公式:
腾讯云TI平台
2020/03/25
8740
SVD分解及其应用
根据文章内容总结的摘要
用户1147754
2018/01/02
2.7K0
SVD分解及其应用
【Math for ML】矩阵分解(Matrix Decompositions) (下)
Singular Value Decomposition (SVD)是线性代数中十分重要的矩阵分解方法,被称为“线性代数的基本理论”,因为它不仅可以运用于所有矩阵(不像特征值分解只能用于方阵),而且奇异值总是存在的。
marsggbo
2018/12/28
1K0
奇异值分解SVD
矩阵分解在机器学习领域有着广泛应用,是降维相关算法的基本组成部分。常见的矩阵分解方式有以下两种
生信修炼手册
2021/04/14
9180
数据降维:特征值分解和奇异值分解的实战分析
《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来! 01 — 回顾 这几天推送了关于机器学习数据预处理之降维算法,介绍了通过降维提取数据的主成分的背景,特征值分解法,奇异值分解法的相关原理。 现在我们再回顾下这些问题,首先,提取主成分的必要性,从数字信号的角度分析,主成分时方差较大,称为信号,而噪声是方差较小的;极限讲,如果100个样本点都汇集成一个点,也就是方差为0,那么不就相当于我们手上有1个
double
2018/04/02
1.6K0
数据降维:特征值分解和奇异值分解的实战分析
奇异值分解(SVD)
奇异值分解(Singular Value Decomposition,简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石。
AngelNH
2020/07/15
9350
奇异值分解(SVD)
【转载】奇异值分解(SVD)计算过程示例
奇异值分解是线性代数中一种重要的矩阵分解方法,这篇文章通过一个具体的例子来说明如何对一个矩阵A进行奇异值分解。
marsggbo
2018/12/28
3K0
矩阵的奇异值分解
设A\in C^{m\times n},则矩阵A^{H}A的n个特征值\lambda _i的算术平方根\delta _{i}=\sqrt {\lambda _i}叫做A的奇异值(Singular Value )。
卡尔曼和玻尔兹曼谁曼
2019/01/22
1K0
奇异值分解(Singular Value Decomposition,SVD)
Am×n=UΣVTUUT=ImVVT=InΣ=diag(σ1,σ2,...,σp)σ1≥σ2≥...≥σp≥0p=min⁡(m,n)A_{m \times n} = U \Sigma V^T\\ UU^T=I_m\\ VV^T=I_n\\ \Sigma=diag(\sigma_1,\sigma_2,...,\sigma_p) \\ \sigma_1\ge \sigma_2 \ge...\ge\sigma_p \ge0\\ p=\min(m,n)Am×n​=UΣVTUUT=Im​VVT=In​Σ=diag(σ1​,σ2​,...,σp​)σ1​≥σ2​≥...≥σp​≥0p=min(m,n)
Michael阿明
2020/07/13
1.4K0
【陆勤践行】奇异值分解 - 最清晰易懂的svd 科普
在这篇文章中,我们以几何的视角去观察矩阵奇异值分解的过程,并且列举一些奇异值分解的应用。 介绍 矩阵奇异值分解是本科数学课程中的必学部分,但往往被大家忽略。这个分解除了很直观,更重要的是非常具有实用价值。譬如,Netflix(在线电影租赁公司)对能够提高其电影推荐系统准确率10%的人提供100万美元的丰厚奖金。令人惊奇的是,这个看似简单的问题却非常具有挑战性,相关的团队正在使用非常复杂的技术解决之,而这些技术的本质都是奇异值分解。 奇异值分解简单来讲,就是以一种方便快捷的方式将我们感兴趣的矩阵分解成更简单且
陆勤_数据人网
2018/02/26
1.2K0
【陆勤践行】奇异值分解 - 最清晰易懂的svd 科普
推荐阅读
相关推荐
奇异值分解(SVD)原理与在降维中的应用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文