推荐系统常见算法总结
1.基于静态信息的推荐
通过用户登录来源或者相关账号绑定,获取用户之前的社交网站上的信息。与2人口统计学获取特征相区别。
1.1 直接获取用户喜好信息
-
基本原理:利用用户之前的社交网站的信息直接获取用户喜好信息。
-
例子:
-
用户使用微信登录,获取用户发过的朋友圈公开信息,提取与被推荐物品高度相关的信息,进行推荐。
-
用户使用微博登录网易云,发现发过喜欢begin again电影的状态,于是推荐主题曲lost star.
-
用户用微博登录,切关注了xx领域某个类别的一个大v号,则可以推荐该类别。
-
优点:推荐准确。
-
缺点:这种信息不好获取,且不是都能获取。需要一定的物品信息。
1.2 获取用户社交关系信息
-
基本原理:利用用户之前的社交网站的信息直接获取用户好友信息。
-
例子:用户使用微博/微信等登录,获取关注者、好友等信息,把好友的喜好推荐给用户。
-
优点:推荐比较准确。
-
缺点:好友信息不容易获取,且好友的喜好信息不一定有。
2.基于用户特征的推荐(基于人口统计学的推荐)☆
-
基本原理:通过用户的属性特征进行建模,比如年龄,性别等,把用户分为不同的人群,然后对同一类人群把该类人群的共同喜好推荐给新用户。
-
优点:
-
不需要历史行为数据;
-
不需要物品的属性信息。
- 缺点:
- 区分粒度很粗,效果不会特别好。
3.基于物品内容的推荐 ☆
-
基本原理:通过物品的属性特征进行建模,计算物品相似度,然后基于用户行为推荐相似物品。
-
优点:
-
比较直观,物品属性维度越多越准确;
-
覆盖率广。
- 缺点:
-
需要物品的属性信息;
-
物品相似度衡量只考虑物品本身,有一定局限,因为很多推荐内容有很强的主观性,比如音乐书籍电影;
-
需要一定的用户历史喜好信息。
4.协同过滤 ☆
-
基本原理:根据用户的历史行为数据计算用户或者物品的相似度(比如使用余弦相似度),然后进行推荐。
-
优点:
-
不需要任何的用户或者内容的属性特征信息
-
推荐效果的惊喜度、准确度、多样性较好
-
随着用户行为增多,推荐效果也会提升
- 缺点:
-
需要大量、准确的用户行为数据;
-
冷启动问题(新用户/物品没有行为,也找不到类似用户)
-
灰羊问题(个别口味特殊的用户找不到口味类似的用户)
-
因为采用历史行为数据,不易修改,不够灵活
-
覆盖率较低(数据稀疏问题,很多物品没有行为)
4.1 基于用户的CF
基于用户行为计算用户之间的相关性,再通过当前用户行为找到相似度高的用户,然后把他们喜欢的物品推荐给当前用户。
4.2 基于物品的CF
基于用户行为计算物品之间的相关性,再通过当前用户对物品的行为对喜欢的物品找到相似度高的物品,然后推荐给当前用户。
5.因子分解 ☆
- 资料:
-
基本原理:对用户历史行为数据建立用户-物品评分矩阵,然后使用矩阵分解相关算法进行因子分解,得到低维稠密的用户特征矩阵和物品特征矩阵,然后两个矩阵相乘就可以得到估计的得分矩阵。
-
优点:
- 可以处理一定的数据稀疏问题
- 缺点:
-
很依赖历史行为数据量
-
速度可能会非常缓慢,并且计算成本比较高
-
物品相关推荐集更多的是基于行为,不太适合做详情页推荐
6. 深度学习
目前有很多深度学习推荐系统的研究,但是还没有端到端的纯dl的方法。目前我了解到的有:
-
基于电影海报的深度学习方法: 其实也是基于内容的,只是用深度学习来获取海报图像的内容。
-
youtube视频推荐: 整个推荐系统分为候选集生成(也称为搜索/召回)和排序两个阶段。其中召回阶段负责基于用户画像及场景数据从海量的视频库(百万级别)中将相关度最高的资源检索出来,作为候选集; 排序阶段负责基于更加精细的特征对候选集(百级别)进行排序,最终呈现给用户的只是很少一部分数据。
7.其它
- MovieTaster-使用Item2Vec做电影推荐: 把Word2Vec迁移到item-based CF.这篇博文是根据豆瓣的豆列来做的。从自然语言序列迁移到物品集合,丢失了空间/时间信息,还无法对用户行为程度建模(喜欢和购买是不同程度的强行为)。好处是可以忽略用户-物品关系,即便获得的订单不包含用户信息,也可以生成物品集合。而论文的结论证明,在一些场景下序列信息的丢失是可忍受的。