《推荐系统实践》 4. 冷启动问题
Posted 推荐系统新视野
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《推荐系统实践》 4. 冷启动问题相关的知识,希望对你有一定的参考价值。
4. 冷启动问题
推荐系统需要根据用户的历史行为和兴趣预测用户未来的行为和兴趣,因此大量的用户行为数据就成为推荐系统的重要组成部分和先决条件。因此很多在开始阶段就希望有个性化推荐应用的网站来说,如何在没有大量用户数据的情况下设计个性化推荐系统并且让用户对推荐结果满意从而愿意使用推荐系统,就是冷启动(Cold Start)的问题。
冷启动主要分3类:
-
用户冷启动 用户冷启动主要解决如何给新用户做个性化推荐的问题。当新用户到来时,我们没有他的行为数据,所以也无法根据他的历史行为预测其兴趣,从而无法借此给他做个性化推荐。 -
物品冷启动 物品冷启动主要解决如何将新的物品推荐给可能对它感兴趣的用户这一问题。 -
系统冷启动 系统冷启动主要解决如何在一个新开发的网站上(物品信息远多于用户行为信息)设计个性化推荐系统,从而在网站刚发布时就让用户体验到个性化推荐服务这一问题。
对于这3类不同的冷启动问题,有不同的解决方案。一般来说,可以参考如下解决方案:
4.1. 利用用户注册信息
显而易见,利用用户的注册信息可以很好地缓解注册用户的冷启动问题。用户的注册信息分3种:
-
人口统计学信息 包括用户的年龄、性别、职业、民族、学历和居住地; -
用户兴趣的描述 有一些网站会让用户用文字描述他们的兴趣; -
站外行为数据 比如用户通过豆瓣、新浪微博的账号登录,就可以在得到用户同意的情况下获取用户在豆瓣或者新浪微博的一些行为数据和社交网络数据
基于注册信息的个性化推荐流程基本如下:
-
获取用户的注册信息 -
根据用户的注册信息对用户分类 -
给用户推荐他所属分类中用户喜欢的物品
如图所示新用户,资料显示他是一位28岁的男性,是一位物理学家。然后,查询3张离线计算好的相关表:
-
性别-电视剧相关表。从中可以查询男性最喜欢的电视剧; -
年龄-电视剧相关表,从中可以查询到28岁用户最喜欢的电视剧; -
职业-电视剧相关表,可以查询到物理学家最喜欢的电视剧。
然后,我们可以将用这3张相关表查询出的电视剧列表按照一定权重相加,得到给用户的最终推荐列表。
基于用户注册信息的推荐算法其核心问题是计算每种特征的用户喜欢的物品。也就是说,对于每种特征 ,计算具有这种特征的用户对各个物品的兴趣程度 。有计算两种方法:
物品 在具有 特征的用户中的热门程度
其中 是喜欢物品 的用户集合, 是具有特征 的用户集合
喜欢物品 的用户中具有特征 的比例
通过 我们就可以知道什么样的用户适合推荐什么样的物品,从而可以进行粗粒度推荐,在一定程度上缓解冷启动问题。
4.2. 提供非个性化推荐启动用户需求
解决用户冷启动问题的另一个方法是在新用户第一次访问推荐系统时,不立即给用户展示推荐结果,而是给用户提供一些物品,让用户反馈他们对这些物品的兴趣,用这些反馈启动用户兴趣,然后根据用户兴趣给提供个性化推荐。
一般来说,能够用来启动用户兴趣的物品需要具有以下特点:
-
比较热门 如果要让用户对一个物品进行反馈,就需要选用用户知晓的物品; -
具有代表性和区分性 启动用户兴趣的物品不能是大众化或老少皆宜的,因为这样的物品对用户的兴趣没有区分性; -
具有多样性 在冷启动时,我们不知道用户的兴趣,而用户兴趣的可能性非常多,为了匹配多样的兴趣,我们需要提供具有很高覆盖率的启动物品集合,这些物品能覆盖几乎所有主流的用户兴趣。
上面这些因素都是选择启动物品时需要考虑的,但如何设计一个选择启动物品集合的系统呢?首先,给定一群用户,可以用这群用户对物品评分的方差来度量这群用户兴趣的一致程度。如果方差很大,说明这一群用户的兴趣不太一致,反之则说明这群用户的兴趣比较一致。令 为用户集合 中所有评分的方差,可以通过如下方式度量一个物品的区分度 :
其中, 是喜欢物品 的用户集合, 是不喜欢物品 的用户集合, 是没有对物品 评分的用户集合。
应用上述公式计算所有物品,就可以从中找到具有最高区分度的物品 ,然后将用户分成3类:喜欢该物品、不喜欢该物品、未评价该物品的用户。然后对每类用户再找到最具区分度的物品,然后将每一类用户又各自分为3类,如此反复组织成一颗树。
而在用户冷启动时,我们从根节点开始询问用户对该节点物品的看法,然后根据用户的选择将用户放到不同的分枝,直到进入最后的叶子节点,此时我们就已经对用户的兴趣有了比较清楚的了解,从而可以开始对用户进行比较准确地个性化推荐。
4.3. 利用物品内容信息
物品冷启动需要解决的问题是如何将新加入的物品推荐给对它感兴趣的用户。物品冷启动在新闻网站等时效性很强的网站中非常重要,因为那些网站中时时刻刻都有新加入的物品,而且每个物品必须能够在第一时间展现给用户,否则经过一段时间后,物品的价值就大大降低了。
一般来说,物品的内容可以通过向量空间模型表示,例如对于物品 ,由于物品的内容信息中通常包含一些关键词,所以该模型会将物品表示成一个关键词向量
其中, 就是关键词, 是关键词对应的权重。
在给定物品内容的关键词向量后,物品的内容相似度可以通过向量之间的余弦相似度计算:
不过需要注意的是,如果内容信息不足,关键词很少或者不同,向量空间模型就很难计算出准确的相似度。例如有两篇论文,它们的标题分别是“推荐系统的动态特性”和“基于时间的协同过滤算法研究”,这两篇文章的研究方向是类似的,但是它们标题中没有一样的关键词。换句话说,这两篇文章的关键词虽然不同,但关键词所属的话题是相同的。
在这种情况下,首先需要知道文章的话题分布,然后才能准确地计算文章的相似度。如何建立文章、话题和关键词的关系是话题模型(Topic Model)研究的重点。一种成熟的话题模型是LDA(Latent Dirichlet Allocation)模型。
该模型对一篇文档产生的过程进行了建模,它的基本思想是,一个人在写一篇文档的时候,会首先想这篇文章要讨论哪些话题,然后思考这些话题应该用什么词描述,从而最终用词写成一篇文章。因此,文章和词之间是通过话题联系的。
在使用LDA计算物品的内容相似度时,我们可以先计算出物品在话题上的分布,然后利用两个物品的话题分布计算物品的相似度。比如,如果两个物品的话题分布相似,则认为两个物品具有较高的相似度,反之则认为两个物品的相似度较低。计算话题分布的相似度可以利用KL散度:
4.4. 发挥专家的作用
为了在推荐系统建立时就让用户得到比较好的体验,很多系统都利用专家进行标注。例如让专家给电影进行标注,可以得到以下标注分类:
分类 | 描述 |
---|---|
心情(Mood) | 表示用户观看电影的心情,比如对于《功夫熊猫》观众会觉得很幽默,很兴奋 |
剧情(Plot) | 包括电影剧情的标签 |
类别(Genres) | 表示电影的类别,主要包括动画片、喜剧片、动作片等分类 |
时间(Time/Period) | 电影故事发生的时间 |
地点(Place) | 电影故事发生的地点 |
观众(Audience) | 电影的主要观众群 |
获奖(Praise) | 电影的获奖和评价情况 |
风格(Style) | 功夫片、全明星阵容等 |
态度(Attitudes) | 电影描述故事的态度 |
画面(Look) | 电脑拍摄的画面技术,比如《功夫熊猫》是用电脑动画制作的 |
标记(Flag) | 主要表示电影有没有暴力和色情内容 |
以上是关于《推荐系统实践》 4. 冷启动问题的主要内容,如果未能解决你的问题,请参考以下文章
推荐系统[八]算法实践总结V1:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结冷启动召回复购召回用户行为召回等算法实战