推荐系统实践学习系列(三)推荐系统冷启动问题

冷启动问题的出现

如果在一开始的阶段就希望有个性化推荐应用的网站,在没有大量用户数据的情况下设计个性化推荐系统并且让用户对推荐结果满意从而愿意使用推荐系统

冷启动问题的分类

  • 1 用户冷启动
    新用户无行为数据,无法根据新用户的历史行为预测其兴趣的问题
  • 2 物品冷启动
    新的物品入库的时候推荐给对该物品感兴趣的用户的问题
  • 3 系统冷启动
    一个新开发的网站(无用户、无用户行为,只有物品信息) 的情况下设计个性化推荐系统

针对以上三种物品冷启动问题,可参考如下解决方法:

  • 一:提供非个性化的推荐,简单例子为热门排行,等到用户数据收集到一定的时候,再切换为个性化推荐
  • 二:利用用户注册时提供的年龄、性别等数据做粗粒度的个性化
  • 三:利用用户的社交账号登陆,导入用户在社交网站上的好友信息,然后推荐给用户推荐其好友喜欢的物品
  • 四:要求用户在登录时对一些物品进行反馈,搜集用户的兴趣信息,然后给用户推荐和物品相似的物品
  • 五:对于新加入的物品,可以利用内容信息,将它们推荐给喜欢过和它们相似的物品的用户
  • 六:在系统冷启动时,可以引入专家的知识,通过一定的高效的方式迅速建立起物品的相关度表

针对冷启动给出的某些方案

(一)利用用户注册信息

用户的注册信息分3种:
1 人口统计学信息:用户年龄、性别、职业、民族、学历和居住地
2 用户兴趣的描述:让用户用文字描述他们的兴趣
3 从其他网站导入用户站外行为数据:比如:豆瓣、新浪微博

基于注册信息的个性化推荐流程基本如下:
(1) 获取用户的注册信息;
(2) 根据用户的注册信息对用户分类;
(3) 给用户推荐他所属分类中用户喜欢的物品

(二)选择合适的物品启动用户的兴趣

在新用户第一次访问推荐系统时,不立即给用户展示推 荐结果,而是给用户提供一些物品,让用户反馈他们对这些物品的兴趣,然后根据用户反馈给提供个性化推荐。

一般来说,能够用来启动用户兴趣的物品需要有以下特点:
(1) 比较热门;
(2)具有代表性和区分性;
(3)启动物品集合需要有多样性;

(三)利用物品的内容信息

基于物品的内容信息主要介绍了两种主要的推荐算法:UserCF和ItemCF

UserCF针对物品冷启动问题并不敏感

,UserCF在给用户进行推荐时,会首先找到和用户兴趣 相似的一群用户,然后给用户推荐这一群用户喜欢的物品。在很多网站中,推荐列表并不是给用 户展示内容的唯一列表,那么当一个新物品加入时,总会有用户从某些途径看到这些物品,对这 些物品产生反馈。那么,当一个用户对某个物品产生反馈后,和他历史兴趣相似的其他用户的推 荐列表中就有可能出现这一物品,从而更多的人就会对这个物品产生反馈,导致更多的人的推荐 列表中会出现这一物品,因此该物品就能不断地扩散开来,从而逐步展示到对它感兴趣用户的推 荐列表中

ItemCF针对物品冷启动问题算一个严重的问题

因为ItemCF算法的原理是给用户 推荐和他之前喜欢的物品相似的物品。ItemCF算法会每隔一段时间利用用户行为计算物品相似度 表(一般一天计算一次),在线服务时ItemCF算法会将之前计算好的物品相关度矩阵放在内存中。 因此,当新物品加入时,内存中的物品相关表中不会存在这个物品,从而ItemCF算法无法推荐新 的物品。解决这一问题的办法是频繁更新物品相似度表,但基于用户行为计算物品相似度是非常 耗时的事情,主要原因是用户行为日志非常庞大。而且,新物品如果不展示给用户,用户就无法 对它产生行为,通过行为日志计算是计算不出包含新物品的相关矩阵的。为此,我们只能利用物 品的内容信息计算物品相关表,并且频繁地更新相关表(比如半小时计算一次)

(四)发挥专家的作用

针对电影系统,我们可以让专家对电影进行标记,每 个电影都有大约50个基因,这些基因来自大约1000个基因库。然后,在专家标记一定的样本后, Jinni会使用自然语言理解和机器学习技术,通过分析用户对电影的评论和电影的一些内容属性对 电影(特别是新电影)进行自己的标记。同时,Jinni也设计了让用户对基因进行反馈的界面,希 望通过用户反馈不断改进电影基因系统。


总结的有些粗浅,更多更详细的可以翻看《推荐系统实践》

推荐阅读更多精彩内容