点击上方蓝字“小透明的推荐之路”一起学习吧

MATRIX FACTORIZATION TECHNIQUES FOR RECOMMENDER SYSTEMS

前言(Foreword)

本篇文章是由来自Yahoo Research的Koren等人在2009年发表在IEEE Computer Society期刊上。矩阵分解用于推荐系统最早是 Simon、Funk等人在 Netflix比赛的评分任务,提出了Funk-SVD算法。之后的研究改进了矩阵分解, 并且提供了很多变种,例如本文。

背景(Background)

由于信息过载问题,现代用户被选择给淹没。给用户匹配最合适的物品能够提高用户的满意度和忠实度。因此,很多的零售商开始对可以给用户提供个性化推荐的推荐系统感兴趣。推荐系统在一些娱乐产品如电影、音乐、商品交易等有了用武之地。

总的来说,推荐系统基于两个策略(当时):基于内容的过滤方法(创建一个轮廓(profile)来描述用户或者物品的本质)和协同过滤方法。

基于内容的过滤(Content Filtering Approach)

例如,一个电影轮廓可以包括关于它的类型、参与的演员、它的票房的受欢迎程度,等等。用户资料可能包括人口统计信息或在适当的调查表上提供的答案。这些轮廓允许程序将用户与匹配的产品关联起来。当时,一个非常成功的内容过滤是the Music Genome Project,它被应用在Pandora.com。

协同过滤(Colaborative Filtering)

只依赖于过去的用户行为,例如,以前的交易或物品的评级,而不需要创建显式的轮廓配置信息,这种方法被称为协同过滤,这是Tapestry的开发人员创造的一个术语,Tapestry是第一个推荐系统。协同过滤分析用户之间的关系和产品之间的相互依赖关系,以识别新的用户-物品的关联。协同过滤的一个主要优点是它是领域自由的,它可以解决数据方面的问题,而这些问题通常很难用内容过滤来分析。尽管协同过滤通常比基于内容的技术更准确,但它存在所谓的冷启动问题,因为它无法处理系统的新产品和用户,在这方面,内容过滤是优越的。

协同过滤两个主要的方法是:基于邻域方法和隐语义模型。

基于邻域的方法(Neighborhood Methods )

基于邻域方法由于计算的关系不同(物品/用户)被分为基于物品的协同过滤和基于用户的协同过滤。

面向物品的方法基于同一用户对“邻近”物品的评分来评估用户对某个物品的偏好。一个物品的邻居是同一个用户打出相似评分的其他物品。比如电影《拯救大兵瑞恩》。它的邻居可能包括战争片,斯皮尔伯格的电影,汤姆汉克斯的电影,等等。为了预测某个特定用户对《拯救大兵瑞恩》的评分,我们会寻找该用户实际评价的电影的最近邻居。

面向用户的方法是去找到志同道合(相似)的用户,这些用户可以互相补充各自的评分,如下图所示。

隐语义模型(Latent Factor Model)

隐语义模型通过根据评分模式推断出的20到100个因子来表征物品和用户,从而试图解释评分。对于电影来说,发现的因素可能会衡量明显的维度,例如喜剧与戏剧,动作量或对儿童的定向;不太明确的尺寸,例如角色发展的深度或古怪成都;亦或者是完全无法解释的尺寸。对于用户来说,每个因素都会衡量用户对在相应电影的喜欢程度。

下图以二维的简化示例说明了这种想法。考虑两个假设维度,分别是面向女性和男性(x轴)以及严肃与逃避(y轴)。该图显示了这两个维度上可能有几部著名电影和一些虚拟用户。对于此模型,相对于电影的平均评分,用户对电影的预测评分将等于电影和用户在图表上位置的点积。例如,我们希望Gus 喜欢Dumb和Dumber,讨厌The Color Purple,并且将《勇敢的心》(Braveheart)评为平均水平。

矩阵分解方法(MatRix Factorization Methods)

一些最成功的潜在因素模型的实现是基于矩阵分解的。在其基本形式中,矩阵分解通过从物品评分模式中推断出的隐向量来表征物品和用户。推荐系统依赖于不同类型的输入数据,这些输入数据通常放置在一个矩阵中,其中一个维度表示用户,另一维度表示物品。

输入的数据集分为两类:

  1. 最方便的数据是高质量的显式反馈,其中包括用户对其物品兴趣的显式输入。例如,Netflix收集电影的星级评分。我们将明确的用户反馈称为评分。通常,显式反馈包含一个稀疏矩阵,因为任何单个用户都可能只对可能物品的一小部分进行了评分。

  2. 当没有明确的反馈时,推荐系统可以使用隐式反馈来推断用户的偏好,隐式反馈通过观察用户的行为(包括购买历史,浏览历史,搜索模式甚至鼠标移动)来间接反映意见。隐式反馈通常表示事件的存在或不存在,因此通常由密集填充的矩阵表示。

最基础的矩阵分解模型(Basic Matrix Factorization Model)

矩阵分解模型将用户和物品都映射到维数为




的联合潜在因子空间,并将用户和物品的交互建模为两者之间的内积操作。

定义:对于每一个物品




表征为隐向量












,每一个用户




表征为隐向量












,内积












代表了物品




和用户




之间的交互,即用户




对物品




特性的兴趣程度(评分),用户




对物品




的真实评分为










,评分估计可被公式化为:



























为了学习隐向量(















),系统通过最小化正则化后的均方误差:

文章使用两个方法来最小化上式:随机梯度下降法(stochastic gradient descent)和最小二乘法(alternating least squares)。

随机梯度下降法

对于每一个训练样本,系统需要预测的真实评分










与计算得出的评分之间的误差为:




































然后沿着梯度的反方向以步长




来修改其中的参数:

最小二乘法

ALS轮换来拟合















。当







被拟合时,系统会通过解决最小二乘问题来重新计算







,反之亦然。

添加偏置(Adding Biaes)

虽然基本的矩阵分解可以捕获用户和物品之间的交互,但是,观察到的许多评分变化是由于与用户或物品相关的影响(称为偏差)所致,而与任何交互无关。例如,典型的协同过滤数据表现出较大的系统性倾向,有些用户给出的评分比其他用户高,有些物品得到的评分比其他项目高,因为有些物品被普遍认为比其他物品更好(或更差)。

因此单纯用内积的交互来解释一个评分值是比较粗糙的。因此,使用偏置来解释用户/物品的自身影响:
























其中




被定义为总平均评分(例如单个用户对所有电影的平均评分),参数















分别表示物品和用户的偏置,将偏置加入最终的评分中:

















































评分被分解为四项:总平均得分,物品偏置,用户偏置和物品用户的交互。

故损失函数为:

隐式反馈----额外的输入源(AdditionaL Input Sources)

推荐系统总会面临一个冷启动问题,一个缓解这个问题的方案是添加额外的用户信息源。推荐系统可以使用隐式反馈来深入了解用户的偏好。实际上,无论用户是否愿意提供明确的评分,他们都可以收集行为信息。零售商除了可以提供客户的评价外,还可以使用其客户的购买或浏览历史记录来了解其趋势。

简单起见,定义一个







来表示用户隐式偏好的物品集。对于物品




关联一个向量












(等于对每一个物品的隐式偏好做一个one-hot编码)。因此,一个用户的偏爱对于在







中的物品来说可以形容为一个向量:






















归一化后,


































另一个信息源是用户属性,定义一个布尔属性







来表示用户




相关的信息,如性别、年龄、组群、所在地的邮编、收入水平等,对于每一个属性可以用一个向量表示,












,一个用户的所有属性表示为:






















矩阵分解模型整合输入源,最后的评分形式为:

时间的动态性(TemporaL Dynamics)

实际上,随着新选择的出现,物品的感知度和受欢迎度会不断变化。同样,用户的喜好也在不断发展,导致他们重新定义了品味。矩阵分解方法非常适合于对时间效应进行建模,从而可以显着提高准确性。将评分分解为不同的项可以使系统分别处理不同的时间方面。

一个评分项中随着时间的改变发生变化的有:物品偏置










,用户偏置










以及用户偏好










。最终评分形式可以变为:

输入中不同的置信度水平(Inputs With Varying Confidence Levels)

并非所有观察到的评分都应具有相同的权重或置信度。例如,大规模广告可能会影响某些物品的投票,而这些投票不能恰当地反映长期特征。同样,系统可能会遇到试图倾斜某些商品的评分的敌对用户。

另一个示例是围绕隐式反馈构建的系统。在这种解释持续的用户行为的系统中,用户的确切偏好很难量化。因此,该系统使用“可能喜欢该产品”或“可能对该产品不感兴趣”来表示偏好。在这种情况下,将置信度得分与估计的偏好相联系是很有价值的。置信度可以来自描述动作频率的可用数值,例如,用户观看特定节目的时间或用户购买特定物品的频率。这些数值表示每个观察结果的置信度。与用户偏好无关的各种因素都可能导致一次性事件。但是,重复发生的事件更可能反映用户的意见。

矩阵分解模型中给出一个置信度水平,对无意义的观测给出一个较低的权重,对于每一个评分










的置信度为










,最终代价函数形式为:

实验(Experiment)

通过对Netflix用户电影矩阵进行因子分解,可以发现最具描述性的维度来预测电影偏好。可以从矩阵分解中找出前几个最重要的维度,并探索电影在这个新空间中的位置,如下图所示,作者选取了矩阵分解中两个最重要的维度。

电影根据其因子向量进行放置。第一个因子向量(x轴)的一侧是针对男性或青少年观众的低俗喜剧和恐怖电影(Half Baked,Freddy vs. Jason),而另一侧则包含带有严肃色彩和坚强女性的戏剧或喜剧(Sophie’s Choice, Moonstruck)。第二个分解轴(y轴)的顶部是独立的,广受好评的古怪电影(Punch-Drunk Love,I Heart Huckabees),底部是主流的公式化电影( Armageddon,Runaway Bride)。这些边界之间存在有趣的交集:在左上角,独立与低俗相遇的是(Kill Bill)《杀死比尔》和(Natural Born Killers)《天生杀手》,这两部附庸风雅的电影都以暴力主题为背景。在右下角,严肃的女性主导的电影与主流的人群讨好,(The Sound of Music)《音乐之声》。在中间,吸引所有类型的是(The Wizard of Oz)《绿野仙踪》。

下图显示显示了不同的模型和参数数量如何影响RMSE以矩阵分解不断发展的实现方式的性能:普通矩阵分解,添加偏置,增加隐式反馈以及两种添加时间成分的变体。

我们分析可得到结论:更为复杂的矩阵分解模型(其描述涉及更多不同的参数集)更加准确。实际上,时间成分对于建模尤为重要,因为数据中存在明显的时间影响。

总结(Conclusion)

在协同过滤算法中,矩阵分解技术是一种主流的方法。并且模型可以自然地集成数据的许多关键方面,例如多种形式的反馈,时间动态和置信度。

End

▼更多精彩内容,请长按二维码▼

【论文导读】MATRIX FACTORIZATION TECHNIQUES FOR RECOMMENDER SYSTEMS相关推荐

  1. Matrix factorization techniques for recommender systems,Yehuda Koren et al.,2009

    文章目录 1 基本信息 2 引言 3 推荐系统策略 4 矩阵分解方法 5 基本矩阵分解模型 6 学习算法 6.1 随机梯度下降 6.2 交替最小二乘 7 增加偏差 8 额外的输入源 9 时间动态 10 ...

  2. 推荐系统论文笔记(1):Hybrid Recommender Systems:Survey and Experiments

    一.基本信息 论文题目: <Hybrid Recommender Systems:Survey and Experiments> 论文发表时间: 2002, 论文作者及单位:Robin  ...

  3. 【论文导读】2019阿里CTR预估模型---DIEN(深度兴趣演化网络)

    前言 今天分享一篇阿里2019发表在AAAI上的CTR预估的论文<Deep Interest Evolution Network for Click-Through Rate Predictio ...

  4. Learning Tree-based DeepModel for Recommender Systems

    摘要 已经研究了用于推荐系统的基于模型的方法以提供更精确的结果.在具有大型语料库的系统中,预测所有用户 - 项目对的偏好的学习模型的计算量是巨大的,这使得该模型难以直接用于候选推荐生成阶段.为了克服计 ...

  5. 【文章翻译+笔记】Towards the Next Generation of Recommender Systems:A Survey of the State-of-the-Art and Pos

    Towards the Next Generation of Recommender Systems:A Survey of the State-of-the-Art and Possible Ext ...

  6. Matrix Factorization: A Simple Tutorial and Implementation in Python

    本文转自http://www.quuxlabs.com/blog/2010/09/matrix-factorization-a-simple-tutorial-and-implementation-i ...

  7. Non-negative Matrix Factorization 非负矩阵分解

    Non-negative Matrix Factorization 非负矩阵分解 Introduction 定义 非负矩阵分解(non-negative matrix factorization),或 ...

  8. RippleNet:Propagating User Preferences on the KnowLedge Graph for Recommender Systems PPT讲稿

    PPT下载链接:RippleNet 没有c币的小伙伴可以用下面的百度盘下载 链接: https://pan.baidu.com/s/1aOL7lZfaw34eE_RU7GM2lA 密码: w0hm 如 ...

  9. Google推荐系统Wide Deep Learning for Recommender Systems论文翻译解读

    Wide & Deep Learning for Recommender Systems 推荐系统中的Wide & Deep Learning 摘要 Generalized linea ...

最新文章

  1. 5G 信令流程 — UE 状态机
  2. python 标准差_标准差python
  3. spark on yarn 内存分配详解
  4. oracle 插入timestamp
  5. 样式和主题的区别(Styles and Themes)
  6. 别人对程序员的印象都是加班?
  7. 怎样保持sublime text3中的代码copy到CSDN中之后的漂亮的高亮
  8. 从零开始学产品第五篇:三个环境,开发、测试和线上
  9. GitHub 下架 Youtube-dl 遭粉丝疯狂上传源码报复,开源者的权益谁来维护?
  10. opencv +opencv_contrib+CMake+VS2015
  11. 微信朋友圈点赞生成器
  12. 于的繁体字有几种写法_于的繁体字是什么
  13. [BZOJ2177][最小/最大(曼哈顿距离)生成树]曼哈顿最小生成树
  14. 商品详情页html手机,商品详情页.html
  15. 思维导图、流程图制作工具ProcessOn的使用
  16. 小闹乎谈新手必备的撸猫手册
  17. 继续写usb gadget驱动(解决枚举失败问题)
  18. 如何让文字变成语音?推荐三个免费把文字变成音频软件
  19. MYSQL登录遇到的问题:解决ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:3306‘(10061)
  20. RealDWG加载DWG文件

热门文章

  1. python初学者练习(二)斐波那契兔子问题
  2. 缺乏技术专利支撑的小米还能走多远
  3. 中国海洋大学计算机复试上机汇总
  4. STL—queue(队列) 详解
  5. 三菱FX系列 DADD和DSUB指令使用
  6. 3-PHP代码审计——PHPCMSV9.6.1文件下载漏洞
  7. 修复版站长导航源码系统
  8. 固始机器人_固始县耐火砖打包机玄德机器人设计合理
  9. 学习视频、高清影视下载
  10. POJ 1003 Hangover 水题