推荐中召回的一些方式

itemvec召回:

Item2vec的思路是将用户行为序列作为语料,训练word2vec模型,是根据用户行为来计算item之间的相关关系,但是还有一类相似,则是需要通过字面上(标题,描述,一级二级品类)的语义相似来判断,类比item2vec的思路,语义上的相似性计算则需要把商品的标题,描述,一级品类,二级品类分词后当作语料,调用word2vec模型进行训练,生成商品标题,描述,品类的embedding vector,然后分别计算商品之间的标题,描述,品类的相似度,再将各个维度的相似度加权求和,得到最终的商品之间的相似度,最后用户如果看过A商品,则可以把与A在语义上相似的其他商品推荐给用户。尽管语义相似只是一路召回,但是在某些简单的推荐场景下,它就可以直接作为推荐结果,例如搜索"为你推荐"就是根据搜索商品结果和关键词意图,推荐语义相似召回的商品,目前每天能覆盖百万GMV。

als召回:


tfidf:计算兴趣偏好召回:

通常计算用户的长短期兴趣偏好会有很多种方式:

一种基于简单的业务规则,例如:用户最近6个月有过复购的品类可以作为用户的长期偏好,最近2个月下单且之前没有买过的品类,并且超过该品类通常的复购周期的品类,则可以作为用户的短期兴趣,这种业务规则最大的优点就是具有很强的可解释性。

另一种是利用TF-IDF模型思想,计算用户对于各个品类的偏好程度,这种计算就不区分用户长短期兴趣偏好,利用偏好程度排序来选取用户感兴趣的品类。TF-IDF的意思是词频-逆文档频率,是自然语言常用的算法,通常用来评价一个词对于某个文件的重要性(可以用于判断文章主题,或者判断用户搜索关键词与待检索文章的相关程度),如何来计算用户的兴趣偏好呢?具体做法是将用户A最近下单的品类序列理解为一篇文档,所有用户下单的品类序列当作所有文档,那每个品类则是文档中的一个词。TF可以衡量用户A对于该品类的兴趣程度,但是只有这一部分还不够,因为还要看一下其他用户购买该品类的情况,如果大部分用户也都买该品类,说明用户普遍对这个品类感兴趣,那用户A对该品类最终计算的兴趣值就应该要降低一些,这就需要应用到IDF,就是衡量这个品类在所有用户的普遍重要性(如果所有用户对于该品类买的多,那么IDF就小,买的少,IDF就大),再利用TF*IDF得到用户A对于该品类真正的偏好程度。但是这里要注意,对于电商场景下,统计一个品类出现次数的时候,需要根据下单时间进行加权,下单时间近的权重高,下单时间久的权重低,这样统计的品类次数更客观准确,并且由于结合了下单距今的时间窗口,可以更准确地捕捉用户的长短期兴趣。

复购及点赞评论召回:

正如开篇提到的,召回是融合器,因为要充分考虑用户不同思路的商品偏好,所以往往除了算法模型之外,需要借助一些简单的业务规则进行召回。比如这一路用户复购及点赞评论的召回,用户买过的商品如果今天仍然在售,则可以推荐给用户,用户历史点赞或者给过好评的商品,如果今天在售也可以作为召回推荐给用户,但是都需要判断该用户对于此商品最近购买时间是否超过了该商品所属品类的平均复购周期,减少刚刚购买过的商品重复推荐的问题。这类召回尽管加工逻辑简单,但是在线上效果往往是直接有效的,并且具备很强的可解释性。

 

dssm召回:

作为一个成名很早的双塔深度学习模型,DSSM模型最早发明是用于搜索引擎中,通过构建搜索词和搜索结果独立子网络,计算出搜索词和搜索结果的embedding,最后利用embedding向量,可以快速计算搜索词和搜索结果的相似度,建立搜索词和topN个相似搜索结果的关联。目前这路召回只是在模型训练和调优阶段,还没有上线,但是作为业界常用的召回方法分享一下。

如何将DSSM模型映射到推荐召回场景呢?从本质上说,搜索是搜索词(query)和搜索结果(document)的关联,商品推荐则是用户(userid)和商品(sku)之间的关系,所以可以利用DSSM搭建用户端和商品端构建两个独立的子网络结构,用户端输入用户的特征(历史点击加购下单次数等),用户和商品交互的特征(用户在该商品所属的一级二级品类的行为数据),商品端输入商品的特征(商品价格,所属一级二级品类,总的点击加购下单次数等),最后一层计算两者生成embedding的相似度,并且把用户点击/加购/下单作为正样本标签,其余的曝光未点击加购下单的数据当作负样本标签并适当采样或者随机生成用户与其他商品的负样本数据,让模型进行训练。

最后在线上调用的时候,可以分别把用户端和商品端的embedding结果保存,然后线上应用的时候直接查询对应的embedding结果,计算相似度,召回该用户相似度topN的商品,或者把模型分别存储为user_embedding模型和item_embedding模型,DSSM模型结构如下图所示:

 

通用召回:

多路召回中有了相关召回,个性化召回,对用户兴趣的覆盖也是不完整的,因为仅仅依赖这两路召回,用户推荐的商品往往局限在用户自身的行为中,会陷入推荐系统常见的“信息茧房”的问题,用户在推荐结果中永远只能看到有限品类的商品,因此还需要一些通用召回来扩展用户的兴趣,推荐出一些用户以往不太感兴趣的商品,跳出其惯性购买行为;同时对于刚开始使用产品行为数据少的用户或者是全新用户推荐时,补充推荐的商品。

实时热销,热点,分享

整体用户的购买热门商品往往有时候也会是这个用户感兴趣的商品,例如中秋节的月饼,端午节的粽子,大盘用户都在购买,即使这个人平时可能没有粽子和月饼的需求,也需要把这些热门商品推荐给用户,另外某些爆款商品,之所以成为爆款,有其吸引用户的点,所以这些商品推荐出来也可能吸引用户的兴趣,尤其是对于我们这种商品少,主打季节性强生鲜品类的电商平台而言,这一路召回就会显得尤为重要。因此我们会实时地统计各个商品在平台的销量,按销量top进行召回。

当然仅仅只考虑热销也是不够的,因为一些商品跨天销售或者是未到购买时间的秒杀商品,用户往往会喜欢先加购,或者在购买之前就喜欢看,因此实时热点是对商品的曝光点击加购等行为数据加权,算出整体加权之后的热点商品,对热销商品的补充。

门店老板和用户的分享热门也是通用召回的一部分,因为门店老板往往最了解身边的用户喜好,所以在门店端热门分享的商品大概率从性价比或者品质上说都是比较好的商品,另外小程序端,用户个人的热门分享也往往是其觉得优质值得推荐的商品,这路商品召回也是我们社区电商平台的特色,因为更看重用户之间的分享行为。

门店热销

附近的邻居热销的商品,往往也可能是这个用户的兴趣点,因此在这路召回中,重点统计了用户所属门店的热销商品。

总的来说,通用召回尽管看上去逻辑简单,但是也一定是召回环节不可或缺的重要部分,而且正是由于通用召回的存在,一方面能直接有效地扩展用户兴趣商品,另外一方面通用召回的可解释性强,通常还可以在这路召回中支持运营配置的商品,为一些指定商品增加更多曝光。

posted @ 2022-07-29 13:31  15375357604  阅读(245)  评论(0编辑  收藏  举报