【协同过滤进化】矩阵分解算法

一、发展动机

为解决UserCF和ItemCF协同过滤算法中头部效应明显,处理稀疏向量能力弱的问题,同时增加模型的泛化能⼒,矩阵分解技术被提出。

二、矩阵分解算法

该⽅法在协同过滤共现矩阵的基础上,使⽤更稠密的隐向量表⽰⽤户和物品,挖掘⽤户和物品的隐含兴趣和隐含特征,在⼀定程度上 弥补了协同过滤模型处理稀疏矩阵能⼒不⾜的问题。

2.1、主要原理

矩阵分解算法则期望为每⼀个⽤户和视频⽣成⼀个隐向量,将⽤ 户和视频定位到隐向量的表⽰空间上,距离相 近的⽤户和视频表明兴趣特点接近,在推荐过程中,就应该把距离相 近的视频推荐给⽬标⽤户。

2.2、如何得到隐向量

在"矩阵分解"的算法框架下,⽤户和物品的隐向量是通过分解协 同过滤⽣成的共现矩阵得到的,这也是"矩阵分解"名字的由来。

矩阵分解算法将m×n维的共现矩阵R分解为m×k维的⽤户矩阵U和k× n维的物品矩阵V相乘的形式。其中m是⽤户数量,n是物品数量,k是隐 向量的维度。k 的⼤⼩决定了隐向量表达能⼒的强弱。k 的取值越⼩, 隐向量包含的信息越少,模型的泛化程度越⾼;反之,k 的取值越⼤,隐向量的表达能⼒越强,但泛化程度相应降低。

此外,k 的取值还与矩 阵分解的求解复杂度直接相关。在具体应⽤中,k的取值要经过多次试 验找到⼀个推荐效果和⼯程开销的平衡点。

2.3、预估评分

基于⽤户矩阵 U和物品矩阵 V,⽤户 u对物品 i的预估评分:其中 pu是⽤户 u 在⽤户矩阵 U 中的对应⾏向量,qi是物品 i 在物 品矩阵 V中的对应列向量。

三、矩阵分解算法评价

在矩阵分解算法中,由于隐向量的存在,使任意的⽤户和物品之间都可以得到预测分值。⽽隐向量 的⽣成过程其实是对共现矩阵进⾏全局拟合的过程,因此隐向量其实 是利⽤全局信息⽣成的,有更强的泛化能⼒;⽽对协同过滤来说,如 果两个⽤户没有相同的历史⾏为,两个物品没有相同的⼈购买,那么 这两个⽤户和两个物品的相似度都将为 0(因为协同过滤只能利⽤⽤户 和物品⾃⼰的信息进⾏相似度计算,这就使协同过滤不具备泛化利⽤ 全局信息的能⼒)。

3.1、矩阵分解算法优点

  • **泛化能⼒强。**在⼀定程度上解决了数据稀疏问题。
  • **空间复杂度低。**不需再存储协同过滤模型服务阶段所需 的"庞⼤"的⽤户相似性或物品相似性矩阵,只需存储⽤户和物品隐向 量。空间复杂度由 n2级别降低到(n+m)·k级别。
  • 更好的扩展性和灵活性。

3.2、矩阵分解算法缺点

与协同过滤⼀样,矩 阵分解同样不⽅便加⼊⽤户、物品和上下⽂相关的特征,这使得矩阵 分解丧失了利⽤很多有效信息的机会,同时在缺乏⽤户历史⾏为时, ⽆法进⾏有效的推荐。

相关推荐
BagMM11 分钟前
DetLH论文阅读
人工智能·计算机视觉·目标跟踪
小龙报14 分钟前
《算法通关指南数据结构和算法篇(2)--- 链表专题》
c语言·数据结构·c++·算法·链表·学习方法·visual studio
fundroid23 分钟前
Androidify:谷歌官方 AI + Android 开源示例应用
android·人工智能·开源
居然JuRan33 分钟前
大模型瘦身术:量化与蒸馏技术全解析
人工智能
艾莉丝努力练剑35 分钟前
【优选算法必刷100题】第031~32题(前缀和算法):连续数组、矩阵区域和
大数据·人工智能·线性代数·算法·矩阵·二维前缀和
醉颜凉36 分钟前
环形房屋如何 “安全劫舍”?动态规划解题逻辑与技巧
c语言·算法·动态规划
大雨淅淅39 分钟前
一文搞懂动态规划:从入门到精通
算法·动态规划
Beginner x_u40 分钟前
线性代数 必背公式总结&&线代计算技巧总结_分块矩阵大总结_秩一矩阵大总结
线性代数·矩阵·特征值·特征向量·计算技巧
不去幼儿园42 分钟前
【启发式算法】灰狼优化算法(Grey Wolf Optimizer, GWO)详细介绍(Python)
人工智能·python·算法·机器学习·启发式算法
随意起个昵称43 分钟前
【二分】洛谷P2920,P2985做题小记
c++·算法