Python文集修炼之旅

基于协同过滤的推荐系统

2018-10-24  本文已影响411人  ac619467fef3

推荐算法是对我们现实生活影响最大的计算机算法,它影响了我们看到的新闻、广告、以及我们身边现实环境的东西,这些最终决定了我们的态度和生活方式,尤瓦尔.赫拉利在《未来简史》中声明“算法会比我们更了解自己”。

本文介绍了一种较基础的推荐算法,协同过滤Collaborative Filtering。基于用户购买的历史商品推荐--物品协同过滤;基于用户相似用户购买物品的推荐--用户协同过滤。

随着用户信息越来越多被采集,推荐系统可以勾画出一个人的用户画像,现在更多系统用户画像结合现场信息实现推荐系统。下一步我会实现一个基于用户画像的推荐系统。
本文根据课程整理: https://www.imooc.com/learn/1029
作者github代码:https://github.com/birdskyws/CollaborativeFiltering

推荐算法

一、推荐系统作用

帮助用户发现他们想要的物品,另一方面将物品曝光在对自己感兴趣的用户群体面前。

二、如何评价一个好的推荐系统

业务指标
推荐覆盖率

推荐覆盖率 = 去重推荐物品/总物品
推荐覆盖率越高越好。

offline vs online

三、工业界落地场景

  1. 信息流。今日头条、百度feed、UC头条
  2. 电商。猜你喜欢
  3. o2o,LBS。基于地理位置信息的推荐系统。

架构设计

四、工业界系统架构

Item cf 基于物品协同过滤

1. 原理


此系统中存在:

2. 公式

Item CF公式

公式升级1中缩小分子,非活跃用户惩罚程度小,活跃用户惩罚程度大。


时间惩罚

原公式中,只考虑用户消费用一种商品,而没有考虑用户消费同一种商品处在不同时期。如果用户消费了物品i和物品j,如果消费时间间隔越近,那么这次“同现”的权重应该越大,间隔越远权重越小。在分子上除以间隔时间,惩罚时间间隔影响。

User CF 基于用户协同过滤推荐算法

原理

user cf

此系统中存在:

用户A消费过a,d,b三件商品,用户D消费过a,d两件物品。通过计算,用户A和用户D消费过的物品相识度较高,那么认为用户A和用户D兴趣相识,可以将用户A购买过的商品推荐给用户D。上面的例子可以将物品b推荐给用户D。

公式

user cf 惩罚热门商品

如果用户u和用户v,购买过同样的热门商品较多,不能说明两个用户之间的兴趣行为相识。

在usercf公式升级1中,分子中每一项物品除以销售数,那么每一件物品的贡献率范围为1~0,物品销售越多越趋近于0,贡献越小。这样惩罚了热门商品对计算用户协同矩阵的影响。


惩罚购买间隔

如果用户u和用户v,购买过同样的商品的时间间隔越长,那么也应该降低该商品对用户协同矩阵的影响。

ItemCF 与 UserCF的比较

推荐实时性

UserCF实时性差。基于用户相似性矩阵,用户在使用系统过程中,短期少量行为,不会改变与其他用户的相识度(行为没有太多改变,参考Suv),那么就不会推荐新物品。
ItemCF实时性高。当用户行为了一个新的物品,这个新物品的相关物品,根据推荐算法会获得高Rank,很快被推荐。

新物品、新用户推荐

UserCf,不能给新用户推荐,新用户没有行为,不能构建用户协同矩阵,无法根据相似用户给新用户推荐;新物品被一个用户行为,和这个用户相似用户会得到这个新物品推荐。
ItemCf,不能推荐新物品,该物品没有加入协同矩阵。可以给新用户推荐行为物品的相识物品。

推荐系统的可解释性

UserCf,基于相似用户推荐,很难说明相识用户的喜好 。
ItemCF,基于用户点击过的物品进行推荐,解释性好。

ItemCf和UserCf 应用场景

上一篇 下一篇

猜你喜欢

热点阅读