前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >近邻推荐之基于物品的协同过滤

近邻推荐之基于物品的协同过滤

作者头像
abs_zero
修改2018-05-26 14:35:16
1.1K0
修改2018-05-26 14:35:16
举报
文章被收录于专栏:AI派AI派AI派

推荐阅读时间:6min~8min 文章内容:基于物品的协同过滤

在了解了基于用户的协同过滤之后,还有基于物品的的协同过滤。它们的原理非常类似。在电商平台中经常看到“看了又看”,“看过它的人还看”等等推荐,这些推荐背后对应的算法大多数都是基于物品的协同过滤。

原理简介

介绍基于物品的协同过滤之前,先来看下基于用户的协同过滤可能带来的问题。

  • 用户数据量比较大时,需要计算的用户之间的相似度会比较多,计算量大
  • 构建用户向量时是使用用户对已消费过的物品的评分/行为来构建的,用户的兴趣是会随时间改变的,导致计算相似用户的频率较高
  • 数据比较稀疏,用户和用户之间有共同的消费行为实际上是比较少的,而且一般都是一些热门物品,对发现用户兴趣帮助也不大

基于物品的协同过滤就是根据用户历史行为来计算出物品之间的相似度,然后会用户推荐跟他消费过的物品类似的物品。那么它是如何解决基于用户的协同过滤存在的上面的问题呢?

  • 物品数量一般都比用户数少很多,所以物品相似度计算一般不会出现性能瓶颈
  • 物品之间的相似度相对静态一点,因为物品之间的相似度变化不会很大
  • 物品对应的消费者数量较大,所以物品矩阵的稀疏程度会好于用户矩阵

实现流程

生成物品向量

  • 只考虑有用户消费过的物品,如果物品未被消费过,不生成向量
  • 每个物品对应的向量的维度和用户数相同
  • 每个物品向量的每个元素的取值可以是行为本身的布尔值,也可以是消费行为量化如时间长短、次数多少、费用大小等,还可以是消费的评价分数

计算物品之间相似度

使用余弦公式来计算。

解释下,x,y 表示两个物品的向量,x_i,y_i 表示物品向量中的每个元素。分母是计算两个物品向量的长度,求元素值的平方和再开方。分子是两个向量的点积,相同位置的元素值相乘再求和。

生成推荐结果

在计算得到物品相似度结果之后,下来要做的是生成推荐结果,在不同的场景,可以生成不同的推荐结果。

相关推荐

相关推荐关心的是当前物品与推荐物品的相关性,所以针对每个物品,可以直接按照与该物品相似度倒排,然后取 Top N 即可。

个性化推荐

个性化推荐需要考虑的是与用户偏好相关的,所以需要针对每个用户计算一个推荐结果,也就是预测用户对每个物品的结果。

解释下上面的公式:

等号左边表示预测的用户 u 和 物品 i 的匹配评分。等号右边表示匹配评分的计算过程。

sim(i,j) 表示物品 i 和 物品 j(当前用户 u 已消费的物品之一) 的相似度,r(u,j) 表示当前用户 u 对 物品 j 的评分。分母是对当前用户 u 已消费过的 m 个所有物品与物品 i 的相似度进行求和,分子是把这当前用户对已消费过的物品 j 的评分,按照相似度加权求和。

注意:这里说的评分是指广义上的评分,可以指普通的 1-5 ,也可以是 1 或 0,表示买过或未买过等布尔类型的行为。

上面的计算过程都是离线的,为每个用户计算出推荐结果之后,保留分数最高的前 N 个作为之后的推荐结果。

总结

基于物品的协同过滤,首先会计算不同物品之间的相似度,然后根据根据不同的应用场景选择不同的推荐结果,“相关推荐”会直接选用与当前物品相似度最高的 Top N,个性化推荐会根据用户已消费过的物品来计算对每个物品的预测评分。

相关推荐:

点击这里领取BAT面试题 ==》:BAT机器学习/深度学习面试300题

点击这里领取AI小抄表 ==》:AI 小抄表福利大放送,快来收藏吧

作者:无邪,个人博客:脑洞大开,专注于机器学习研究。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 脑洞科技栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原理简介
  • 实现流程
    • 生成物品向量
      • 计算物品之间相似度
        • 生成推荐结果
        • 总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档