隐语义模型(LMF)与矩阵分解(MF)
发布时间:2025-12-09 16:16:28
浏览次数:4
😄 MF的出现就是为了解决CF处理稀疏矩阵能力弱的问题,增强泛化能力。挖掘用户和物品的隐含兴趣和隐含特征。
⭐ 在这里隐语义模型LMF在这里也就是利用MF对用户评分矩阵分解出来的用户隐向量矩阵、物品隐向量矩阵,然后基于这两个矩阵就可以计算得分,完成推荐任务。
🚀 MF: 2006年,在一场叫 Netflix Prize 的比赛中被提出
文章目录
- 1、隐语义模型 LMF
- 2、矩阵分解 MF
- 2.1、MF原理
- 2.2、MF算法
- 2.2.1、MF实现方法1 - Basic SVD
- 2.2.2、MF实现方法2 - RSVD
- 2.3、MF代码实践
- 2.4、MF优点
- 2.5、MF缺点
- Reference
1、隐语义模型 LMF
它的核心思想是通过隐含特征(latent factor)联系用户兴趣和物品(item), 基于用户的行为找出潜在的主题和分类, 然后对item进行自动聚类,划分到不同类别/主题(用户的兴趣)。
⭐举个例子就懂了:
- 上面例子中的小清晰, 重口味, 优雅这些就可以看做是隐含特征, 而通过这个隐含特征就可以把用户的兴趣和音乐的进行一个分类, 其实就是找到了每个用户每个音乐的一个隐向量表达形式
- 其实有点类似embedding的思想,这里相当于给每个用户,每个物品构造了一个embedding。
- 但实际情况中,我们只有用户评分矩阵,无上面的两个用户、物品矩阵。因为用户很多、物品很多,没法统一设定一些隐特征。且用户评分矩阵很稀疏。
- MF的提出就是为了基于这个用户评分矩阵,找出用户和物品的矩阵。
2、矩阵分解 MF
2.1、MF原理
MF的提出就是为了基于这个用户评分矩阵,找出用户和物品的矩阵。也就是用户兴趣和物品的隐向量表达, 然后就把这个评分矩阵分解成Q和P两个矩阵乘积的形式, 这时候就可以基于这两个矩阵去预测某个用户对某个物品的评分了。 然后基于这个评分去进行推荐。
2.2、MF算法
MF大家比较熟悉的应该是:特征值分解EVD,奇异值分解SVD,但这两种MF在这里不适合。
- EVD: 要求分解的矩阵为方阵,显然用户评分矩阵不为方阵。
- SVD: 要求分解的矩阵为稠密的,显然用户评分矩阵很稀疏且很大。若要用SVD,必须处理缺失值,而补全缺失值的话,补的有可能不对,空间复杂度还高。加上SVD算法复杂度本来就高。
2.2.1、MF实现方法1 - Basic SVD
- 也就是Netflix Prize之后, Simon Funk公布了一个矩阵分解算法叫做Funk-SVD
- 思想:把求解上面两个矩阵的参数问题转换成一个最优化问题, 可以通过训练集里面的观察值利用最小化来学习用户矩阵和物品矩阵。
2.2.2、MF实现方法2 - RSVD
Basic SVD有个问题就是当参数很多的时候, 就是两个矩阵很大的时候, 往往容易陷入过拟合的困境, 这时候, 就需要在目标函数上面加上正则化的损失, 就变成了RSVD。
2.3、MF代码实践
😄等我实践了再更新吧:带有正则项和偏置项的SVD实践
2.4、MF优点
- 泛化能力强(即可能可以将两个物品相似的信息推广到其他物品的相似性上)。
- 一定程度上解决了稀疏问题(MF分解出了两个稠密向量)。
- 空间复杂度低: 由于用户和物品都用隐向量的形式存放, 少了用户和物品相似度矩阵, 空间复杂度由O(n2)降到了O((n+m)*f)。
- 更好的扩展性和灵活性:矩阵分解的最终产物是用户和物品隐向量, 这个深度学习的embedding思想不谋而合, 因此矩阵分解的结果非常便于与其他特征进行组合和拼接, 并可以与深度学习无缝结合。
2.5、MF缺点
- 矩阵分解算法依然是只用到了评分矩阵, 没有考虑到用户特征, 物品特征和上下文特征等。 所以后序LR,FM等能够融合多种特征的模型出现了。
Reference
[1] Datawhale
[2] https://blog.csdn.net/weixin_43646592/article/details/128854424
[3] 王喆 - 《深度学习推荐系统》