二、召回、排序的特殊性

在这里需要先解释召回和排序的含义。

召回:用些成本低、易实现、速度快的模型(如协同过滤)进行初步筛选,如从海量的物料库里先筛选出几千条符合条件的物料,交给排序环节。

排序:用更全面的数据、更精细的特征、更复杂的模型进行精挑细选,如从几千条物料里面筛出几百个权重由大到小的结果,算法计算就包含在这两个层面中。

召回强调的是快,而排序强调的是准。在一定意义上,排序是带有权重的召回过程,结果排序的权重大小决定了用户能看到哪些商品,先看到哪些商品。

如果要将召回和排序进行细分则是:召回—粗排—精排—重排。召回到精排主要通过各种算法模型实现,而重排完的结果要展示给前端,因此一般还需要结合业务策略、已读、去重、打散、多样化、固定穿插,等等。如图4–9所示。

图4–9 细分的召回和排序过程

举个例子:系统物料池里有100万个商品,要给前端返回1000个商品,这个筛选结果的过程就叫召回,而排序则是召回的依据。算法计算存在于召回过程中,当多算法模型计算完之后,会产生一个带有权重的候选结果集列表,产生列表的过程系统进行了一次召回。前端调用推荐结果是按照结果列表的权重由高到低从候选结果中取(排序),可能一次只取200条存于缓存中,那么从候选结果列表到筛选200条的过程又完成了一次召回。

我们大致了解了召回和排序的概念,来讲一下电商场景的召回与其他场景有哪些不同。

我们之前有阐述过一个理念:系统的存在都是为了解决某些问题。我们在电商运营中会发现以下现象:

1.电商场景中融合模型的语义权重将会调整的较为高一些

在资讯场景中,为了避免让用户越看越窄、陷入信息茧房,通常,信息流推荐会采用语义模型和用户协同模型融合的方式,并随着用户行为数据地积累逐渐调整用户协同模型所推荐结果的权重。

但在电商场景中,除了少数APP像淘宝、拼多多已经帮助用户养成了无目的“逛”的习惯,大多数平台的用户登录APP时,目的比较明确,就是找到自己需要的商品。此时,如何帮助用户快速地定位需求显得格外重要。你的平台无法在短时间内让用户发现自己需要的商品,那么用户很有可能会到其他平台或者综合性平台如淘宝去购买。因此,在电商场景中融合模型的语义权重将会调整的较为高一些,目的就是在用户浏览完1~2个商品后立刻就会有相关商品出现在商品信息流中,让用户多看几个相关商品,多比较,辅助用户进行决策。这也要求系统具备快速计算出新的推荐结果的能力。

2.每个用户在购买商品时的购买能力是不同的

要向用户推荐符合其购买能力的商品。传统的解决方法是通过所谓的用户画像根据用户购买过的商品价格,打上高净值、低净值等标签,将不同商品归类到不同净值,再推荐给用户。过程中会出现两个问题:

(1)以人的经验判断哪些商品属于哪类群体本身是武断的,就好像部分没有收入的大学生省吃俭用都会买1万元的苹果手机,而此类群体本身就是低净值群体;

(2)不同用户对不同品类的商品有不同的消费能力,没有收入的大学生平时买的衣服就是几百块钱,但仍然会选择购买1万元的苹果手机,在其他品类商品的行为不能作为判断其是否有能力购买另外品类商品的依据。

因此,为了解决向不同消费能力的用户推荐不同商品,推荐系统在召回阶段引入消费力模型。消费力模型会计算用户在某个品类的平均消费价格,距离这个价格最近的候选结果的集中商品权重越高,反之,距离越远的商品权重越低,消费力模型会为每个商品提供一个消费力权重,参与推荐列表的排序。消费力模型会收集用户所发生行为(不仅是购买,还有点击、分享等)的商品的品类、价格,计算用户在每个品类下的消费力权重。消费力模型会随着用户行为的发生不断更新,粒度至分类,从而解决了上述的两个问题,实现了为不同购买能力的用户推荐不同商品。

3.用户购买不同的商品有不同的复购周期

举个例子:洗发水作为快消品,用户可能每1个月就会集中采购一次,而沙发作为家具,用户可能隔几年才会购买一次。当用户购买完洗发水之后,洗发水语义相似商品被降权至一段时间低概率曝光,而这个时间的长短肯定要与家具是不同的。那么这个时候,我们需要处理的是购买后降权的时间有效期。将商品分类的复购周期上报至系统后,系统会在复购周期的前N天开始提高购买后商品的权重至复购周期的后N天,提醒用户这类商品可能又需要购买了,在加权期结束后这类商品的权重会恢复到初始权重。而且,因为用户购买而被系统去重的商品会召回进物料池再进行计算推荐。

4.推荐位可能推荐0库存的无效商品

如果运营人员没有对0库存商品进行手动下架,那么模型更新完一次后,0库存商品才会被剥离出推荐物料池,以2000万sku来计算,模型更新一次的时间会在1个小时以上,在这1个多小时内,推荐位很有可能推荐无效商品。当低库存商品被推荐出来时,可能面临缺货的问题。针对此问题,在召回权重体系中引入库存惩罚因子。当库存低于一定阈值的时候,进行硬降权,当再低的时候直接进行屏蔽,避免超卖和推荐出不可售卖的商品。

5.用户可能误点了几个商品,商品信息流里推荐出来的商品并不符合自己的需求

如果用户想再了解其他的商品只能通过其他入口如搜索再去查找,不会再去浏览商品信息流的推荐位。为了解决推荐出来的商品用户不喜欢这个问题,我们引入了用户行为实时反馈机制。用户实时反馈机制即用户对前端推荐的商品没有发生任何行为,那么被推荐到前端的商品及其相似商品就会按照一定的权重进行降权,再次参与下一次新结果生成的排序中。有了用户行为实时反馈机制的推荐体验是,当用户发现推荐的商品并不是很喜欢,那么用户上拉刷新几页后,不喜欢的商品就会被用户更早或者最新的兴趣商品所代替。

总结一下电商场景下召回阶段的特殊性,这个阶段分别引入了消费力模型、复购周期机制、库存惩罚机制和用户行为实时反馈机制,此阶段作用到候选结果集的权重排序,从而对最终的推荐列表产生干预,更好地满足电商场景下用户的推荐需求。