美文网首页
推荐系统 - 协同过滤算法

推荐系统 - 协同过滤算法

作者: nlpming | 来源:发表于2021-11-01 17:21 被阅读0次

简介

  • 协同过滤算法(Collaborative Filtering, CF)最早流行于Amazon将协同过滤算法用于商品推荐《Amazon.com recommendations: item-to-item collaborative filtering》;“协同过滤”就是协同大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐过程; 协同过滤一般分为:基于用户的协同过滤(UserCF)和基于物品的协同过滤(ItemCF);

协同过滤原理

  • 假设以商品推荐为例,下图中用户为:A,B,C,D,商品为:a,b,c,d;假设现在需要判断是否将商品c推荐给用户X;用户对商品的行为存在点赞、踩两种行为;可以将点赞设置为1,踩设置为-1,没有设置为0,或者取评分的均值;
协同过滤例子.png

基于用户的协同过滤(UserCF)

  • 基本思想:找到用户X最相似的Top n的用户,然后综合相似用户对商品c的评价,得出用户X对商品c的评价;
  • 用户相似度计算:可以采用余弦相似度、皮尔曼相关系数等; 在对传统协同过滤改进的工作中,研究人员也是通过对相似度定义的改进来解决传统的协同过滤算法存在的一些缺陷。下式中,i,j分别表示用户i,j对应的向量。R_{i,p}表示用户i对物品p的评分,\overline{R}_i表示用户i对所有物品的平均评分,P代表所有物品的集合。
    sim(i,j) = cos(i,j) = \frac{i*j}{||i||*||j||}
    sim(i,j) = \frac{\sum_{p \in P} (R_{i,p} - \overline{R}_i) (R_{j,p} - \overline{R}_j)}{\sqrt{\sum_{p \in P}(R_{i,p} - \overline{R}_i)^2} \sqrt{\sum_{p \in P}(R_{j,p} - \overline{R}_j)^2}}
  • 最终用户u对物品p的评分计算公式如下,在获得用户u对不同物品的评价得分后,根据得分进行排序就得到推荐列表。 其中,w_{u,s}表示用户u与用户s的相似度,R_{s,p}表示用户s对物品p的评分。
    R_{u,p} = \frac{\sum_{s \in S} (w_{u,s} * R_{s,p})}{\sum_{s \in S} w_{u,s}}
  • 基于用户的协同过滤算法缺点:(1)在互联网应用的场景下,用户数量往往远远大于物品数,而UserCF需要维护用户相似度矩阵以快速找出Top n相似用户。该用户相似度矩阵的存储开销非常大;(2)用户历史数据往往非常稀疏,对于只有几次购买或者点击行为的用户来说,找到相似用户的准确度是非常低的;这导致UserCF不适用于那些正反馈获取较困难的应用场景(比如酒店预定、大件商品购买等低频应用);

基于物品的协同过滤(ItemCF)

  • 基本思想:通过计算共现矩阵中物品列向量的相似度得到物品之间的相似矩阵,再找到用户的历史正反馈物品的相似Top k物品组成相似物品集合。对相似物品集合中的物品,利用相似度分值进行排序,生成最终的推荐列表。
  • 最终用户u对物品p的评价得分如下: 其中H是目标用户的正反馈物品集合,w_{p,h}是物品p与物品h的物品相似度,R_{u,h}表示用户u对正反馈物品h的评分。
    R_{u,p} = \sum_{h \in H} w_{p,h} * R_{u,h}
  • 由于UserCF技术上的两点缺陷,无论是Amazon还是Netflix,都没有采用UserCF算法,而采用了ItemCF算法实现其最初的推荐系统。

UserCF与ItemCF的应用场景

  • UserCF基于用户相似度进行推荐,使其具备更强的社交特性,用户能够快速得知与自己兴趣相似的人最近喜欢的是什么。即使某个兴趣点以前不在自己的兴趣范围内,也有可能通过朋友的动态快速更新自己的推荐列表。 对于新闻推荐场景,相比用户对不同新闻的兴趣偏好,新闻的及时性、热点性往往是其更重要的属性,而UserCF正适合于发现热点,以及跟踪热点的趋势。
  • ItemCF更适用于兴趣变化较为稳定的应用,比如Amazon的电商推荐场景中,用户在一段时间内偏好一类商品,此时用物品相似度为其推荐相关物品是契合用户动机的。

协同过滤下一步发展

  • 协同过滤是一个非常直观、可解释性很强的模型,但它并不具备较强的泛化能力。热门的物品具有很强的头部效应,容易跟大量物品产生相似性;而尾部的物品由于特征向量稀疏,很少与其他物品产生相似性,导致很少被推荐;
  • 矩阵分解算法: 为了解决上述问题,同时增加模型的泛化能力,矩阵分解技术被提出。该方法在协同过滤共现矩阵的基础上,使用更稠密的隐向量表示用户和物品,挖掘用户和物品的隐含兴趣和特征,在一定程度上弥补了协同过滤模型处理稀疏矩阵能力不足的问题。
  • 逻辑回归等模型: 协同过滤仅利用用户和物品的交互信息,无法有效地引入用户年龄、性别;商品描述、分类、当前时间等一系列用户特征、物品特征和上下文特征,这无疑造成了有效的信息遗漏。逻辑回归模型能够很好的综合不同类型的特征。

参考资料

相关文章

网友评论

      本文标题:推荐系统 - 协同过滤算法

      本文链接:https://www.haomeiwen.com/subject/atrpaltx.html