143|数据科学家必备套路之二:推荐套路
2018-07-16洪亮劼来自北京
《AI技术内参》
在上一期的分享里我们讨论了做搜索产品的套路,给你介绍了多轮打分、高频和长尾以及三大
模型套路。你有没有感受到这些高于某一个具体模型的套路的重要性呢?
今天,我们来看看推荐的一些套路。
多轮打分套路
上一篇我们提到,想要构建一个搜索引擎,应该立刻想到基于多轮打分的架构,有这个意识就
是一个基本套路。
其实这个套路对于推荐,也是适用的。
把推荐问题构建成一个多轮打分的“类搜索”问题,其实是推荐在工业界应用的一个非常重要
的套路。
这个思路的好处是把搜索和推荐问题给归一化了。也就是说,我们可以依靠同样一套软件架构
来解决两大类相似的问题。搜索是有关键词的推荐,而推荐则是无关键词的搜索。虽然这是一
种相对比较简化的看待这两种问题的方式,但是统一的架构在工程上面可以带来非常多的好
处,比如重复构建相似的特征工程的流水线,以及更重要的如何优化索引等工程,这些都可以
很快地应用在搜索和推荐这两个重要的场景上。
当然,在工程以外还有其他好处。在学术界,关于推荐系统搭建的方法往往是一种独立的模
型,然后搜索系统又是另外一种独立的模型。这些模型之间缺乏能够系统性联系起来的纽带。
把推荐问题看成是多轮打分的搜索问题之后,我们就找到了一种简单又自然的方法,能够把很
多不同类型的推荐模型给整合到一起。
比如,很多之前我们介绍过的推荐模型就可以担任第一轮打分,也就是我们常说的“候选集选
择”(CandidateSelection)这一组件的角色。像协同过滤模型,就可以是我们为每一个用
户或者每一个物品产生最终推荐物品的一个候选集合。
在搜索里,我们是利用索引以及简单的检索方法,从海量的文档中找到几百或者几千个初步相
关的文档,然后再根据第二轮的复杂模型来重排序。那么在推荐里,我们其实就可以利用各种
不同的协同过滤、矩阵分解等模型来达到第一步的筛选功能。
而对于第二轮打分,我们就完全可以依赖基于特性的排序学习模型来学习推荐的结果。这种方
式其实是极大地利用各种搜索算法,特别是排序学习的进步,来提升推荐的效果。
是否把推荐问题看成是多轮打分的搜索问题,是区别工业界和学术界推荐模型的一个重要标
志。
高频用户和低频用户套路
既然我们提到了把推荐问题看成是某种意义上的搜索问题,那么,根据用户行为的频率来进行
不同的推荐策略,其实就是一个顺理成章的套路了。
这个套路的思路和搜索类似。对于高频用户而言,我们有足够多的数据,所以往往可以学习到
一个比较好的模型。而且,对于真正的高频用户来说,提高推荐的质量往往需要个性化,也就
是说,我们需要更多地利用这些高频用户他们自己的数据,来提供推荐结果。
一般来说,针对高频用户的个性化推荐有两种比较常见的方法。
一种方法就是构造更多的高频用户的特性。比如,有一个用户点击了某一个物品的信息,或者
这个用户购买了某一个物品,这些特性都有助于我们的模型学习到关于这个用户的具体喜好。
另外一种比较常见的方法是为这些高频用户单独构建模型。这个方法其实主要是针对第二轮打
分的模型而言的。一般来说,一个比较简单直观的方法是把所有用户的数据收集起来,然后训
练一个全局的第二轮打分模型。这样做的好处当然是可以利用所有的数据,并且学习出来的模
型往往也比较稳定。但是,一个全局的模型往往并不能为某一个用户提供最优的推荐结果,这
一点其实很容易理解,因为一个全局的模型往往是某种“平均结果”。所以,我们可以根据用
户的数据来为这些高频用户“定制模型”。
说了针对高频用户的一些思路以后,我们来看看针对低频用户的一些套路。
当我们需要为低频用户进行推荐的时候,因为数据缺乏的关系,这时候的选择就不太多了。一
个普遍使用的方法,是对低频用户进行分组。这种分组一般来说是根据用户的人口信息,例如
年龄、性别和地理位置。分组之后,我们把这些组别中的用户信息整合起来,统一建立这些组
别的模型。
还有一个比较普遍方法,是给低频用户推荐流行的信息。这里的假设是,流行信息之所以是流
行的,就是因为这些信息本身可能就有较高的点击率、驻留时间和购买率,因此在不清楚这些
低频用户喜好的情况下,推荐这些内容其实是相对比较合理、也是保险的。
批量和实时套路
这个“批量和实时”套路其实和多轮打分以及高频、低频用户都有一些关联,但是有时说的是
不太一样的事情。
在设计推荐系统架构的时候,我们刚才讲了多轮打分的思路,那是不是每一个用户到我们的网
站或者服务时,系统都需要从第一轮开始一直到最后一轮,完全重新生成一个用户的所有推荐
结果?
其实,我们可以这么想一想,如果