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

一、发展动机

为解决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、矩阵分解算法缺点

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

相关推荐
汗流浃背了吧,老弟!1 分钟前
中文分词全切分算法
算法·中文分词·easyui
~~李木子~~6 分钟前
贪心算法实验1
算法·ios·贪心算法
信息快讯10 分钟前
【光学神经网络与人工智能应用专题】
人工智能·深度学习·神经网络
泛联新安10 分钟前
iUnit7.0重磅发布|AI驱动更智能的单元测试
人工智能·单元测试
IT_陈寒22 分钟前
Spring Boot 3.2震撼发布:5个必知的新特性让你开发效率提升50%
前端·人工智能·后端
·云扬·32 分钟前
【LeetCode Hot 100】 136. 只出现一次的数字
算法·leetcode·职场和发展
Xiaochen_1234 分钟前
有边数限制的最短路:Bellman-Ford 算法
c语言·数据结构·c++·程序人生·算法·学习方法·最简单的算法理解
Mintopia1 小时前
零信任架构下的 WebAIGC 服务安全技术升级方向
前端·人工智能·trae
西西弗Sisyphus4 小时前
线性代数 - 理解求解矩阵特征值的特征方程
线性代数·矩阵·特征值·特征向量
Danceful_YJ5 小时前
33.Transformer架构
人工智能·pytorch·深度学习