首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于 itemCF 推荐的理解

推荐系统,一般是用于电商、广告、内容、信息流等推荐平台,以挖掘数据的最大价值。可以提升用户粘性和转化率。而本文提及到的基于内容的协同过滤算法就是一个经典的算法。

基本思想

首先,什么是协同呢?协同在这里指的就是,用集体的智慧来为个体过滤出他需要的信息。

基于物品的协同过滤算法,就是以物品为连接点,给用户推荐那些和他们之前喜欢的物品相似的物品。比如,该算法会因为你购买过《Java从入门到精通》而给你推荐《Java并发编程实战》。不过,基于物品的协同过滤算法并不利用物品的内容属性计算物品之间的相似度,二是通过分析用户的行为数据计算物品之间的相似度。该算法认为,物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都也喜欢物品B。

所以呢,这个算法思想的强大之处就在于,不用考虑目标物品之间的相互关系或者内在联系。只用考虑用户和物品之间的行为数据即可。

计算过程

相似度计算:

简单的计算公式如下

这里,分母|N(i)|是喜欢物品i的用户数,而分子|N(i)∩N(j)|是同时喜欢物品i和物品j的用户数,所以该公式也可以理解为喜欢物品i的用户中有多少比例也喜欢物品j。

在 1 式中,如果出现某种商品火爆,可能会导致计算错误,2式则在一定程度上进行了惩罚。

构建推荐矩阵:

假如说,有 a,b,c,d,e 五个商品,其购买数据如下。

那么按公式计算,a,b 的相似度为

以同样的方式,就可以得到相似度矩阵

下面就是,根据需要被预测的用户已有的记录 ,与相似度对应的数值相乘求和,再排序就能得到对应需要推荐的函数了。比如下面公式就是计算 用户 u 对 物品 j 的兴趣。

这里的 N(u) 是用户喜欢的物品的集合,S(j,K) 是和物品 j 最相似的 K 个物品的集合,w_

w

ji

是物品 j 和 i 的相似度,r_

r

ui

是用户 u 对物品 i 的兴趣。(对于隐反馈数据集,如果用户 u 对物品 i 有过行为,即可令

r

ui

= 1 )

比如,下面为用 u 的一个行为表,

则:

p(u,b) = 0.33*1 +0.31*3 = 1.26

p(u,c) = 0*1 + 0.22*3 = 0.66

所以最终的推荐列表为【b,c,e】

优缺点:

Item-based算法原理是给用户推荐那些和他之前喜欢的物品类似的物品,在推荐方面更加个性化,反映了用户自己的兴趣传承。在用户有新行为时,一定会导致推荐结果的实时变化。

适用范围:长尾物品丰富,用户个性化需求强烈的领域。

优点:可以利用用户的历史行为给用户做推荐解释,可以令用户比较信服。比较适用在物品较少、物品更新速度不会很快、用户的兴趣比较固定和持久的情况下。

缺点:无法避免用户冷启动,需要等待用户接触物品后才给他推荐相关物品,没有办法在不离线更新物品相似度表的情况下将新物品推荐给用户。

与其它常见算法的区别

聚类:

使用聚类算法将兴趣相似的用户归为一类,把推荐问题当做是一个分类问题。对于一个待推荐用户U,找到他所属的分类,将该分类下的所有用户的偏好取平均得到新用户的推荐。部分聚类算法还允许同一个用户属于不同的类别,表示用户具有多种不同程度的爱好。这时对新用户的推荐,根据用户属于不同类别的程度,来进行加权平均。该方法的缺点是推荐的物品,个性化程度不强

贝叶斯网络

贝叶斯网络创建一个网络,节点是一颗决策树,边上是用户的信息。其训练时间较长,但是推断速度非常快。适用于用户兴趣变化不大,模型训练频率不高的场景,不适合用户兴趣变化较快,模型需要快速更新的场景。

User-based协同过滤

又被称为k-nearest neighbor collaborative filtering

算法核心思想是,针对被推荐的用户User,找到和他兴趣最接近的k个“邻居”,然后把邻居喜欢的物品推荐给用户User。人以群分,跟你兴趣相投的人喜欢的东西往往你也会喜欢。(这个是以人为中心,不同于 itemCF)

这个算法有一个缺点是什么呢?因为是用来挖掘不同人的“兴趣”之间的相似度。所以随着用户量的增加,兴趣的广泛,计算用户相似度运算的时间和空间复杂度将快速增长。而且这种结果的可解释性也较差。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200731A008TJ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券