点击上方“蓝字”关注我们
协同过滤(二)
Mar 26, 2020
本期介绍介绍协同过滤中的隐语义模型。
本文约2k字,预计阅读12分钟。
上篇文章【解析协同过滤方法】讲述了协同过滤的概念:只依赖于「过去的用户行为」,例如用户以前的交易或对物品的评分,而不需要创建显式的用户/物品的具体信息,这种方法被称为协同过滤。以及对协同过滤主要的方法之一-----「基于邻域的方法(the neighborhood approach)」进行了详细的阐述,并且分析了「基于用户的协同过滤」与「基于物品的协同过滤」的优缺点。
本篇文章将介绍协同过滤中另一种主要的方法-----「隐语义模型(latent factor model)」。
隐语义模型
自从Netflix Prize比赛举办以来,隐语义模型逐渐成为推荐系统主流的模型算法。其实该算法最早在文本挖掘领域被提出,用于找到文本的隐含语义。它的核心思想是通过隐含特征(latent factor)联系用户兴趣和物品。具体来说是通过将物品和用户都转换为相同的「隐含特征空间(latent factor space)」,从而使它们直接具有可比性。隐含特征空间试图通过根据用户反馈自动推断出的特征(factor)来表征物品和用户,从而解释评分。
参考[1],举个例子,对于电影来说,发现的特征(factor)可能会衡量「明显的维度」,例如喜剧与戏剧、电影中动作的数量、或对儿童的定向;「一些不太明确的维度」,例如角色发展的深度或古怪的程度;亦或者是「完全无法解释的维度」。对于用户来说,每个因素都会衡量用户对在相应电影的喜欢程度。
下图以二维的简化示例说明了这种想法。考虑两个假设维度,分别是女性和男性(x轴)以及严肃(Serious)与逃避现实的(escapist)(y轴)。对于此模型,相对于电影的平均评分,用户对电影的预测评分将等于电影和用户在图表上位置的点积。例如,Gus喜欢《Dumb and Dumber》,讨厌《The Color Purple》,并且将《Braveheart》评为平均水平。请注意,某些电影(例如《Ocean‘s 11》)和用户(例如Dave)的特征在这两个维度上都相当中立。
矩阵分解
矩阵分解(Matrix Factorization)是LFM(隐语义模型)中最主要的方法之一。最开始是Simon Funk等人[2]在2006年Netflix Prize比赛中,使用了Funk-SVD模型。之后一些研究进行了改进,如2008年Koren等人提出的SVD++以及基于邻域方法和SVD的整合[3]、2009年Koren等人[2]提出在基础的矩阵分解中引入用户和物品的偏置、隐式反馈、时间动态性、置信水平来进行建模,(具体可参考另一篇文章【论文导读】MATRIX FACTORIZATION TECHNIQUES FOR RECOMMENDER SYSTEMS)。
接下来我们简单的介绍下以上提到的部分模型:1、最基础的矩阵分解模型;2、添加偏置的矩阵分解模型;3、SVD++模型;
1.基础的矩阵分解模型
矩阵分解模型将用户和物品都映射到维数为 的联合潜在因子空间,并将用户和物品的交互建模为两者之间的内积操作。
定义:对于每一个物品 表征为隐向量 ,每一个用户 表征为隐向量 ,内积 代表了物品 和用户 之间的交互,即用户 对物品 特性的兴趣程度(评分),用户 对物品 的真实评分为 ,评分估计可被公式化为:
为了学习隐向量( 和 ),系统通过最小化正则化后的均方误差:
2.添加偏置的矩阵分解模型
虽然基本的矩阵分解可以捕获用户和物品之间的交互,但是,观察到的许多评分变化是由于与用户或物品相关的影响(称为偏差)所致,而与任何交互无关。例如,典型的协同过滤数据表现出较大的系统性倾向,有些用户给出的评分比其他用户高,有些物品得到的评分比其他项目高,因为有些物品被普遍认为比其他物品更好(或更差)。
因此单纯用内积的交互来解释一个评分值是比较粗糙的。因此,使用偏置来解释用户/物品的自身影响:
其中 被定义为总平均评分(例如单个用户对所有电影的平均评分),参数 和 分别表示物品和用户的偏置,将偏置加入最终的评分中:
评分被分解为四项:总平均得分,物品偏置,用户偏置和物品用户的交互。
故损失函数为:
3. SVD++模型
作者首先将用户(user)关联了两个物品(items)的集合:1、R(u),里面包含了u所有评价过的物品的集合;2、N(u),包含了u所有提供的「隐式偏好」。这里隐式偏好指的是收集用户u的行为信息,如用户的购买或浏览历史记录。
作者在原来的基础矩阵分解模型加入了用户对物品的隐式偏好:
其中 和上个模型定义相同, 是一个和 相同的长度的向量,代表了u对物品j的一个隐式偏好。
作者通过Assymmetric-SVD模型进行简化,具体的可以参考[3]。
总结
在协同过滤算法中,矩阵分解技术是一种主流的方法。并且模型可以自然地集成数据的许多关键方面,例如结合偏置、隐式反馈、置信度等。但随着深度学习在计算机视觉(CV)、自然语言处理(NLP)和语音识别的成功应用,大量的协同过滤研究开始向神经网络偏移。下一篇文章,我会对神经网络在协同过滤上的应用进行一个简单的分析,并对整个协同过滤的概况进行一个总结,并放上自己的代码实现的GitHub,喜欢的希望大家关注一下。
参考文献
[1] Y. Koren, R. Bell and C. Volinsky, Matrix factorization techniques for recommender systems, Computer 42 (2009) 30-37.
[2] S. Funk, “Netflix Update: Try This At Home”, http://sifter.org/simon/journal/20061211.html, 2006.
[3] Yehuda Koren, Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model, KDD’08, August 24–27, 2008.
[4] 项亮.推荐系统实战[M].北京:人民邮电出版社,2012.
扫码关注更多精彩