矩阵分解【00】

news/2024/5/19 21:28:04 标签: 矩阵, 线性代数, 推荐算法

1.协同过滤就是尽可能的找到和你相似的用户,将他们喜欢的电影推荐给你。这里面的问题就是,如果一个电影虽然很符合你的兴趣,但是你的朋友却很少有评价或观看过,那么协同过滤就很难将这个电影推荐给你。导致对稀疏数据的处理比较弱,头部效应明显,泛化能力差。
在这里插入图片描述

2.如图,评分矩阵中,每一行u代表每个用户,每一列s代表每个物品,矩阵中的数字代表着用户对物品的打分。我们通过数据构建的矩阵如图一样并不是一个满秩的矩阵。在真实的数据集里,矩阵的稠密度仅有3%左右。那么就意味着,矩阵中有绝大部分的评分是空白的。
矩阵分解算法将 m×n 维的矩阵R分解为 m× k 的用户矩阵 U 和 k×n 维的物品矩阵 S 相乘的形式。其中, m 为用户的数量,n为物品的数量,k为隐向量(Latent Factor)的维度。 k 的大小决定了隐向量表达能力的强弱,实际应用中,其取值要经过多次的实验来确定。在得到了 用户矩阵U 和物品矩阵 S 后,将两个矩阵相乘,就可以得到一个满秩的矩阵。那么,我们就对未被评价过的物品,有了一个预测评分。
3.常见的矩阵分解算法
1.特征值分解(Eigendecomposition)
特征值只能作用于方阵,因此对于我们推荐系统用户-物品的矩阵不太合适。而特征值分解在PCA(主成分分析)中进行降维或人脸识别中运用却非常广泛
2.奇异值分解SVD(Singular Value Decomposition)
假设一个矩阵 M 是一个 m×n 的矩阵,则一定存在一个分解 :
在这里插入图片描述
在这里插入图片描述 SVD 需要原始的共现矩阵是稠密的。如果矩阵非常稀疏,求出奇异值的效果就会很差。而在推荐系统的场景中,很少有数据稠密的状态,这就使得奇异值分解在应用前需要进行数据填充。传统的SVD的在求奇异值时,计算复杂度非常的高。

3.Funk - SVD (Simon Funk SVD)
Funk-SVD提出是因为SVD在分解成三个矩阵的时候非常的耗时同时空间复杂度也很高,在面对稀疏数据时,SVD无法进行分解。而Funk-SVD完美的解决了SVD的不足,它仅将矩阵分解为两个矩阵,分解的目标是让分解后的两个矩阵乘积得到的评分矩阵和原始矩阵更拟合,也就是说与原始评分的残差最小。
在这里插入图片描述Funk-SVD由于需要迭代优化损失函数,因此其训练过程比较耗时。


http://www.niftyadmin.cn/n/5481399.html

相关文章

【JavaScript】原型链/作用域/this指针/闭包

1.原型链 参考资料:Annotated ES5 ECMAScript起初并不支持如C、Smalltalk 或 Java 中“类”的形式创建对象,而是通过字面量表示法或者构造函数创建对象。每个构造函数都是一个具有名为“prototype”的属性的函数,该属性用于实现基于原型的继…

idm线程越多越好吗 idm线程数多少合适 IDM百度云下载 IDM下载器如何修改线程数

IDM(Internet Download Manager)是一款流行的网络下载器,它支持多线程下载,这意味着它可以同时建立多个连接来下载文件的不同部分,从而提高下载速度。我们在使用IDM的时候总是有很多疑问,今天我们学习IDM线…

外包干了17天,技术倒退明显

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能…

docker 安装canal

一、新建文件夹 新建文件夹logs, 新建文件canal.properties instance.properties docker.compose.yml canal.propertie 修改如下: 修改instance.properties内容如下 1.1 canal.properties ################################################# ######### …

6.1Python之字典的初识

【1】字典的创建与价值 字典(Dictionary)是一种在Python中用于存储和组织数据的数据结构。元素由键和对应的值组成。其中,键(Key)必须是唯一的,而值(Value)则可以是任意类型的数据。…

前端自动化测试的方法和工具

前端自动化测试是通过自动化工具来模拟用户操作,验证前端应用的功能、性能和用户体验是否符合预期的过程。以下是几种常见的前端自动化测试方法: 单元测试(Unit Testing): 单元测试是针对代码中最小的可测试单元进行的…

在线视频下载工具lux(原annie)安装及使用教程

安装教程 下载ffmpeg,参考这篇文章:Python——Windows下载ffmpeg由于博主的系统为windows,所以选择不安装lux,直接下载.exe文件,进入lux的github网站后,选择右侧的Releases,下载下图的windows …