认识推荐系统的关键技术

2,337 阅读6分钟

在正式介绍推荐系统之前,我想和大家分享一个经典购物场景:要买一包薯片?

薯片

  • 若你在一家24小时便利店里,你完全可以依靠自己,浏览所有货架上的商品,找到自己想要的薯片。
  • 若你在一家规模较大的超市里,你就需要借助商品的分类信息了,才能避免在众多的货架间找来找去。
  • 若你是在使用电商类应用,你不仅需要分类信息,还需要搜索功能,才能快速地找到,自己想要的那个品牌的薯片。

通过上面的描述,我们不难发现,人们在面对不同体量的信息时,需要配套的信息服务,才能有效地满足需求。

除此之外,上面的购物场景里有一个隐藏的限定条件,就是有一个明确的购物需求,即买一包薯片。然而,很多时候我们并没有这么明确的需求,只是随便逛逛而已。

这便是推荐系统能够大展拳脚的土壤:

  • 存在内容、商品等信息过载的情况
  • 用户大部分时间没有明确的需求

推荐系统的价值则体现在两个维度上:

  • 帮助用户发现之前没有接触过,但会喜欢的内容或物品
  • 让长尾的内容或物品,得到更多的曝光机会,提升点击活跃度

要想实现推荐系统的价值,究其本质是做好排序,而排序的前提是,能够对用户的喜好进行预测,而预测的依据则来自于用户的历史行为。

点赞

虽然推荐系统无法知晓用户脑中的所思所想,但用户的行为却可以被客观、准确地记录下来,而行为的背后所折射出的,恰恰就是用户的真实想法。

到此,推荐系统的任务就已经很明确了,就是如何利用用户的历史行为数据,去为用户提供个性化的内容或物品,预测潜在的点击。

用户的历史行为数据就像一堆食材,如何烹饪才能做出一桌好菜,是需要符合菜谱的客观要求的,即前提假设。

而推荐的前提假设是“物以类聚,人以群分”。我们利用数据对内容或物品进行分类,对用户进行分组,以此为推荐的候选集合,再使用相似度作为推荐的权重值,这就是推荐系统的大体思想框架,当然会很多细节不同的实现方案。

基于协同的推荐

所谓的协同,就是关联单一用户与全平台用户的行为,为其找到““臭味相投”的人、内容或物品。

热门排行榜,就是一个典型的协同过滤的应用场景,只是候选集合的粒度很大,且没有去重而已。

协同又分为用户协同物品协同

用户协同

用户协同

用户协同的前提假设是,如果两个用户的历史行为很相似,那么可以说明他们是兴趣相似的人,自然彼此间存在大概率可推荐的内容或物品,体现出了更社会化的推荐。

社会化推荐,即让好友给自己推荐内容或物品,更容易发现一些新鲜感强的东西。

物品协同

物品协同

物品协同的前提假设是,每个用户的兴趣都局限在某几个领域,如果两个物品属于一个用户的兴趣列表,那么这两个物品也就限制在某几个领域内。

而如果两个物品属于很多用户的兴趣列表,那么它们大概率属于同一个领域,因此相似度极大,可以用作推荐理由,则体现出了更个性化的推荐。

物品协同相比用户协同,其扩展性更强,因为平台的物品数要远少于平台的用户数,物品增长率要远低于用户增长率,物品相似度计算要远易于用户相似度计算,所以优先选择物品协同推荐。

同时,还需要注意,热门的内容或物品,对协同的干扰,因为热门的东西会出现在大多数用户的兴趣列表里,所以它们会关联到任何内容或物品。我们需要适当地对热门东西进行人工干预,消弱其影响力。

协同推荐,存在一个致命的缺陷,就是无法应对冷启动,新加入的用户或物品没有足够的历史行为数据,所以无法计算相似度。

为了解决冷启动问题,我们就需要一套新的方案 —— 基于内容的推荐。

基于内容的推荐

内容或物品本身就会携带信息,我们只要能够充分利用这些信息,完成相似度计算,就可以延续之前的推荐策略。

分类、标签的粒度,直接影响着基于内容的推荐效果,原因也很简单,粒度越细,区分度也就越高,也就越个性化。

标签是一种无层次化结构的,用来描述信息的关键词,它可以用来描述物品的语义。

通常的做法,是可以通过对物品的内容进行挖掘,提取关键词,用关键词向量代表物品,进而利用余弦定理计算相似度。

词云

我们还可以利用之前协同过滤的思想,对物品上的关键词或标签进行优化,当两个关键词或标签同时出现在很多物品集合中时,我们就可以认为它们具有较大的相似度,可以统一化。

值得注意的是,协同过滤体现出了凝固度的思想,如果两个物品在一起的概率远大于随机的概率,那么它们之间必然存在相关性。这个思想可以帮助我们解决很多问题。

后记

除了上面的两种推荐方案外,如果我们还想进一步提高效果,就不得不考虑到上下文信息了,同时使用上预测模型(DeepFM、XGB等)

还有受到Word2Vec的启发,我们可以利用用户的历史行为数据,通过随机游走,形成用户或物品的序列数据,完成embedding,这样就可以更容易、更有效的计算相似度了,即 Graph Embedding 。

上下文信息,包含用户访问时间、地点等额外的影响用户决策的因素,作为重要的特征,加入到模型之中。比如:季节效应,在夏天,羽绒服就很难销售。

推荐系统容易造成信息茧房,因此需要适时地进行人工干预,而作为用户也最好时不时浏览一下多元的信息。

最后,安利大家一本掘金小册《深入理解NLP的中文分词:从原理到实践》,让你从零掌握中文分词技术,踏入NLP的大门。

如果因为以上内容对你有所帮助,希望你帮忙点个赞、转个发、评个论。