svd奇异值分解_传统推荐算法(一)SVD推荐(1)解读奇异值分解
文章目录
- 写在前面
- 1. 从几何变换到奇异值分解
- 2. 代数角度理解奇异值与奇异向量
- 2.1 从正交基映射推导SVD
- 2.2 特征值分解求解奇异值和奇异向量
- 2.2.1 求解过程
- 2.2.2 推论
- 2.3 SVD的另一种形式
- 3. 几何角度理解奇异值与奇异向量
- 3.1 从坐标变换理解
- 3.1.1 从例子到一般
- 3.1.2 两个问题
- 3.2 形变的角度理解奇异值
- 3.1 从坐标变换理解
- 4. 我觉得的最好的奇异值解读
- 5. 特征值分解和奇异值分解区别
- 6. 奇异值分解在PCA中的应用
- 参考文献
写在前面
读完本篇文章后,你应该可以知道:
奇异值分解到底是什么?
奇异值和奇异向量有什么代数意义?
奇异值和奇异向量有什么几何意义?
如何利用特征值分解求奇异值和奇异向量?
奇异值的个数如何确定?
奇异值分解是否唯一?
奇异值分解什么时候和特征值分解相等?
奇异值分解和特征值分解的区别?
1. 从几何变换到奇异值分解
这部分的内容是[1]中部分内容的翻译,这几张图片大家应该见过很多次。
来看一个二维平面坐标系的例子,在由(1,0)T和(0,1)T确定的二维平面坐标系中:
向量(x,y)T左乘M矩阵,将会得到一个新的向量(新的点)。为了更容易理解变换过程,我们主要关注向量(1,1)T和(1,0)T,(0,1)T,(0,0)T围城的矩形的形变过程。
左乘矩阵M的效果在坐标系中的表现如下:
直接从图上看不出什么,我们把原先的坐标系逆时针旋转30度,然后左乘M看看效果:
好像也没什么特殊的,把原先的坐标系逆时针旋转60度看看:
右边的网格几乎快要正交了,也就是说,原先的正交基逆时针旋转60度后,再经过M变换,几乎可以得到一组新的正交基。
实际上,如果我们把坐标轴逆时针旋转58.28度,就会得到如下效果:
从几何上看,旋转后的正交基(1,0)T和(0,1)T,在经过M变换后,得到了另外一组正交基。这其实就是SVD分解的一种解释,即M可以将一组正交基映射到另一组正交基。
记映射后的向量Mv1为u1,Mv2为u2,Mv1的模为σ1,Mv2的模为σ2。
接下来我们就可以推导了:
在v1和v2确定的二维平面中,任意一点x可以表示为:
在《利用SVD进行推荐(1)矩阵相乘的本质》中我们讲过,小括号里的点积就是x在v1和v1坐标轴上的投影值(坐标)。我们对这个平面中任意一点x左乘矩阵M进行变换,来看看结果:
向量点积表示为矩阵乘法就是:
所以变换结果可以进一步推演为:
我们得到了M有关u,v,σ的表达式。将表达式转为矩阵表达形式,即为:
其中U中的每一列向量ui为映射后的一个单位基向量,V中的每一个列向量vj为原先被映射的单位基向量。这里的推导过于简略,下面我们看看更为严格的推导。
2. 代数角度理解奇异值与奇异向量
奇异值分解在代数上表现就是A将一组正交基转化为另一组正交基。我们来看一下具体推导。
2.1 从正交基映射推导SVD
2.1内容主要来自[5],靖王你真帅!
假设找到了这样一组正交基:
而mxn的实矩阵A将其映射为:
我们要使他们两两正交,也就是:
根据假设,有:
在这种情况下,如果取vi为AT的特征向量的话,那么就有:
这样我们就找到了正交基使其映射后还是正交基了。现在我们将映射后的正交基单位化。因为:
也就是:
所以取单位向量为:
由此可得:
从上述公式来看,左奇异向量ui是映射后正交基的单位化形式,奇异值σi就是映射后的正交基的模的大小,而右奇异向量vi就是被映射的正交基。此处也可以看出奇异值一定非负(当然本身的定义就是这样)。
当k < i < m时,对u1,u2,…,uk进行扩展u(k+1),…,um,使得u1,u2,…,um为m维空间中的一组正交基,即:
同样的,对v1,v2,…,vk进行扩展v(k+1),…,vn(这n-k个向量存在于A的零空间中,即Ax=0的解空间的基),使得v1,v2,…,vn为n维空间中的一组正交基,即:
然后我们就可以得到:
从而A的SVD分解为:
根据论文[3]的分析,任意mxn的实矩阵A=UΣVT,都可以看成一种线性转化, 从n维空间到m维空间的转化。n维空间和m维空间分别由V和U的列向量所形成的基向量确定。
2.2 特征值分解求解奇异值和奇异向量
2.2.1 求解过程
对任意mxn实矩阵A的奇异值分解A=
实际上,对于mxn维的实矩阵A,
[4]。显然实对称矩阵的秩就是非零特征值的个数。因此这两个实对称矩阵有k个相同的非零特征值。当i>rank(A)即使有特征值也全是0。
这里的分析还可以解释2.1中对角阵S上的i为什么最多取到k=rank(A),假设可以取到k+1,按照本节中的推导,奇异值
或者说得专业些,
2.2.2 推论
好了我们可以总结下了,对于任意实矩阵A的奇异值分解,它的右奇异向量(V的列向量)是
SVD分解只告诉我们总是存在这样一个分解,并没有说这个分解是唯一的。很显然:特征值次序就可以不一样,显然SVD分解不唯一。但是我们常常把奇异值按照从大到小的顺序排列,这样S就可以由A唯一确定了。[7]和[8]告诉了我们SVD分解什么情况下是唯一的,感兴趣可以看看。
那什么时候SVD分解和特征值分解相等呢? [10]里面给出了一种说法:
2.3 SVD的另一种形式
实矩阵A的奇异值分解
其中k=rank(A),即矩阵A的秩。参照2.2我们知
使用矩阵的分块乘法,得:
后面一项是0,所以可以化为:
如果我们令X为mxk的矩阵,Y为kxn的矩阵:
那么A可以表示为:
我们把它展开为向量的外积形式,这就是SVD的另一种表达形式:
那么向量x左乘矩阵A是什么呢?我们看看:
此时Ax已经表示成了
3. 几何角度理解奇异值与奇异向量
3.1 从坐标变换理解
3.1.1 从例子到一般
我直接复制[9]中的一个例子过来,作者是西电的张剑湖大佬:
矩阵乘法的本质一文中提到过,向量左乘正交矩阵可以达到将向量旋转的效果。我们还看了一个2阶非对称方阵的实例,它的奇异值变换就是对向量进行旋转-缩放-旋转的过程。当时并没有讲维度变化这个细节。
我们对更一般的形式进行分析:从奇异值分解的角度出发,
旋转x),然后缩放的同时将维度映射到
旋转)。
3.1.2 两个问题
第一个问题是,为什么不是在
是这样的,拿v1举例吧,它太过特殊,在V坐标系中的投影坐标是(1,0,…,0)T。而Σ不仅把这个n维的进行了扩维,将n维的(1,0,…,0)T变为m维的(1,0,…,0),同时还进行了第一维度上长度为
所以,在投影到
第二个问题是,如果如问题1所述,那为什么投影到
实际上在代数上就是这样没有为什么。从几何角度,我们还是在二维中进行分析吧。假设B点逆时针旋转θ度即为A点,顺时针θ度为C点。
发现了吧,当v1乘以对角阵S维度扩展到m时,此时它的坐标是有一个默认的坐标系的,就如下图中的x,y坐标系。而U和
我们可以发现,对于x,y坐标系中的向量OB(
3.2 形变的角度理解奇异值
在[2]中,马同学从翻绳游戏开始,对奇异值进行了生动形象的分析,[6]中7.4节也有形变的分析,还有相关例题。感兴趣的可以看一看。
4. 我觉得的最好的奇异值解读
在知乎问题"奇异值的物理意义是什么?"下,看到一位大牛对奇异值的解读[12],个人认为是对奇异值的一种最好的解读。感谢知乎用户“老鸡蛋”。
5. 特征值分解和奇异值分解区别
- 适用条件 特征值分解必须是可对角化矩阵(所以必须是方阵。n阶方阵可对角化的定义是相似于一个对角矩阵,充要条件是A有n个线性无关的特征向量[11]),奇异值分解则适用于任意矩阵。
- 特征值/奇异值个数 特征值个数与矩阵的秩没有必然关系,n阶实对称矩阵的非零特征值个数等于矩阵的秩;非零奇异值个数等于矩阵的秩。
- 几何意义 关于几何意义之前讲的比较多,内容较多本文就不再赘述。[10]中对于奇异值分解的几何意义给出了一个很直观的讲法:
6. 奇异值分解在PCA中的应用
在"利用SVD进行推荐(2)特征值与特征向量的直观理解"中我们讲过,对于样本A,PCA的计算过程就是计算协方差矩阵
我们发现SVD分解
[13]中Pinard大神说,有些SVD分解算法可以不用求
参考文献
[1] http://www.ams.org/publicoutreach/feature-column/fcarc-svd
[2] https://www.matongxue.com/madocs/306.html
[3] http://www-users.math.umn.edu/~lerman/math5467/svd.pdf
[4] 张绍飞. 矩阵论教程.第2版[M]. 2012.
[5]https://blog.csdn.net/zhongkejingwang/article/details/43053513
[6] Lay D , Lay. 线性代数及其应用[M]. 机械工业出版社, 2017.
[7] http://rakaposhi.eas.asu.edu/s10-cse494-mailarchive/msg00030.html
[8] https://math.stackexchange.com/questions/644327/how-unique-are-u-and-v-in-the-singular-value-decomposition
[9] https://wenku.baidu.com/view/389fabcebceb19e8b8f6ba97.html
[10] https://www.zhihu.com/question/49959130
[11] 申亚男, 张晓丹, 李为东. 线性代数.第2版[M]. 机械工业出版社, 2015.
[12] https://www.zhihu.com/question/22237507
[13] https://www.cnblogs.com/pinard/p/6251584.html
更多精彩内容请移步公众号:推荐算法工程师
svd奇异值分解_传统推荐算法(一)SVD推荐(1)解读奇异值分解相关推荐
- 使用spark mllib中协同过滤推荐算法ALS建立推荐模型
使用spark mllib中协同过滤推荐算法ALS建立推荐模型 package com.yyds.tags.ml.rs.rddimport org.apache.spark.mllib.evaluat ...
- 推荐算法之SVD算法
目录 特征值与奇异值 1)特征值 2)奇异值 推荐系统中的SVD算法 SVD算法优缺点 通过SVD对数据的处理,我们可以使用小得多的数据集来表示原始数据集,这样做实际上是去除了噪声和冗余信息,以此达到 ...
- 矩阵点乘和叉乘的区别_矩阵点乘推荐算法预测图书推荐
推荐系统 GreedyAIAcademy/Machine-Learninggithub.com 推荐系统,顾名思义,就是用于根据用户的喜好,进行对象的推荐 当然,我们这里说的对象不是来预测你会喜欢什 ...
- 基于神经网络的推荐算法,协同过滤推荐算法python
大数据运维的主要工作内容是什么? . 大数据相关工作岗位很多,有大数据分析师.大数据挖掘算法工程师.大数据研发工程师.数据产品经理.大数据可视化工程师.大数据爬虫工程师.大数据运营专员.大数据架构师. ...
- 岗位推荐 | 腾讯音乐娱乐招聘推荐算法工程师、推荐后台工程师
PaperWeekly 致力于推荐最棒的工作机会,精准地为其找到最佳求职者,做连接优质企业和优质人才的桥梁. 如果你需要我们来帮助你推广实习机会或全职岗位,请添加微信号「pwbot02」. 腾讯音乐娱 ...
- 推荐算法_CIKM-2019-AnalytiCup 冠军源码解读_2
最近在为机器学习结合推荐算法的优化方法和数据来源想办法.抱着学习的态度继续解读19-AnalytiCup的冠军源码. 第一部分itemcf解读的连接:https://www.cnblogs.com/m ...
- Vue.js+Mysq+java+springboot+商品推荐算法实现商品推荐网站+商品管理系统后台
面对海量的商品信息如何实现针对不同用户维度开展个性化商品推荐,实现用户线上选购商品,下订单,支付,物流配送等?本次毕设程序基于前后端分离开发模式,搭建系统网络商品推荐系统前台与系统后台商品管理系统,通 ...
- 基于java与springboot结合商品推荐算法实现商品推荐网站+商品管理系统后台,mysql,vue
面对海量的商品信息如何实现针对不同用户维度开展个性化商品推荐,实现用户线上选购商品,下订单,支付,物流配送等?本次毕设程序基于前后端分离开发模式,搭建系统网络商品推荐系统前台与系统后台商品管理系统,通 ...
- mahout 推荐算法 java_Mahout之推荐算法基本实例
Mahout中主要核心的三大算法为推荐,聚类及分类算法,今天就最基本的推荐算法做总结,推荐中常用的两个推荐算法是"user_based"和"item_based" ...
最新文章
- JAVA线程池ScheduledExecutorService周期性地执行任务 与单个Thread周期性执行任务的异常处理...
- linux jdk免安装配置,生产环境免安装jdk的使用方法
- python异步io 队列_python 学习笔记九 队列,异步IO
- 王道计算机网络 传输层整理 超详细版
- php自动合并,php实现合并数组并去除重复的方法
- 统计天数(洛谷-P1567)
- sdio接口_单片机基础 —— 使用SDMMC接口读写SD卡数据
- ajax传输文件大小有没有限制_巧改文件扩展名,1秒解除微信传输文件大小限制!...
- 项目“”受源代码管理,向源代码管理注册此项目时出错。。
- 【ShoppingWebCrawler】-C#开发的基于Webkit内核开源爬虫蜘蛛引擎
- fv-15php1c 安装图,SQLite - C/C++接口 API(一)
- php实现先序、中序、后序遍历二叉树
- 贪吃蛇游戏设计汇报c语言,贪吃蛇游戏设计报告(C++).doc
- Warning: Stopping rpcbind.service, but it can still be activated by:rpcbind.socket
- 2017年Python从入门到实战教程-徐培成-专题视频课程
- Win10 远程桌面登陆闪退问题处理
- 《达芬奇•科学第一人》麦克•怀特
- 超级授权专业版 SuperSU Pro v2.68 简体中文版
- jquery禁止复制、禁用右键、文本选择功能、复制按键
- Java项目如何查找各种jar包
热门文章
- IP地址、子网掩码、网关、默认网关、DNS的理解
- java中泛型上限,下限应用
- python集合的加减_python 中对list做减法操作
- 金蝶kis专业版公网访问_金蝶KIS云专业版—【账务处理】进阶操作101问
- Linux下导出MySQL为SQL文件_在linux命令下导出导入.sql文件的方法
- distinct返回null报错_C#之集合常用扩展方法与Linq
- signature=5bcdc11c0d509d82e0d44c544cfad97b,江苏省职称计算机考试新职称光盘试卷
- 阴阳师师徒系统不同服务器,阴阳师体服师徒系统未收录改为随机SSR
- php sql取数据生成数组中,php中实现数组生成要执行的sql语句
- 使用物理硬盘_硬盘坏道的几种非专业修复方法介绍