快捷搜索:  汽车  科技

协同过滤算法优缺点:重温经典推荐算法

协同过滤算法优缺点:重温经典推荐算法举个看电影的例子,你发现有一个人,和你一样都喜欢看《西虹市首富》、《疯狂外星人》,《人在囧途》等电影,那么他喜欢的另一部你没看过电影《夏洛特烦恼》,你大概率也是喜欢的。当收集的数据越多,能找到和你相似的人也越多,那么给你推荐的物品也就越精准和丰富。User-based是最早被提出的,其原理是,当为一个用户推荐物品时,首先找到这个用户的相似用户,把相似用户喜欢的推荐给你。正所谓,物以类聚人以群分,和你相似的人喜爱的东西,你大概率也是喜欢的。那么如何计算用户和用户的相似度呢?可以通过两个用户共同喜欢的物品数量来衡量,数量越多,那么相似度也越大。协同过滤算法思想协同过滤,在学术界通常分为两类,一类是Memory based 协同过滤,一类是Model based协同过滤。Memory based 的原理是通过所有用户对于所有物品的行为数据,利用统计挖掘的方法,来计算用户对于其他物品的偏好程度。而

当你打开一款app,不论是今日头条、微博、抖音、还是淘宝,你所看到的,都是经过推荐系统根据你的兴趣爱好,个性化计算得到的内容。

协同过滤算法优缺点:重温经典推荐算法(1)

推荐系统为什么会大行其道,关键在于它提升了人和内容的匹配效率,在大数据的时代下,一个人面对成千上万的信息,想要找到自己喜欢的内容太难了,推荐系统高效的解决了这一命题。

推荐算法在过去的二十多年里,经过了长足的发展,从早期的基于内容标签的推荐,到基于协同过滤的推荐,再到今天基于深度表征学习的推荐等,推荐算法已经发展的很成熟了。

其中,协同过滤(Collaborative Filtering)算法在推荐领域中,一直处于举足轻重的地位,它的有效性、简单性、拓展性,使它直到今天都广泛应用大部分推荐场景中。本文就来深入浅出地介绍一下协同过滤的算法原理。

协同过滤算法思想

协同过滤,在学术界通常分为两类,一类是Memory based 协同过滤,一类是Model based协同过滤。Memory based 的原理是通过所有用户对于所有物品的行为数据,利用统计挖掘的方法,来计算用户对于其他物品的偏好程度。而Model based方法,更多的是利用机器学习模型,例如分类模型、回归模型等,来预测用户对于物品的偏好得分,然后进行偏好分排序,推荐出分最高的若干物品。

本篇文章重点介绍Memory based 协同过滤算法。Memory based 协同过滤又分为两种方法,一种是user-based,一种是item-based。

协同过滤算法优缺点:重温经典推荐算法(2)

User-based是最早被提出的,其原理是,当为一个用户推荐物品时,首先找到这个用户的相似用户,把相似用户喜欢的推荐给你。正所谓,物以类聚人以群分,和你相似的人喜爱的东西,你大概率也是喜欢的。那么如何计算用户和用户的相似度呢?可以通过两个用户共同喜欢的物品数量来衡量,数量越多,那么相似度也越大。

举个看电影的例子,你发现有一个人,和你一样都喜欢看《西虹市首富》、《疯狂外星人》,《人在囧途》等电影,那么他喜欢的另一部你没看过电影《夏洛特烦恼》,你大概率也是喜欢的。当收集的数据越多,能找到和你相似的人也越多,那么给你推荐的物品也就越精准和丰富。

协同过滤算法优缺点:重温经典推荐算法(3)

再说item-based,其在01年被亚马逊首次提出,用于其电子商务网站的商品推荐。其方法思路正好和user-based反过来,其原理是,当给一个用户推荐物品时,首先找到这个用户历史感兴趣的物品,然后在找到这些历史物品的相似物品,然后推荐给用户。

协同过滤算法优缺点:重温经典推荐算法(4)

而如何计算物品和物品之间的相似度呢?是通过用户的行为计算得到的。通常,如果有两个物品被一些用户同时感兴趣,那么我们认为这两个物品是相似的,而且同时感兴趣的人越多,这两个物品也越相似。

算法实现

协同过滤的思想十分朴素,其本质是用到了群体行为的智慧,通过群体行为,来预测用户和物品之间的连接关系。那么如何实现这个算法呢?下面介绍。

首先,我们将用户和物品的关系抽象成一个二维表格(矩阵),每一行代表一个用户,每一列代表一个物品。表格中的每一个元素,代表这个用户对这个物品的评分,例如看过打1分,点赞2分,收藏3分,购买4分,好评5分等。其中,因为一个用户看过的物品是有限的,也就是用户对大部分物品是没有任何行为的,所以表格中大量的元素是空的。

协同过滤算法优缺点:重温经典推荐算法(5)

接下来,就是如何给用户推荐物品了。如果是user-based,首先我们需要计算用户之间的相似度,在这个矩阵中,假设矩阵是m*n的,即一共m个用户,n个物品。每一行代表一个用户对所有物品的评分,可以看作这一行代表了这个用户的兴趣特征,即一个n维的特征向量。那么用户之间的相似度,就可以用特征向量之间的相似度衡量。向量之间的相似度,有很多计算方法。下面列举两种:

1. 杰卡德系数,定义为:AB两个向量都大于0的维度个数,除以A或B大于0的维度个数

协同过滤算法优缺点:重温经典推荐算法(6)

2. 余弦距离,定义为两个向量AB间夹角的余弦值

协同过滤算法优缺点:重温经典推荐算法(7)

计算出用户与用户之间的相似度后,然后选取K个最相似的用户,再选取这些相似用户中评分最高的物品就可以推荐给当前用户了。

如果是item-based方法,首先需要计算物品与物品的相似度。同上,我们用矩阵中的每一列的所有元素,即所有用户对这个物品的评分,作为物品的特征,即一个m维向量。那么物品之间的相似度,依旧用特征向量相似度衡量。计算后,我们找到当前用户评分最高的几个物品,然后基于这些物品,按照物品之间的相似度,查找K个最相似的物品,推荐给用户。

总结

以上,就是Memory based 协同过滤算法的基本原理和简单的实现过程了。那么问题来了,究竟user-based的方法好,还是item-based的方法好呢?其实要看使用场景。

User-based方法的优点在于,其擅长挖掘一些“小众偏好”,其推荐的结果也会更加新颖,能够覆盖一些长尾物品。但是其缺点在于,当用户规模较大时,一旦用户有新的行为或者产生新的兴趣时,user-based方法来不及计算用户相似度,导致系统不能及时捕捉用户的实时兴趣,推荐出用户实时感兴趣的物品。所以user-based的方法,更加适合用户规模较小,或者用户的兴趣风格保持稳定的垂直领域场景中,例如电影推荐、小说推荐等。

Item-based方法则不存在这一问题,因为物品的属性本身就是相对固定的,物品之间的相似度也是相对稳定的。当用户对一个新的物品感兴趣时,系统根据这个物品可以快速找到相似物品推荐给用户,所以item-based更加适用于用户兴趣多变的场景中,例如购物网站、新闻网站等。

Item-based也有其弊端,就是热门物品往往会有很多用户看过,那么热门物品也就和很多物品建立了相似性的连接。那么在推荐时,热门物品很容易被推荐,从而产生“马太效应”,导致推荐集中在热门物品,长尾物品得不到曝光的机会,这个也叫做“哈利波特效应”(因为哈利波特是最热卖的书籍)。这一点上, user-based方法要更有优势。

后续

综上,我们总结下Memory based 协同过滤,其直接基于数据来进行计算推荐,方法简单有效,如果想搭建一套推荐系统,Memory based 协同过滤能够帮助你快速启动。

不过,当用户物品规模较大时,用户物品矩阵会变得十分稀疏,此时用户和物品的特征向量也十分稀疏,导致相似度计算时结果较少,从而推荐不出物品,尤其是遇到新用户或者新物品进行冷启动时,这一现象更为严重。

为了解决这一问题,model based 协同过滤,可以通过模型来预测用户对于未知物品的评分,然后进行推荐,并且相比Memory based,model based能够达到更高的准确率。我们将在下一篇着重介绍。

猜您喜欢: