常见推荐算法解析

【转载】推荐算法

作者 佚名 日期 2016-12-09
常见推荐算法解析

一、 个性化推荐算法

  • 基于人口统计学的推荐

定义:根据用户的基本信息发现用户的相关程度,将相似用户喜爱的物品推荐给当前用户。

优点

​ 没有“冷启动”的问题;

​ 不依赖“物品”本身的数据,即这个方法在不同物品的领域都可以使用,它是领域独立的(domain-independent)。

缺点

​ 方法过于粗糙,在对品味要求比较高的领域(图书、电影、音乐)效果不好;

​ 部分个人信息涉及隐私。

  • 基于内容的推荐(常用于咨询)

定义:根据推荐物品或内容的元数据,发现物品或者内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品。(抽取文章中的tag作为关键词)

优点

​ 易于实现,不需要用户数据因此不存在稀疏性和冷启动问题。

​ 基于物品本身特征推荐,因此不存在过度推荐热门的问题。

缺点

​ 抽取的特征既要保证准确性又要具有一定的实际意义,否则很难保证推荐结果的相关性。(豆瓣采用人工维护tag的策略,依靠用户去维护内容的tag的准确性。)

  • 基于关联规则的推荐(常用于电子商务系统)

定义:购买了一些物品的用户更倾向于购买另一些物品。目前关联规则挖掘算法主要从Apriori和FP-Growth两个算法发展演变而来。

优点

​ 转化率比较高。

缺点

​ 计算量大,但可以离线计算;

​ 由于采用用户数据,存在冷启动和稀疏性问题。

​ 存在热门项目容易被过度推荐的问题。

  • 基于协同过滤的推荐(用户、物品)

定义:基于一个“物以类聚,人以群分”的假设,喜欢相同物品的用户更有可能具有相同的兴趣。基于协同过滤的推荐系统一般应用于有用户评分的系统之中,通过分数去刻画用户对于物品的喜好。协同过滤被视为利用集体智慧的典范,不需要对项目进行特殊处理,而是通过用户建立物品与物品之间的联系。

分类

​ 基于用户的推荐:根据所有用户对物品或者信息的偏好(评分),发现与当前用户口味和偏好相似的“邻居”用户群,在一般的应用中是采用计算“K-Nearest Neighboor”的算法;然后,基于这 K 个邻居的历史偏好信息,为当前用户进行推荐。

​ 基于物品的推荐:使用所有用户对物品或者信息的偏好(评分),发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户。基于物品的协同过滤可以看作是关联规则推荐的一种退化,但由于协同过滤更多考虑了用户的实际评分,并且只是计算相似度而非寻找频繁集,因此可以认为基于物品的协同过滤准确率较高并且覆盖率更高。

各自优点:

​ 基于用户的推荐:推荐物品之间在内容上可能完全不相关,因此可以发现用户的潜在兴趣,并且针对每个用户生成其个性化的推荐结果。

​ 基于物品的推荐:应用更为广泛,扩展性和算法性能更好。由于项目的增长速度一般较为平缓,因此性能变化不大。

各自缺点:

​ 基于用户的推荐:一般的Web系统中,用户的增长速度都远远大于物品的增长速度,因此其计算量的增长巨大,系统性能容易成为瓶颈。因此在业界中单纯的使用基于用户的协同过滤系统较少。

​ 基于物品的推荐:无法提供个性化的推荐结果。

区别:

​ 其实基于物品的协同过滤推荐机制是 Amazon 在基于用户的机制上改良的一种策略,因为在大部分的 Web 站点中,物品的个数是远远小于用户的数量的,而且物品的个数和相似度相对比较稳定;同时基于物品的机制比基于用户的实时性更好。但也不是所有的场景都是这样的情况,在一些新闻推荐系统中,也许物品,也就是新闻的个数可能大于用户的个数,而且新闻的更新程度也有很快,所以它的相似度依然不稳定。所以,推荐策略的选择其实也和具体的应用场景有很大的关系。

二、 业界个性化推荐系统

  • Yahoo!Resarch - Web-ScaleRecommendation Systems
  • 淘宝推荐系统
  • 豆瓣猜
  • Hulu的个性化推荐