1、特征值分解

特征值和特征向量的定义如下:
Ax=λxAx=\lambda x Ax=λx
其中AAA是一个n×nn\times nn×n矩阵,xxx是一个nnn维向量(n×1n\times 1n×1),而λ\lambdaλ是一个数值。

则λ\lambdaλ是矩阵A的一个特征值,而x是矩阵A的特征值λ\lambdaλ所对应的特征向量。

如果求出了矩阵A的n个特征值,λ1≤λ2≤...λn\lambda_1≤\lambda_2≤...\lambda_nλ1​≤λ2​≤...λn​,以及这n个特征值所对应的特征向量w1,w2,...,wnw_1,w_2,...,w_nw1​,w2​,...,wn​。

则矩阵A可用下式的特征分解表示:
A=W∑W−1A=W\sum W^{-1} A=W∑W−1
其中,W是n个特征向量组成的n×nn\times nn×n矩阵[w1w2⋯wn]\begin{bmatrix}w_1&w_2&\cdots& w_n\end{bmatrix}[w1​​w2​​⋯​wn​​](向量是竖的列向量),而∑\sum∑是以n个特征向量所对应的特征值为主对角线的值的n×nn\times nn×n矩阵。

一般我们会把W的这n个特征向量标准化,即满足∣∣wi∣∣2=1||w_i||_2=1∣∣wi​∣∣2​=1,或者wiTwi=1w_i^Tw_i=1wiT​wi​=1,若AAA是个实对称矩阵,此时W的n个特征向量为标准正交基(实对称矩阵不同特征值对应的特征向量正交),又满足WTW=IW^TW=IWTW=I,即WT=W−1W^T=W^{-1}WT=W−1,也就是说W为酉矩阵(矩阵元素全为实数时也称作正交矩阵)。注:酉矩阵一般指幺正矩阵(矩阵元素可以是复数),即厄米共轭矩阵等于逆矩阵。对于实矩阵(矩阵元素全为实数),厄米共轭矩阵就是转置矩阵。

这样我们的特征分解表达式可以写成:
A=W∑WTA=W\sum W^T A=W∑WT
注意到要进行特征分解,矩阵A必须为方阵。

当矩阵A不是方阵时,再想对A进行矩阵分解就要用到奇异值分解(SVD)

2、奇异值分解

假设矩阵A是m×nm\times nm×n矩阵,定义矩阵A的奇异值分解(SVD)为:
Am×n=Um×m∑Vn×nTA_{m\times n}=U_{m \times m}\sum V_{n\times n}^T Am×n​=Um×m​∑Vn×nT​
∑:m×n\sum:m\times n∑:m×n
U、V都是酉矩阵(正交矩阵),即满足UTU=I,VTV=IU^TU=I,V^TV=IUTU=I,VTV=I,即UT=U−1,VT=V−1U^T=U^{-1},V^T=V^{-1}UT=U−1,VT=V−1

(1)求矩阵 VVV:
ATA^TAT:n×mn\times mn×m
AAA:m×nm\times nm×n
V:n×nV:n\times nV:n×n

注意到,ATAA^TAATA是n×nn\times nn×n的方阵,也就是说可以对其进行特征值分解,由它的所有特征向量viv_ivi​可以组成一个n×nn\times nn×n的矩阵,这个矩阵就是矩阵VVV,称作右奇异矩阵,VVV中的每一个特征向量称作矩阵AAA的右奇异向量。

(2)求矩阵UUU:
AAA:m×nm\times nm×n
ATA^TAT:n×mn\times mn×m
U:m×mU:m\times mU:m×m

注意到,AATAA^TAAT是m×mm\times mm×m的方阵,也就是说可以对其进行特征值分解,由它的所有特征向量uiu_iui​可以组成一个m×mm\times mm×m的矩阵,这个矩阵就是矩阵UUU,称作左奇异矩阵,UUU中的每一个特征向量称作矩阵AAA的左奇异向量。

(3)求奇异值矩阵∑\sum∑:
A=U∑VTAV=U∑VTVAV=U∑A=U\sum V^T\\ AV=U\sum V^TV\\ AV=U\sum A=U∑VTAV=U∑VTVAV=U∑
A[v1v2⋯vn]=[u1u2⋯un⋯um][σ100⋯00σ20⋯000σ3⋯0⋮⋮⋮⋱⋮000⋯σn⋮⋮⋮⋯⋮000⋯0]m×nA\begin{bmatrix}v_1&v_2&\cdots&v_n\end{bmatrix}=\begin{bmatrix}u_1&u_2&\cdots&u_n&\cdots&u_m\end{bmatrix} \begin{bmatrix} \sigma_1&0&0&\cdots&0\\ 0&\sigma_2&0&\cdots&0\\ 0&0&\sigma_3&\cdots&0\\ \vdots&\vdots&\vdots&\ddots&\vdots\\ 0&0&0&\cdots&\sigma_n\\ \vdots&\vdots&\vdots&\cdots&\vdots\\ 0&0&0&\cdots&0 \end{bmatrix}_{m\times n} A[v1​​v2​​⋯​vn​​]=[u1​​u2​​⋯​un​​⋯​um​​]⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡​σ1​00⋮0⋮0​0σ2​0⋮0⋮0​00σ3​⋮0⋮0​⋯⋯⋯⋱⋯⋯⋯​000⋮σn​⋮0​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤​m×n​
由于奇异值矩阵只在对角线处有值,其他位置均是0,而 ∑\sum∑ 并不是标准的方阵,它的对角线如上式内所表示,只在 n×nn\times nn×n 处有值,并非从左上角一路划到右下角。

展开上面的矩阵乘法:
Av1=u1σ1Av2=u2σ2Av3=u3σ3...Avn=unσnAv_1=u_1\sigma_1\\ Av_2=u_2\sigma_2\\ Av_3=u_3\sigma_3\\ ...\\ Av_n=u_n\sigma_n Av1​=u1​σ1​Av2​=u2​σ2​Av3​=u3​σ3​...Avn​=un​σn​
可以看出,各奇异值的计算方式:
σi=Am×n(vi)n×1(ui)m×1\sigma_i=\frac{A_{m\times n}(v_i)_{n\times 1}}{(u_i)_{m\times 1}} σi​=(ui​)m×1​Am×n​(vi​)n×1​​
上式中,分子的结果是一个m×1m\times 1m×1的向量,分母是一个m×1m\times 1m×1的向量,但向量之间是没有除法的,除非两个向量共线(即平行),结果是两个共线向量的倍数关系。在SVD中,上式实际上就是求两个共线向量的倍数关系。

另一方面,特征值矩阵等于奇异值矩阵的平方,也就是说,特征值和奇异值满足如下关系:
σi=λi\sigma _i=\sqrt{\lambda_i} σi​=λi​​
即,可以通过求出ATAA^TAATA(n×nn\times nn×n的方阵)的特征值再取平方根来求奇异值。

3、SVD计算举例




4、SVD的性质

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

也就是说,我们也可以用最大的 kkk 个奇异值和它们对应的左右奇异向量来近似描述矩阵。

由于这个重要的性质,SVD可以用于PCA降维,来做数据压缩和去噪。也可以用于推荐算法,将用户和喜好对应的矩阵做特征分解,进而得到隐含的用户需求来做推荐。同时也可以用于NLP中的算法,比如潜在语义索引(LSI)。

实际上SVD在PCA降维上只是使用了 VVV 矩阵(右奇异矩阵),其原因就是 UUU 矩阵(左奇异矩阵)是进行行压缩,而 VVV 矩阵(右奇异矩阵)是对列进行压缩,而PCA降维只需要减少特征从而进行降维,所以PCA只用到了SVD的 VVV 矩阵(右奇异矩阵)。

[机器学习] 奇异值分解(SVD)相关推荐

  1. 【机器学习】这次终于彻底理解了奇异值分解(SVD)原理及应用

    奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,有相当多的应用与奇异值都可以扯上关系,它不光可以用于降维算法中的特征分解,比如做f ...

  2. 机器学习-Sklearn(第三版)Day4 主成分分析PCA与奇异值分解SVD

    目录 一.简介 什么是维度 sklearn中的降维算法 二.PCA与SVD 0.如何实现降维算法 思考:PCA和特征选择技术都是特征工程的一部分,它们有什么不同? 1.重要参数n_components ...

  3. python奇异值分解_python机器学习(七) 奇异值分解-SVD

    降维(Dimensionality Reduction) 是机器学习中的一种重要的特征处理手段,它可以减少计算过程中考虑到的随机变量(即特征)的个数,其被广泛应用于各种机器学习问题中,用于消除噪声.对 ...

  4. 一文读懂机器学习中奇异值分解SVD

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 目录: 矩阵分解 1.1 矩阵分解作用 1.2 矩阵分解的方法一文 ...

  5. 奇异值的物理意义是什么?强大的矩阵奇异值分解(SVD)及其应用

    作者:郑宁 链接:https://www.zhihu.com/question/22237507/answer/53804902 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  6. 矩阵论基础知识4——强大的矩阵奇异值分解(SVD)及其应用

    强大的矩阵奇异值分解(SVD)及其应用 版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如 ...

  7. 关于奇异值以及奇异值分解SVD的思考

    前言: SVD作为一个很基本的算法,在很多机器学习算法中都有它的身影,特别是在现在的大数据时代,由于SVD可以实现并行化,因此更是大展身手.SVD的原理不难,只要有基本的线性代数知识就可以理解,实现也 ...

  8. 主成分分析(PCA)与矩阵奇异值分解(SVD)

    1 矩阵奇异值分解SVD 1.1 矩阵奇异值分解的数学原理 在关于SVD(Singular Value Decomposition)的讲解中将涉及稍微多一点的数学推导. 定义:设 A A A是秩为 r ...

  9. 矩阵分解之: 特征值分解(EVD)、奇异值分解(SVD)、SVD++

    目录: 1.矩阵分解 1.1 矩阵分解的产生原因 1.2 矩阵分解作用 1.3 矩阵分解的方法 1.4 推荐学习的经典矩阵分解算法 2. 特征值分解(EVD) 3. 奇异值分解(SVD) 4. SVD ...

  10. 矩阵特征值分解与奇异值分解(SVD)含义解析及应用

    原文链接:http://blog.csdn.net/xiahouzuoxin/article/details/41118351 特征值与特征向量的几何意义 矩阵的乘法是什么,别只告诉我只是" ...

最新文章

  1. python下载地址 windows
  2. Runtime底层原理--Runtime简介、函数注释
  3. CentOS 安装过程中格式化 SATA 硬盘巨慢的问题
  4. Vue + Spring Boot 项目实战(七):前端路由与登录拦截器
  5. 2005.2.21 至 2005.8.8
  6. [BZOJ3696][FJSC2014]化合物(异或规则下的母函数)
  7. arm b bl 地址无关码_海边同居有甜有虐,又一部BL日剧来了
  8. GARFIELD@09-20-2004
  9. 两个矩阵是否相交的算法_个性化推荐召回算法——Personal Rank
  10. 三端食堂售饭管理系统
  11. 单片机 STM32 HAL IO扩展 74HC595 例子代码
  12. android 互传文件,堪比隔空投送!iPhone和安卓、PC互传文件的3种方法,建议收藏...
  13. 【Java编程】模拟帐户存取和转账操作
  14. 2018携程实习生大数据分析笔试练习题
  15. 2018国赛数学建模B题两道工序代码
  16. 选择合适的 Go 字符串拼接方式
  17. 计算机直接切换到桌面,屏幕如何快速切换桌面
  18. MPC模型预测控制及在Matlab中实现函数定义
  19. 他们战胜了韩国的李师师
  20. transformer在视觉检测的应用

热门文章

  1. Python实现微信机器人斗图
  2. WhaleHiking的“三山五岳”第一站:泰山
  3. ICS-43432MIC MEMS DIGITAL I2S OMNI -26DB
  4. iphone换android系统更新不了,小米官方解答MIUI 9系统升级常见问题:iPhone可以升级吗?...
  5. 关于全面测试xDSL线路的几种方法
  6. 因子去极值和标准化_Barra_python_数据分析_12
  7. SharePoint 轻量化应用之HR招聘系统之入职通知界面构建
  8. Java后端实习生面经总结
  9. ae合成设置快捷键_AE的那些实用操作小技巧!(基础篇)
  10. 为什么别的程序员天天吃鸡,你却顿顿吃土?