[机器学习] 奇异值分解(SVD)
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}[w1w2⋯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=1wiTwi=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[v1v2⋯vn]=[u1u2⋯un⋯um]⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡σ100⋮0⋮00σ20⋮0⋮000σ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σ1Av2=u2σ2Av3=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×1Am×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)相关推荐
- 【机器学习】这次终于彻底理解了奇异值分解(SVD)原理及应用
奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,有相当多的应用与奇异值都可以扯上关系,它不光可以用于降维算法中的特征分解,比如做f ...
- 机器学习-Sklearn(第三版)Day4 主成分分析PCA与奇异值分解SVD
目录 一.简介 什么是维度 sklearn中的降维算法 二.PCA与SVD 0.如何实现降维算法 思考:PCA和特征选择技术都是特征工程的一部分,它们有什么不同? 1.重要参数n_components ...
- python奇异值分解_python机器学习(七) 奇异值分解-SVD
降维(Dimensionality Reduction) 是机器学习中的一种重要的特征处理手段,它可以减少计算过程中考虑到的随机变量(即特征)的个数,其被广泛应用于各种机器学习问题中,用于消除噪声.对 ...
- 一文读懂机器学习中奇异值分解SVD
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 目录: 矩阵分解 1.1 矩阵分解作用 1.2 矩阵分解的方法一文 ...
- 奇异值的物理意义是什么?强大的矩阵奇异值分解(SVD)及其应用
作者:郑宁 链接:https://www.zhihu.com/question/22237507/answer/53804902 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
- 矩阵论基础知识4——强大的矩阵奇异值分解(SVD)及其应用
强大的矩阵奇异值分解(SVD)及其应用 版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如 ...
- 关于奇异值以及奇异值分解SVD的思考
前言: SVD作为一个很基本的算法,在很多机器学习算法中都有它的身影,特别是在现在的大数据时代,由于SVD可以实现并行化,因此更是大展身手.SVD的原理不难,只要有基本的线性代数知识就可以理解,实现也 ...
- 主成分分析(PCA)与矩阵奇异值分解(SVD)
1 矩阵奇异值分解SVD 1.1 矩阵奇异值分解的数学原理 在关于SVD(Singular Value Decomposition)的讲解中将涉及稍微多一点的数学推导. 定义:设 A A A是秩为 r ...
- 矩阵分解之: 特征值分解(EVD)、奇异值分解(SVD)、SVD++
目录: 1.矩阵分解 1.1 矩阵分解的产生原因 1.2 矩阵分解作用 1.3 矩阵分解的方法 1.4 推荐学习的经典矩阵分解算法 2. 特征值分解(EVD) 3. 奇异值分解(SVD) 4. SVD ...
- 矩阵特征值分解与奇异值分解(SVD)含义解析及应用
原文链接:http://blog.csdn.net/xiahouzuoxin/article/details/41118351 特征值与特征向量的几何意义 矩阵的乘法是什么,别只告诉我只是" ...
最新文章
- python下载地址 windows
- Runtime底层原理--Runtime简介、函数注释
- CentOS 安装过程中格式化 SATA 硬盘巨慢的问题
- Vue + Spring Boot 项目实战(七):前端路由与登录拦截器
- 2005.2.21 至 2005.8.8
- [BZOJ3696][FJSC2014]化合物(异或规则下的母函数)
- arm b bl 地址无关码_海边同居有甜有虐,又一部BL日剧来了
- GARFIELD@09-20-2004
- 两个矩阵是否相交的算法_个性化推荐召回算法——Personal Rank
- 三端食堂售饭管理系统
- 单片机 STM32 HAL IO扩展 74HC595 例子代码
- android 互传文件,堪比隔空投送!iPhone和安卓、PC互传文件的3种方法,建议收藏...
- 【Java编程】模拟帐户存取和转账操作
- 2018携程实习生大数据分析笔试练习题
- 2018国赛数学建模B题两道工序代码
- 选择合适的 Go 字符串拼接方式
- 计算机直接切换到桌面,屏幕如何快速切换桌面
- MPC模型预测控制及在Matlab中实现函数定义
- 他们战胜了韩国的李师师
- transformer在视觉检测的应用
热门文章
- Python实现微信机器人斗图
- WhaleHiking的“三山五岳”第一站:泰山
- ICS-43432MIC MEMS DIGITAL I2S OMNI -26DB
- iphone换android系统更新不了,小米官方解答MIUI 9系统升级常见问题:iPhone可以升级吗?...
- 关于全面测试xDSL线路的几种方法
- 因子去极值和标准化_Barra_python_数据分析_12
- SharePoint 轻量化应用之HR招聘系统之入职通知界面构建
- Java后端实习生面经总结
- ae合成设置快捷键_AE的那些实用操作小技巧!(基础篇)
- 为什么别的程序员天天吃鸡,你却顿顿吃土?