推荐系统实战——冷启动问题

一、冷启动问题介绍

如何在没有大量用户数据的情况下设计个性化推荐系统并让用户对推荐结果满意从而愿意使用推荐系统,就是冷启动问题。

  • 用户冷启动:如何给新用户做个性化推荐
  • 物品冷启动:如何将新物品推荐给可能对其感兴趣的用户。在新闻网站等时效性很强的网站中非常重要。
  • 系统冷启动:如何在一个新开发的网站上设计个性化推荐,从而在网站刚发布时就让用户体验到个性化推荐服务。没有用户,只有一些物品信息。

解决冷启动问题方法概述:

  • 提供非个性化的推荐
  • 利用用户注册时提供的年龄、性别等数据做粗粒度的个性化。
  • 利用社交账号登录(需要用户授权),导入用户在社交网络上的好友信息,然后给用户推荐其好友喜欢的物品。
  • 要求用户在登录时对一些物品进行反馈,搜集用户对这些物品的兴趣信息,然后给用户推荐那些和这些物品相似的物品。
  • 对于新加入的物品,可以利用内容信息,将它们推荐给喜欢过和他们相似物品的用户。(没有购买记录,如何判断物品相似)
  • 推荐系统冷启动时,引入专家的知识,通过一定的高效方式迅速建立起物品的相关度表。

二、用户冷启动

用户注册时附带信息:

  • 人口统计学信息:包括用户的年龄、性别、职业、民族、学历和居住地;
  • 用户兴趣的描述:有一些网站会让用户用文字或用区域选择来描述他们的兴趣;
  • 从其他网站导入的用户站外行为数据:比如用户通过豆瓣、新浪微博的账号登录,就可以在得到用户同意的情况下获取用户在豆瓣或者新浪微博的一些行为数据和社交网络数据。

基于注册信息的个性化推荐流程基本如下:

(1) 获取用户的注册信息;

(2) 根据用户的注册信息对用户分类;

(3) 给用户推荐他所属分类中用户喜欢的物品;

(4) 若无法找到合适的物品,推荐热门排行榜。

注:该方法中需要统计物品对分类的热门程度,通过如下公式:

Pf,i = |N(i) U(f)| (期中N(i)是喜欢物品的用户集合,U(f) 是具有某种特征的用户集合)

这种方法对热门商品的热门程度往往比较大,在分母中增加一项: |N(i) + α|

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

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

一般来说,能够用来启动用户兴趣的物品需要具有以下特点:

(1)比较热门。如果要让用户对一个物品进行反馈,前提是用户知道这个物品是什么东西;

(2) 具有代表性和区分性。启动用户兴趣的物品不能是大众化或老少咸宜的,因为这样的物品对用户的兴趣没有区分性;

(3)启动物品集合需要有多样性。在冷启动时,我们不知道用户的兴趣,而用户兴趣的可能性非常多,为了匹配多样的兴趣,我们需要提供具有很高覆盖率的启动物品集合,这些物品能覆盖几乎所有主流的用户兴趣。

 

 

三、物品冷启动

    物品冷启动需要解决的问题是如何将新加入的物品推荐给对它感兴趣的用户,这时候可以通过物品之间的语义来计算其相似度,常用的算法有cos相似度和TF-IDF

物品冷启动在新闻网站等时效性很强的网站中非常重要,因为那些网站中时时刻刻都有新加入的物品,而且每个物品必须能够在第一时间展现给用户,否则经过一段时间后,物品的价值就大大降低了。

之前我们介绍了UserCF算法和ItemCF算法。UserCF算法并不对新物品很敏感,在很多网站中,推荐列表并不是给用户展示物品的唯一列表。当一个用户在某个地方发现了新加的物品并对其进行了反馈。通过UserCF算法给类似具有相同兴趣的用户推荐这个物品。这样新加的物品就会源源不断的扩散开来。

但是有些网站中推荐列表就是用户获取新加物品唯一的或者是主要途径。这时就要解决第一推动力的问题。也即是第一个用户在哪发现新加物品的问题。解决这个问题的最简单的办法就是将新加的物品随机的展示给用户,但是这样做显然并不个性化。因此可以考虑利用物品内容信息,将新物品投放给曾经喜欢过和他类似内容的其他物品的用户,这类似于ItemCF思想。不过这是先通过ItemCF找到一个可能对物品感兴趣的用户,然后再通过USerCF推荐给与此用户兴趣类似的其他用户。

如果用ItemCF算法解决物品冷启动问题,就有点麻烦了,因为ItemCF通过用户行为对物品进行相似度的计算,形成物品相似度矩阵。再根据这个相似度矩阵把物品推荐给喜欢过类似这个物品的用户。这个物品相似度矩阵是线下计算好,线上放进内存。从而新物品不会出现在物品相似度矩阵中。解决的办法是频繁的更新相似度矩阵。这是一件非常耗时的事情。为此我们只能通过物品内容来计算物品相似度矩阵。

这里涉及到物品相似度的计算,和ItemCf中物品相似度计算不同的是,对于新物品这里并没有用户数据,所以一般通过物品内容计算相似度。

一般来说,物品的内容可以用向量空间模型表示,该模型会把物品表示成一个关键词向量。对于物品d,他的内容表示成一个关键词向量如下: 
 
其中e是关键词,w是这个词对于权重,其中w的计算公式就是著名的TF-IDF公式,该公式的计算见后文中具体介绍。 

在给定物品内容的关键词向量后,物品内容响度可以通过向量之间的余弦相似度计算

《推荐系统实战》中具体比较了内容过滤算法和协同过滤算法在推荐系统中的实际效果(有准确率、召回率、覆盖率等数据)。

 

补充: TF-IDF计算方法

主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

TFIDF实际上是:

TF词频(Term Frequency):表示词条在文档d中出现的频率

IDF逆向文件频率(Inverse Document Frequency):如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。

因为不同的文章长度不一样,需要进行标准化:

IDF计算公式:

TF-IDF值:

参考:

https://baike.baidu.com/item/tf-idf/8816134?fr=aladdin

猜你喜欢

转载自www.cnblogs.com/NeilZhang/p/9901192.html