http://baogege.info/2014/10/19/matrix-factorization-in-recommender-systems/

引言

随着Netflix Prize推荐比赛的成功举办,近年来隐语义模型(Latent Factor Model, LFM)受到越来越多的关注。隐语义模型最早在文本挖掘领域被提出,用于寻找文本的隐含语义,相关的模型常见的有潜在语义分析(Latent Semantic Analysis, LSA)、LDA(Latent Dirichlet Allocation)的主题模型(Topic Mdel),矩阵分解(Matrix Factorization)等等。其中矩阵分解技术是实现隐语义模型使用最为广泛的一种方法,其思想也正是来源于此,著名的推荐领域大神Yehuda Koren更是凭借矩阵分解模型勇夺Netflix Prize推荐比赛冠军,以矩阵分解为基础,Yehuda Koren在数据挖掘和机器学习相关的国际顶级会议(SIGIR,SIGKDD,RecSys等)发表了很多文章,将矩阵分解模型的优势发挥得淋漓尽致。实验结果表明,在个性化推荐中使用矩阵分解模型要明显优于传统的基于邻域的协同过滤(又称基于记忆的协同过滤)方法,如UserCF、ItemCF等,这也使得矩阵分解成为了目前个性化推荐研究领域中的主流模型。

写在前面

需要说明的是,协同过滤方法分为两大类,一类为上述基于领域(记忆)的方法,第二类为基于模型的方法,即隐语义模型,矩阵分解模型是隐语义模型最为成功的一种实现,不作特别说明的情况下,本文将隐语义模型和矩阵分解看作同一概念,User-Item矩阵和User-Item评分矩阵为同一概念。

另外,奇异值分解(Singular Value Decomposition, SVD),非负矩阵分解(Non-negative Matrix Factorization, NMF),概率矩阵分解(Probability Matrix Factorization, PMF)等方法虽然也使用矩阵分解的思想,属于矩阵分解的范畴,但是其分解方法和本文有所不同,这些不是本文的讨论重点,我会在今后的博文中逐一进行讲解。

矩阵分解方法

基本思想

我们都知道,现实生活中的User-Item矩阵极大(User数量极大、Item数量极大),而用户的兴趣和消费能力有限,对单个用户来说消费的物品,产生评分记录的物品是极少的。这样造成了User-Item矩阵含有大量的空值,数据极为稀疏。矩阵分解的核心思想认为用户的兴趣只受少数几个因素的影响,因此将稀疏且高维的User-Item评分矩阵分解为两个低维矩阵,即通过User、Item评分信息来学习到的用户特征矩阵P和物品特征矩阵Q,通过重构的低维矩阵预测用户对产品的评分。由于用户和物品的特征向量维度比较低,因而可以通过梯度下降(Gradient Descend)的方法高效地求解,分解示意图如下所示。

基本矩阵分解

如上所述,User-Item评分矩阵维度较高且极为稀疏,传统的奇异值分解方法只能对稠密矩阵进行分解,即不允许所分解矩阵有空值。因而,若采用奇异值分解,需要首先填充User-Item评分矩阵,显然,这样造成了两个问题。

  • 其一,填充大大增加了数据量,增加了算法复杂度。
  • 其二,简单粗暴的数据填充很容易造成数据失真。

这些问题导致了传统的SVD矩阵分解表现并不理想。之后,Simon Funk在博客上公开发表了一个只考虑已有评分记录的矩阵分解方法,称为Funk-SVD,也就是被Yehuda Koren称为隐语义模型的矩阵分解方法。他简单地认为,既然我们的评价指标是均方根误差(Root Mean Squared Error, RMSE),那么可以直接通过训练集中的观察值利用最小化RMSE学习用户特征矩阵P和物品特征Q,并用通过一个正则化项来避免过拟合。其需要优化的函数为

其中KK为已有评分记录的(u,i)(u,i)对集合,ruirui为用户uu对物品ii的真实评分,∥qi∥2+∥pu∥2∥qi∥2+∥pu∥2为防止过拟合的正则化项,λλ为正则化系数。假设输入评分矩阵为RR为M×NM×N维矩阵,通过直接优化以上损失函数得到用户特征矩阵PP(M×KM×K)和物品特征矩阵QQ(K×NK×N),其中K≪M,NK≪M,N。优化方法可以采用交叉最小二乘法或随机梯度下降方法。

其评分预测方法为

rui^=qTipurui^=qiTpu

其中pupu和qiqi分别为用户uu和物品ii的特征向量,两者的内积即为所要预测的评分。

带偏置的矩阵分解

基本的矩阵分解方法通过学习用户和物品的特征向量进行预测,即用户和物品的交互信息。用户的特征向量代表了用户的兴趣,物品的特征向量代表了物品的特点,且每一个维度相互对应,两个向量的内积表示用户对该物品的喜好程度。但是我们观测到的评分数据大部分都是都是和用户或物品无关的因素产生的效果,即有很大一部分因素是和用户对物品的喜好无关而只取决于用户或物品本身特性的。例如,对于乐观的用户来说,它的评分行为普遍偏高,而对批判性用户来说,他的评分记录普遍偏低,即使他们对同一物品的评分相同,但是他们对该物品的喜好程度却并不一样。同理,对物品来说,以电影为例,受大众欢迎的电影得到的评分普遍偏高,而一些烂片的评分普遍偏低,这些因素都是独立于用户或产品的因素,而和用户对产品的的喜好无关。

我们把这些独立于用户或独立于物品的因素称为偏置(Bias)部分,将用户和物品的交互即用户对物品的喜好部分称为个性化部分。事实上,在矩阵分解模型中偏好部分对提高评分预测准确率起的作用要大大高于个性化部分所起的作用,以Netflix Prize推荐比赛数据集为例为例,Yehuda Koren仅使用偏置部分可以将评分误差降低32%,而加入个性化部分能降低42%,也就是说只有10%是个性化部分起到的作用,这也充分说明了偏置部分所起的重要性,剩下的58%的误差Yehuda Koren将称之为模型不可解释部分,包括数据噪音等因素。

偏置部分表示为

bui=μ+bu+bibui=μ+bu+bi

偏置部分主要由三个子部分组成,分别是

  • 训练集中所有评分记录的全局平均数μμ,表示了训练数据的总体评分情况,对于固定的数据集,它是一个常数。
  • 用户偏置bubu,独立于物品特征的因素,表示某一特定用户的打分习惯。例如,对于批判性用户对于自己的评分比较苛刻,倾向于打低分;而乐观型用户则打分比较保守,总体打分要偏高。
  • 物品偏置bibi,特立于用户兴趣的因素,表示某一特定物品得到的打分情况。以电影为例,好片获得的总体评分偏高,而烂片获得的评分普遍偏低,物品偏置捕获的就是这样的特征。

以上所有偏置和用户对物品的喜好无关,我们将偏置部分当作基本预测,在此基础上添加用户对物品的喜好信息,即个性化部分,因此得到总评分预测公式如下:

优化以上函数,分别获得用户特征矩阵PP、物品特征矩阵QQ、各用户偏置bubu、各物品偏置bibi,优化方法仍可采用交叉最小二乘或随机梯度下降。

矩阵分解的优缺点

矩阵分解方法将高维User-Item评分矩阵映射为两个低维用户和物品矩阵,解决了数据稀疏性问题。使用矩阵分解具有以下优点:

  • 比较容易编程实现,随机梯度下降方法依次迭代即可训练出模型。
    比较低的时间和空间复杂度,高维矩阵映射为两个低维矩阵节省了存储空间,训练过程比较费时,但是可以离线完成;评分预测一般在线计算,直接使用离线训练得到的参数,可以实时推荐。
  • 预测的精度比较高,预测准确率要高于基于领域的协同过滤以及内容过滤等方法。
  • 非常好的扩展性,很方便在用户特征向量和物品特征向量中添加其它因素,例如添加隐性反馈因素的SVD++,此方法的详细实现参见文献[3];添加时间动态time SVD++,此方法将偏置部分和用户兴趣都表示成一个关于时间的函数,可以很好的捕捉到用户的兴趣漂移,欲知详细实现请阅读文献[4]。
    矩阵分解的不足主要有:
  • 模型训练比较费时。
  • 推荐结果不具有很好的可解释性,分解出来的用户和物品矩阵的每个维度* 无法和现实生活中的概念来解释,无法用现实概念给每个维度命名,只能理解为潜在语义空间。

参考文献

[1]Funk-SVD
[2]Koren Y, Bell R, Volinsky C. Matrix factorization techniques for recommender systems
[3]Koren Y. Factorization meets the neighborhood: a multifaceted collaborative filtering model
[4]Koren Y. Collaborative filtering with temporal dynamics

个性化推荐中的矩阵分解技术相关推荐

  1. 推荐系统中的矩阵分解技术

    推荐系统中的矩阵分解技术 本文翻译自Koren Y, Bell R, Volinsky C. Matrix Factorization Techniques for Recommender Syste ...

  2. 用于文档上下文感知推荐的卷积矩阵分解

    论文:Kim D H, Park C, Oh J, et al. Convolutional Matrix Factorization for Document Context-Aware Recom ...

  3. TensorFlow2实现协同过滤算法中的矩阵分解(首家基于TS2版本)

    目标: 用TensorFlow2,实现协同过滤算法中的矩阵分解.网上找的绝大部分是基于一个模板复制出来的,且基于TensorFlow1,因此本人亲自动手,用TensorFlow2实现. 好奇为什么Te ...

  4. 个性化推荐中的数据稀疏性

    个性化推荐中数据稀疏性怎么理解 造成的原因是什么? 每个领域对稀疏性的定义和解决方法都不一样,拿感兴趣地点推荐来说. 假定我拥有一群在上海的用户和他们最近一个月所到过的地点的记录.现在我想根据他所去过 ...

  5. 2018深度学习在个性化推荐中的应用

    深度学习在个性化推荐中的应用 结论 得益于深度学习强大的表示能力,目前深度学习在推荐系统中需要对用户与物品进行表示学习的任务中有着不错的表现,但优势不如图像与文本那么显著[1]. 深度学习与分布式表示 ...

  6. 推荐系统中的矩阵分解总结

    最近学习矩阵分解,但是学了好多种类,都乱了,看了这篇文章,系统性的总结了矩阵分解,感觉很棒,故分享如下: 前言 推荐系统中最为主流与经典的技术之一是协同过滤技术(Collaborative Filte ...

  7. 推荐系统中的矩阵分解| 奇异值分解及改进、因子分解机

    网络中的信息量呈现指数式增长,随之带来了信息过载问题.推荐系统是大数据时代下应运而生的产物,目前已广泛应用于电商.社交.短视频等领域.本文将针对推荐系统中基于隐语义模型的矩阵分解技术来进行讨论. 目录 ...

  8. 机器学习中的矩阵分解方法

    基于郭栋老师的教学PPT,配上相关paper和资料,做到对矩阵分解技术有个大致了解. 一个假设:数据由有限的潜在因子决定,数据样本的观测值是潜在因子的一个映射. 矩阵分解发展历史: 经典的方法PCA, ...

  9. 推荐算法之--矩阵分解(Matrix Factorization)

    文章目录 推荐算法之--矩阵分解(Matrix Factorization) 1. 共现矩阵 2. 矩阵分解(MF) 3. SVD实现矩阵分解(MF) 4. 梯度下降 实现 矩阵分解(MF) 4.1 ...

  10. 一文帮你梳理清楚:奇异值分解和矩阵分解 | 技术头条

    作者 | K. Delphino 译者 | Linstancy 编辑 | Rachel 出品 | AI科技大本营(id:rgznai100) [导读]在推荐系统的相关研究中,我们常常用到两个相关概念: ...

最新文章

  1. Kafka消费者重置offset读取数据
  2. 协程的三种同步方式Channel、Mutex、WaitGroup
  3. SIGIR 2021 | 深入探索犯罪情节,中科大提出基于环境感知的法律判决预测
  4. 适用于 Python 的 10 大最佳 IDE,你 Pick 哪一款?
  5. C语言extern与static修饰变量
  6. 够酷!小米全新折叠屏方案曝光:这次轮到小米引领潮流了?
  7. Redis学习总结(12)——Redis常见面试题再总结
  8. Win10重装后电脑关不了机如何解决
  9. 十分钟理解线性代数的本质_如何理解线性代数?
  10. eviews建立时间序列模型_如何用eviews分析时间序列(全面).pdf
  11. 验证集与测试集的区别
  12. linux磁盘写保护怎么修改_linux
  13. 工业机器人演示码垛和卸垛_机器人在码垛卸垛行业的应用
  14. 数据分享|WEKA用决策树、随机森林、支持向量机SVM、朴素贝叶斯、逻辑回归信贷违约预测报告
  15. 计算机为什么经常更新,电脑老是配置更新怎么办
  16. 计算机教学研讨会方案,临沂大学信息学院计算机教学红色文化教育研讨会实施方案.doc...
  17. 模拟退火算法SA求解连续函数极值
  18. 技术开发向技术管理转型
  19. 游戏服务器引擎的设计(二)开发游戏服务器底层 及libuv使用
  20. FlashPlay+SWF播放器

热门文章

  1. poj 1125 Stockbroker Grapevine 代码及分析
  2. 与IDE相关的Attribute属性(C#)
  3. 计算机网络管理员技师题库那个好,计算机网络管理员高级技师题库.docx
  4. 游戏筑基开发之栈、队列及基本功能实现(使用C语言链表的相关知识)
  5. OSPFv3中LSA详解(五)——Intra-Area-Prefix LSA详解
  6. CoreData手动创建托管对象子类时报错
  7. 二叉树进阶之平衡二叉树的判断
  8. 关于网上商城开发的随笔记录2
  9. 问题:sql server 2005 中数据库关系图无法使用——基于SQL Server 2005
  10. 【杭电ACM】1.2.6 decimal system