协同过滤:在推荐领域中,让人耳熟能详、影响最大、应用最广泛的模型莫过于协同过滤。2003年,Amazon发表的论文[1]让协同过滤成为今后很长时间的研究热点和业界主流的推荐模型。
基于邻域的方法
隐语义模型
基于图的随机游走方法
PageRank
基于表示学习的模型
基于匹配方法学习的模型
Jaccard系数:用于计算两个集合之间的相似度,比较适合隐式反馈类型的用户行为。
Cosine相似度:用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似。
Pearson相关性系数:是衡量向量相似度的一种方法。输出范围为[-1, +1], 0代表无相关性,负值为负相关,正值为正相关。
基于用户的协同过滤符合人们直觉上的思想,但是也存在以下缺陷:
(1)当用户数远大于物品数,用户相似度矩阵的开销会特别大。
(2)当用户行为过于稀疏时,找到相似用户的准确度是特别低的。
(3)解释性不强。
该算法认为:物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都也喜欢物品B。
基于物品的协同过滤的解释性强(讨论的是物品的相似性),但也存在着一些缺陷:
(1)当物品数远大于用户数,物品相似度矩阵的开销会特别大。
(2)当有新物品时,没有办法在不离线更新物品相似度表的情况下将新物品推荐给用户;
对于基于邻近的方法,虽然其解释性较强,但是它并不具有较强的泛化能力。处理稀疏向量的能力弱。因此为了解决这个问题,矩阵分解技术被提出。
矩阵分解引入了一个隐向量(latent vector)的概念,通过从物品评分模式中推断出的隐向量来表征物品和用户。隐向量,类似于NLP中的Word2vec技术,也就是后来深度学习中的Embedding向量。隐向量的不同的因子可能表示不同的具体含义,对于电影来说,发现的因素可能会衡量明显的维度,例如喜剧与戏剧,动作量或对儿童的定向;不太明确的尺寸,例如角色发展的深度或古怪程度;亦或者是完全无法解释的尺寸。对于用户来说,每个因素都会衡量用户对在相应电影的喜欢程度。
适用于推荐系统的矩阵分解的主要方法有两种:奇异值分解(Singular Value Decomposition)和梯度下降(Gradient Descent)。
以上等于求解一个最优化问题:
但使用SVD方法存在一些缺陷:
因此传统的奇异值分解也并不适合大规模稀疏矩阵的矩阵分解问题。因此梯度下降法成为了进行矩阵分解的主要方法。
梯度下降法通常是用来求解无约束最优化问题的一种最常用方法,是一种迭代算法。
最基础的模型为:
其中 为用户隐向量(user latent vector), 为物品隐向量(item latent vector)。
损失函数为:
其中 为正则化参数。
MF主要分为两步:
然后使用梯度下降法对其进行优化,同时可以加入正则化来降低模型的过拟合。
2008年,Korean等人[3]提出的SVD++模型。SVD++融合了MF和FISM[4]的优势,直接将Implicit数据反馈到模型中,优化了对用户的表示:
其中 表示用户和物品的偏置, 分别表示用户、物品的隐向量, 表示用户 对所有物品的隐式偏好。
2009年,koren对矩阵分解模型进行总的概括和扩展[5],除了基础的模型,主要加入了一些额外信息:
(1)添加偏置(adding biaes):虽然基本的矩阵分解可以捕获用户和物品之间的交互,但是,观察到的许多评分变化是由于与用户或物品相关的影响(称为偏差)所致,而与任何交互无关。
因此单纯用内积的交互来解释一个评分值是比较粗糙的。因此,使用偏置来解释用户/物品的自身影响:
其中 被定义为总平均评分(例如单个用户对所有电影的平均评分),参数 和 分别表示物品和用户的偏置,将偏置加入最终的评分中:
评分被分解为四项:总平均得分,物品偏置,用户偏置和物品用户的交互。
(2)额外的输入源(additionaL input sources):推荐系统总会面临一个冷启动问题,一个缓解这个问题的方案是添加额外的用户信息源。推荐系统可以使用隐式反馈来深入了解用户的偏好。实际上,无论用户是否愿意提供明确的评分,他们都可以收集行为信息。零售商除了可以提供客户的评价外,还可以使用其客户的购买或浏览历史记录来了解其趋势。
简单起见,定义一个 来表示用户隐式偏好的物品集。对于物品 关联一个向量 (等于对每一个物品的隐式偏好做一个one-hot编码)。因此,一个用户的偏爱对于在 中的物品来说可以形容为一个向量:
归一化后,
另一个信息源是用户属性,定义一个布尔属性 来表示用户 相关的信息,如性别、年龄、组群、所在地的邮编、收入水平等,对于每一个属性可以用一个向量表示, ,一个用户的所有属性表示为:
矩阵分解模型整合输入源,最后的评分形式为:
(3)时间的动态性(temporaL dynamics):随着新选择的出现,物品的感知度和受欢迎度会不断变化。同样,用户的喜好也在不断发展,导致他们重新定义了品味。矩阵分解方法非常适合于对时间效应进行建模,从而可以显着提高准确性。将评分分解为不同的项可以使系统分别处理不同的时间方面。
一个评分项中随着时间的改变发生变化的有:物品偏置 ,用户偏置 以及用户偏好 。最终评分形式可以变为:
矩阵分解有很多优点:
但矩阵分解也存在一定的局限性。总的来说应该是整个协同过滤模型的局限性,无法加入用户、物品属性、上下文特征等边信息,这是的丧失了很多有效信息,无法进行有效的推荐。
例如有一个用户-商品矩阵,将其转换为二部图。
其中,未打分的地方“-”用0表示。
在推荐系统中,其最终的目的是为用户Ui 推荐相关的商品,此时,对于用户Ui ,需要计算商品列表{D1 ,D2 ,...,D5 }中的商品对其重要性程度,并根据重要性程度生成最终的推荐列表。PageRank算法是用于处理图上的重要性排名的算法。
利用PageRank算法计算节点的过程分别为:1.将有向图转换成图的邻接矩阵M;2.计算出链接概率矩阵;3.计算概率转移矩阵;4.修改概率转移矩阵;5.迭代求解PageRank值。
对于上述的PageRank算法,其计算公式可以表示为:
其中,PR(i)表示的是图中i节点的PageRank值,α 表示转移概率(通常取0.85),N表示的是网页的总数,in(i)表示的是指向网页i的网 页集合,out(j)表示的是网页 j指向的网页集合。
用户和物品分别通过神经网络生成各自的Embedding向量,即表示向量。将其作为中间产物,然后再通过内积等交互函数得到匹配分数,进行排序推荐。
【注】:Embedding向量学习与得到匹配分数的学习是分开的。
是一个端到端的模型。
[2]: 项亮.推荐系统实战[M].北京:人民邮电出版社,2012.
[3]: Koren Y. Factorization meets the neighborhood: a multifaceted collaborative filtering model[C]//Proceedings of the 14th ACM SIGKDD international conference on Knowledge discovery and data mining. 2008: 426-434.
[4]: Kabbur S, Ning X, Karypis G. Fism: factored item similarity models for top-n recommender systems[C]//Proceedings of the 19th ACM SIGKDD international conference on Knowledge discovery and data mining. 2013: 659-667.
[5]: Sedhain S, Menon A K, Sanner S, et al. Autorec: Autoencoders meet collaborative filtering[C]//Proceedings of the 24th international conference on World Wide Web. 2015: 111-112.
[6]: Koren Y, Bell R, Volinsky C. Matrix factorization techniques for recommender systems[J]. Computer, 2009, 42(8): 30-37.
[7]: He X, Liao L, Zhang H, et al. Neural collaborative filtering[C]//Proceedings of the 26th international conference on world wide web. 2017: 173-182.
[8]: He X, Du X, Wang X, et al. Outer product-based neural collaborative filtering[J]. arXiv preprint arXiv:1808.03912, 2018.
推荐阅读
征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)
完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)
模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法
文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化
斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。
阅读至此了,分享、点赞、在看三选一吧🙏