本文介绍几种目前常见的推荐系统的主要思路,后续会针对每个算法结合具体应用场景再具体阐述下。
1.协同过滤推荐算法
- user-CF算法
- item-CF算法
2.基于内容的推荐算法
3.社会化推荐算法
4.混合推荐算法
1. 协同过滤推荐算法
协同过滤推荐算法分为两类:
- user-CF(基于用户的协同过滤算法)
- item-CF(基于物品的协同过滤算法)
1.1 user-CF算法
基于用户的协同过滤算法,一种最古老的算法。给用户推荐和他兴趣相似的其他用户喜欢的物品。
主要包括两个步骤:
- 找到和目标用户兴趣相似的用户集合
- 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户
兴趣相似度的通过计算行为相似度来展示,即将用户的各种行为映射成多维空间的向量,通过计算向量的相似度(常用的有余弦相似度、欧式距离等)得出。
举一个简单的例子:
用户A、B、C兴趣分布如下:
目标:对用户A进行物品推荐
计算思路:将一个用户对所有物品的行为(喜欢、点赞、评论等)转换成向量,计算各用户之间的相似度(比如欧氏距离、余弦相似度等),然后找出前K个最相似的用户,将他们偏好的但是当前用户没有有过行为的物品进行推荐
第一步:用户的行为向量A(1,0,1,0)、B(0,1,0,0)、C(1,0,1,1)(1:代表喜欢,0:代表目前无行为),利用余弦相似度计算可得到用户A与C最相似
第二步:C喜欢物品D,并且A对物品D没有行为,所以将物品D推荐给用户A
结果:将物品D推荐给用户A
1.2 item-CF算法
基于物品的协同过滤算法,目前业界应用最多的算法。给用户推荐和他们之前喜欢的物品相似的物品。并不是利用物品的内容属性计算物品之间的相似度,而是通过分析用户的行为记录计算物品之间的相似度。
主要包括两个步骤:
- 计算物品之间的相似度,利用用户行为
- 根据物品的相似度和用户的历史行为给用户生成推荐列表
举一个简单的例子:
用户A、B、C兴趣分布如下:
目标:对用户C进行推荐
计算思路:将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度,得到物品的相似物品之后,根据用户的偏好来推荐目前用户还没有表现出偏好的物品,得到一个推荐列表
第一步:计算所有用户对于三个物品的偏好向量,物品A(1,1,1)、物品B(0,1,0)、物品C(1,1,0)(1:代表喜欢;0:代表目前无行为),计算3个物品的相似度(可采用余弦相似度计算),得到A与C最相似
第二步:用户C的历史行为是偏好物品A,所以推荐与物品A最相似的,也就是物品C
结果:给用户C推荐物品C
1.3 优缺点对比
2. 基于内容的推荐算法
该算法是根据用户喜欢的物品进行推荐,与item-CF不同的是,它利用的是物品的内容属性,以下将物品统称为item。
主要包括三个步骤:
- 为每个item抽取出一些特征来表示此item
- 利用用户过去喜欢的(或者不喜欢的)item的特征数据,来学习出此用户的喜好数据(即profile)
- 利用上一步得到的用户的profile与候选item的特征,为用户推荐一组相关性最大的item
以电影为例,举一个简单的例子:
推荐目标:现在想对用户A推荐电影
第一步:对A、B、C三部电影抽取特征(本例的粒度很粗,实际应用复杂的多),如下
第二步:已知用户A喜欢电影A,那么通过电影A的特征学习得到用户的偏好:爱情、浪漫
第三步:利用上一步得到的用户的profile,在B和C两部候选电影中,计算相似度最大的(例如采用余弦计算),最终选择电影C
结果:将电影C推荐给用户A
3. 社会化推荐算法
利用社交网络中的社会关系进行推荐,比如朋友关系的相互推荐,将朋友感兴趣的物品推荐给用户,主要应用于QQ、微信、微博这类应用中。此处就了解下概念,不再介绍了。
推荐一篇论文,感兴趣的可以去看看:一种结合推荐对象间关联关系的社会化推荐算法.
4.混合推荐算法
前面推荐的算法各有利弊,在实际使用中,大都是几种算法并行混合使用,才能取得比较不错的使用效果。
简单的介绍就到这里了,实际应用中的算法会结合具体使用场景做出改进,要严谨复杂的多,考虑的各种指标也比较多。这里只是做了一个简单的概念介绍,除了上面介绍的算法之外,还有一些其他的推荐算法,比如基于关联规则的推荐算法等。
系里主要做数据挖掘,自己现在看的比较偏自然语言处理方面,正好赶上了深度学习的大潮。在图片处理领域已经获得成功的深度学习,这两年被不断的应用到了nlp领域。推荐系统也是一个很好的应用方面,不知道有没有把这两方面结合的做法?~
微信公众号:
产品新人学习路 ( i-pm-road),欢迎交流
(๑•ᴗ•๑)