推荐系统--冷启动问题
这两天把《推荐系统实践》差不多看完了,看下来整体感受就是,这真的是一本实践的书,一点花里胡哨的东西都没有,从头教你搭一个不用深度学习的推荐系统框架,真干货。今天要谈的问题是冷启动。
关于冷启动问题
首先说什么叫冷启动,简单的来讲,冷启动就相当于初始化,初始化需要做哪些事情,这就是冷启动问题。
冷启动分为三类,分别是用户冷启动,物品冷启动,和系统冷启动。
这三个问题其实就是怎么对新的用户,新的物品,新的系统做初始化。比如说,来了一个新用户,要给别人推荐什么东西。
通常的解决方案的话,就是提供 非个性化的推荐,最简单就是什么热门推荐什么,等收集用户一定的信息之后,再可以做个性化的推荐。
关系搜集信息
其实这个搜集信息,是这本书后面3个章节讲的主要内容,后面就在讲如何利用好搜集的信息做推荐。这里简单的提了下。
那么可以搜集用户或者系统或者物品的哪些信息呢。
- 利用用户注册时提供的年龄、性别等数据做粗粒度的个性化。
- 利用用户的社交网络账号登录(需要用户授权),导入用户在社交网站上的好友信息,然后给用户推荐其好友喜欢的物品。
- 要求用户在登录时对一些物品进行反馈,收集用户对这些物品的兴趣信息,然后给用户推荐那些和这些物品相似的物品。
- 对于新加入的物品,可以利用内容信息,将它们推荐给喜欢过和它们相似的物品的用户。
- 在系统冷启动时,可以引入专家的知识,通过一定的高效方式迅速建立起物品的相关度表。
1.用户冷启动
用户冷启动,一开始能用到的信息就是注册信息。
基于注册信息的个性化推荐流程基本如下:
- 获取用户的注册信息;
- 根据用户的注册信息对用户分类;
- 给用户推荐他所属分类中用户喜欢的物品。
这里不展开将怎么用这些东西,后面会单独写一篇文章来介绍这个。
2.物品冷启动
物品冷启动需要解决的问题是如何将新加入的物品推荐给对它感兴趣的用户。这里就可以利用ItemCF和UserCF了,但是这也暴露了这两种算法的问题。
比如对于ItemCF算法来说,因为ItemCF算法的原理是给用户推荐和他之前喜欢的物品相似的物品。ItemCF算法会每隔一段时间利用用户行为计算物品相似度表(一般一天计算一次),在线服务时ItemCF算法会将之前计算好的物品相关度矩阵放在内存中。因此,当新物品加入时,内存中的物品相关表中不会存在这个物品,从而ItemCF算法无法推荐新的物品。解决这一问题的办法是频繁更新物品相似度表,但基于用户行为计算物品相似度是非常耗时的事情,主要原因是用户行为日志非常庞大。而且,新物品如果不展示给用户,用户就无法对它产生行为,通过行为日志计算是计算不出包含新物品的相关矩阵的。为此,我们只能利用物品的内容信息计算物品相关表,并且频繁地更新相关表(比如半小时计算一次)。
这里就可以用万年不变的KNN。(我发现KNN的思想真的贯穿整个机器学习)
3.系统冷启动
系统冷启动的问题,一般就需要结合具体业务和一定的先验知识了。
书里介绍的例子是一个音乐推荐网站。首先需要人工或者半人工(爬别人的标签)对这些音乐做特征工程,然后进行向量(余弦)相似度计算,得到一个矩阵(上篇文章我同学跟我说,隐语义模型就是一个矩阵分解,真的就是这么回事,大家去好好看看)。
冷启动就是以上问题,下次会介绍如何具体利用数据来做推荐(有点类似于特征工程)。