三种推荐算法的介绍

1.推荐算法

1.1.协同过滤

协同过滤是目前应用最广泛的推荐算法,它仅仅通过了解用户与物品之间的关系进行推荐,而根本不会考虑到物品本身的属性。
可分成两类:
1、基于用户(user-based)的协同过滤
2、基于商品(item-based)的协同过滤

1.1.1.基于用户的协同过滤

基本思想:
基于用户对物品的偏好找到邻居用户(相似用户),然后将邻居用户(相似用户)喜欢的东西推荐给当前用户。

计算方法:
将一个用户对所有物品的偏好作为一个向量,计算用户之间的相似度。找到邻居后,根据邻居的相似度权重以及他们对物品的偏好,预测当前用户未涉及的物品,计算得到一个排序的物品列表作为推荐。
相似度即为两个向量之间的距离。距离越小相似度越大。

例子:
如下图,用户A与用户C相似,那么就会给用户A推荐“用户A未涉及但是用户C喜欢的东西”,也就是物品D了。
三种推荐算法的介绍

缺点:
基于用户的协同过滤难以形成有意义的邻居集合。
在很多时候,很多用户两两之间只有很少几个共同评分,也就是用户之间的重合度并不高。而仅有的共同打了分的物品,往往是一些很常见的物品(如票房大片,如生活必需品)。
再者,用户之间的距离可能变得很快,这种离线算法难以瞬间更新推荐结果。

1.1.2.基于物品的协同过滤

算法思想:
基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品。

计算方法:
将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度。
得到物品的相似物品后,根据用户历史的偏好预测当前用户还没有涉及的物品的偏好,计算得到一个排序的物品列表作为推荐。

例子:
如下图,物品A和物品C都被用户A和用户B所查看,所以物品A和物品C比较相似。又由于用户C看了物品A,所以我们就会推荐与之相似的物品C给用户C。
三种推荐算法的介绍

优点:
物品之间的距离可能是根据成百上千万的用户的评分计算得出,往往能在一段时间内保持稳定。因此,这种算法可以预先计算距离,其在线部分能更快地生产推荐列表。

缺点:
不同领域的最热门物品之间经常具有较高的相似度。比如,基于本算法,我们可能会给喜欢《算法导论》的同学推荐《哈利波特》,也就是推荐不同领域的畅销作品,这样的推荐结果可能并不是我们想要的。

1.1.3.实现协同过滤的步骤

1、收集用户偏好

2、找到相似的用户或物品
计算相似度的方式(此部分了解方法即可,考试时并不会要求直接计算):
(1)欧氏距离
(2)余弦距离
(3)Tanimoto 系数
(4)k近邻或基于相似度门槛

3、计算推荐

额外考虑时间因素:
1、在基于商品的协同过滤中:
(1)同一个用户在间隔很短的时间内喜欢的两件商品之间,可以给予更高的相似度。
(2)在描述目标用户偏好时,给其最近喜欢的商品较高权重。
2、在基于用户的协同过滤中:
(1)如果两个用户同时喜欢了相同的物品,那么可以给这两个用户更高的相似度。
(2)在描述邻居用户的偏好时,给其最近喜欢的物品较高权重。

额外考虑空间因素:
1、在基于商品的协同过滤中:
(1)同一个用户在同一个地域内喜欢的两件商品之间,可以给予更高的相似度。
2、在基于用户的协同过滤中:
(2)把类似地域用户的行为作为推荐的主要依据。

1.2.基于内容的推荐

基本思想:
根据推荐物品或内容的元数据,发现物品或者内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品。

例子:
如下图,电影A和C的类型都是爱情和浪漫,那么就会给看过电影A的人推荐电影C
三种推荐算法的介绍

1.3.三种推荐算法的区别

基于用户的协同过滤:
适于物品比用户多、物品时效性较强的情形,否则计算慢。
推荐结果的个性化较弱、较宽泛,但能实现跨领域、惊喜度高的结果。

基于物品的协同过滤:
应用最广泛,尤其以电商行业为典型。
适于用户多、物品少的情形,否则计算慢
在物品冷启动、数据稀疏时效果不佳
推荐精度高,更具个性化
倾向于推荐同类商品,推荐的多样性不足,形成信息闭环

基于内容的推荐:
是最直观的算法
容易受限于对文本、图像、音视频的内容进行描述的详细程度
常借助文本相似度计算
不存在冷启动问题
但推荐精度通常垫底
主题过于集中,惊喜度不足