CUR矩阵分解(对比SVD)
CUR矩阵分解
简单回顾一下SVD分解
提到矩阵分解,相信大家最熟悉的一定是SVD分解,但是SVD分解有两个缺点:
- 可解释性较差:对于SVD分解,大家通常的理解应该是,左奇异向量以及右奇异向量分别张成了原始矩阵所在的列空间以及行空间,但是对于原始矩阵而言,并没有较强的可解释性。
- 太过密集:就算原始矩阵是一个稀疏矩阵,该矩阵所分解而成的U、V矩阵仍然是高度密集的,这在某些应用场景下是难以接受的。
与SVD相比,CUR分解的可解释性大大加强了。
CUR矩阵分解
对于一个矩阵 A ,我们能否将它分解为 只包含 A 中的一些行和列的组合呢?
更具体地讲,对于一个秩 k 矩阵 A ,如果我们选择其中 k 列张成矩阵 A 的列空间,选择其中 k 行张成矩阵 A 的行空间,那么我们也应该能够通过组合这些线性映射来恢复原矩阵。
定理: 对于A∈Km×nA\in K^{m\times n}A∈Km×n, rank(A)=krank\left( A \right) = krank(A)=k,并且有 I⊂[m]I\subset \left[ m \right]I⊂[m] , J⊂[n]J\subset \left[ n \right]J⊂[n], ∣I∣=t≥k\left| I \right| = t \geq k∣I∣=t≥k, ∣J∣=s≥k\left| J \right| = s \geq k∣J∣=s≥k, 令C=A(:,J)C = A\left( :,J \right)C=A(:,J), R=A(I,:)R = A\left( I,: \right)R=A(I,:), U=A(I,J)U = A\left(I,J \right)U=A(I,J), 如果rank(U)=rank(A)rank\left( U \right) = rank\left( A \right)rank(U)=rank(A),那么A=CU†RA = CU^{\dagger}RA=CU†R
证明:
- 在rank(U)=rank(A)rank\left( U \right) = rank\left( A \right)rank(U)=rank(A)的约束下,我们能得到rank(C)=rank(R)=rank(A)rank\left( C \right) = rank\left( R \right)= rank\left( A \right)rank(C)=rank(R)=rank(A)。因此,必定存在XXX,使得A=CXA=CXA=CX。
- 假设 PIP_{I}PI 代表根据索引集 III 选择 AAA 中特定行的行选择矩阵,那么,PIA=RP_{I}A=RPIA=R,同样地,PIC=UP_{I}C=UPIC=U,从而有了一下推导:
第一个等价关系的正向过程很明显成立,其逆向过程是由于rank(C)=rank(R)=rank(A)rank\left( C \right) = rank\left( R \right)= rank\left( A \right)rank(C)=rank(R)=rank(A)这个假设前提,在此基础上,PIP_{I}PI 的作用就相当于是消除了 AAA 中那些对其他行有依赖关系的冗余行,所以第一个等价关系的逆向过程成立。 - 根据 R=UXR=UXR=UX,得X=U†RX=U^{\dagger}RX=U†R,结合第一步中的A=CXA=CXA=CX,就得到A=CU†RA=CU^{\dagger}RA=CU†R。
为了更加直观的理解记忆CUR矩阵分解,大家可以看下面这张图。
图中红色代表所选择的列,蓝色代表所选择的行,U就是这些行和列的交叉点,在图中用紫色表示。
从图中我们可以看出,CUR分解就像是找出了一个矩阵的 “骨架” ,这个骨架体现了这个矩阵最主要的信息。
以上就是对CUR分解的简单介绍。
CUR矩阵分解(对比SVD)相关推荐
- 矩阵分解模型——SVD与SVD++
推荐的框架可简单的理解为: 在召回过程中,模型一般使用协同过滤或者深度模型等.协同过滤的方法大致可分为两大类,一类为基于领域的方法,例如User-based CF.Item-based CF,第二类为 ...
- 矩阵分解之: 特征值分解(EVD)、奇异值分解(SVD)、SVD++
目录: 1.矩阵分解 1.1 矩阵分解的产生原因 1.2 矩阵分解作用 1.3 矩阵分解的方法 1.4 推荐学习的经典矩阵分解算法 2. 特征值分解(EVD) 3. 奇异值分解(SVD) 4. SVD ...
- 精简易懂,30 分钟学会 SVD 矩阵分解,很强!
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 SVD(Singular Value Decomposition) ...
- sklearn 相似度矩阵_精简易懂,30 分钟学会 SVD 矩阵分解,很强!
SVD(Singular Value Decomposition)奇异值分解分解是机器学习中最重要的矩阵分解方法. 它能够将一个任意形状的矩阵分解成一个正交矩阵和一个对角矩阵以及另一个正交矩阵的乘积. ...
- 协同过滤与隐语义模型推荐系统实例3: 基于矩阵分解(SVD)的推荐
[ 协同过滤与隐语义模型推荐系统实例1: 数据处理 ] [ 协同过滤与隐语义模型推荐系统实例2: 基于相似度的推荐 ] 隐语义模型推荐 基于矩阵分解(SVD)的推荐 # 先计算歌曲被当前用户播放量/用 ...
- 交替最小二乘矩阵分解_使用交替最小二乘矩阵分解与pyspark建立推荐系统
交替最小二乘矩阵分解 pyspark上的动手推荐系统 (Hands-on recommender system on pyspark) Recommender System is an informa ...
- 入门推荐系统——矩阵分解
1.隐语义模型与矩阵分解 协同过滤算法完全没有利用到物品本身或者是用户自身的属性, 仅仅利用了用户与物品的交互信息就可以实现推荐,是一个可解释性很强, 非常直观的模型.存在问题, 第一个就是处理稀疏矩 ...
- 【矩阵分解八】矩阵分解的优缺点及其高级演化
矩阵分解推荐算法的优点 矩阵分解结合了隐语义和机器学习的特性,能够挖掘更深层的用户和物品间的联系,因此预测的精度比较高,预测准确率要高于基于邻域的协同过滤以及基于内容的推荐算法: 比较容易编程实现,随 ...
- mf模型 svd++_算法小板报(六)——初探MF(矩阵分解)和FM模型
一.简介 矩阵分解(Matrix Factorization,MF)是推荐系统中非常经典的一个算法,虽然现今工业界直接使用的较少,但其背后蕴含的编码降维思想,得以广泛应用于推荐领域之中.本文则主要来梳 ...
最新文章
- 从Hive导出数据到Oracle数据库--Sqoop
- 像淘宝一样“网购装修”,“当家”助推家装互联网走向“广域网”
- 新rust怎么拆除围墙_小区围墙半夜被人拆了,破坏者竟是开发商!记者采访被推出门...
- Ubuntu Wifipumpkin3 WiFi钓鱼工具,应该适用于绝大多数的Debian系的linux 发行版
- c# 无法将类型隐式转换_C#中的隐式类型数组
- 【C++ Priemr | 15】虚函数常见问题
- python运行出现数据错误_Python运行出错情况
- Python自动化办公知识点整理汇总
- 带你读AI论文丨用于细粒度分类的Transformer结构—TransFG
- 【干货】怎样用深度学习做语音识别
- 2017 Multi-University Training Contest - Team 4:1003. Counting Divisors(积性函数)
- 类中不写成员函数易犯错误模型
- delphi完美经典--第十八章
- word对象模型概述
- 思维方式-《终身成长》书中的精髓:决定人与人之间巨大差距的,是你的思维模式。
- 通过宏快速破解EXCEL文件密码
- Anaconda.anaconda_lib.workers.local-worker
- 数据结构|连通图、完全图、无向图、有向图的边数计算问题
- Opencv图片锐化
- python数据分析-面试题