关于lbs:京东LBS推荐算法实践
作者:京东批发 郑书剑 1、举荐LBS业务介绍1.1 业务场景现有的同城购业务围绕京东即时批发能力搭建了到店、到家两种业务场景。同城业务与现有业务进行互补,利用高频,时效性快的特点,能够无效晋升主站复访复购频次,是批发的重要策略方向。 1.2 名词解释LBS:基于地位的服务(Location Based Services)。 下文LBS商品代指京东小时购商品;LBS举荐代指京东基于地理位置的举荐能力,须要思考到左近的供应和履约能力。 B2C:间接面向消费者销售产品和服务商业的批发模式。 下文B2C商品代指京东主站商品,包含自营/pop等非小时购商品;B2C举荐指主站支流举荐能力,不须要思考以后地理位置的供应,而是面向全国用户的举荐模式。 1.3 举荐模式次要举荐模式集中在一下四种流量场域: 1、左近-商品推feeds举荐; 2、左近-纯门店举荐; 3、左近-门店-商品列表页举荐; 4、主站外围举荐场景lbs商品混排举荐(首页为你举荐、购物车、我的京东等); 左近-商品推feeds左近-纯门店左近-门店-商品列表页首页为你举荐2、举荐零碎设计目前主站外围场景从反对b2c商品举荐,b2c内容素材/聚合素材举荐拓展到更丰盛的业务模式,反对lbs业务逻辑举荐,给用户带来更多元化的体验,同时给线下商家和经营提供了更丰盛的流量浸透策略。 目前lbs商品举荐架构和b2c商品举荐架构的举荐流程严密的耦合在一起,上线lbs商品举荐相干策略,都须要思考到b2c举荐业务的逻辑无diff,效率低,兼容性差,迭代老本高,不利于后续优化策略的疾速迭代。通过对lbs商品举荐的整体链路进行降级,与目前的b2c商品举荐链路进行解耦,晋升零碎的拓展性,更易保护,进步算法策略接入的效率。b2c商品和lbs商品均具备独立quota空间,举荐链路更加清晰,成果优化空间更大。 3、算法实际3.1 概述咱们的前端展示状态分为纯商品、纯门店、门店-商品三种状态,且举荐位散布较多,为了缩小人力保护老本,同时思考到LBS举荐模式和传统电商模式的差别,以及流量场域散布和举荐展现状态的区别,咱们针对LBS举荐能力进行了独自的设计,形象出一套举荐模板能够同时解决三种举荐模式,反对跨场景复用。 首先前端申请入参用户以后的经纬度信息,举荐零碎从gis零碎获取以后可履约的门店信息;举荐零碎依据用户个性化信息和门店-商品信息,为用户举荐感兴趣的左近门店-商品。 此时的item粒度为门店+商品粒度,为了同时保障用户对门店和商品趣味的同时感知,区别于b2c商品的举荐模式,咱们将整个零碎分为两个阶段。在一阶段对用户感兴趣的门店进行举荐,在二阶段对用户的感兴趣的门店下的商品进行举荐。在两个阶段内实现门店举荐、商品举荐、门店-商品举荐三种模式,三种举荐模式可复用算子达到80+%,笼罩站点从京东主站到小程序,笼罩场景从首页-为你举荐到营销举荐位,总计笼罩外围举荐位30+。 3.2 LBS召回算法实际3.2.1 背景概述背景:LBS举荐是基于地理位置的举荐场景,和主站b2c举荐模式有所差别;用户对更多维度的因素敏感,如门店品质,配送间隔,配送时效等等; 所以举荐零碎须要在召回的时候就思考到这些体验因素,所以咱们将LBS的召回算法设计成两阶段的模式。一阶段依据用户趣味(user-store趣味)和门店品质(ka/销量/间隔/时效)等因素召回用户感兴趣的高质量/间隔近/配送快的门店。在二阶段进行商品召回用于召回用户感兴趣的商品。 同时咱们面临着以下几个问题: 冷启问题:咱们是新业务+新场景,新品多,新用户多,相比拟成熟的b2c场景,lbs场景交互稠密问题重大; 跨场域趣味迁徙:用户在b2c场景和lbs场景的趣味表白往往是不一样的,不同场景的趣味表白往往存在着肯定的差别和分割,怎么精准捕获和表白用户跨场景体现出的趣味是新场景初期倒退的重要工作; 趣味激发周期短:lbs场景用户决策成本低,转化链路短,高转化场景下更要关注物品相干关系的表白; 咱们初期也对以上几个问题进行了简略的摸索,通过跨域趣味摸索和优化i2i关联关系简略的验证了咱们的想法。 3.2.2 召回算法实际1、冷启动召回冷启动召回个别有以下几种计划: •商圈热门:毛病是和user无关,纯热门item召回,相关性差;这里咱们将全局热销/poi热销商品作为兜底召回,用于补充; •cross domain:是一种基于不同场域(如京东b2c场景/lbs场景)独特用户的行为将不同域的用户映射到同一个向量空间,而后借助其余域的丰盛行为晋升本域冷启动用户的召回成果。 咱们这里次要针对cross domain的形式进行了一些简略摸索来优化跨场域用户的冷启体验成果。 1)潜客画像召回:依据用户在b2c场景的相干行为(诸如偏好类目是否为lbs转化劣势类目)以及是否对lbs相干场景有前置行为的用户(举荐下浏览过左近/搜寻内点击过小时购通栏等),来判断以后用户是否为lbs的潜在转化用户,给这些用户举荐其在b2c偏好下的高转化lbs商品; 2)跨域类目召回:通过对b2c/lbs共现商品进行开掘,失去b2c到lbs的类目协同关系,依据用户在b2c场景下的偏好类目举荐对应的lbs类目下的商品; 3)跨域i2i召回:联合b2c/lbs的用户的跨场域行为,对lbs商品和b2c商品进行i2i关系开掘,失去b2c sku到lbs sku的类似相干关系,应用b2c的用户行为为其举荐lbs商品; 4)间接召回:基于b2c召回后果,为用户召回类似相干的lbs商品。 2、i2i间接召回基于用户在lbs场景的行为间接召回lbs商品,常见办法有如itemCF,swingCF等。 咱们针对lbs场景高转化的特点对i2i召回进行了针对性的优化。咱们对lbs场景的用户行为进行了剖析,发现用户的点击行为体现了商品的相似性(同品比拟等),订单行为体现了商品之间的相干关系(搭配购等),然而用户的订单行为往往十分稠密,且思考到lbs商品还含有地区属性,间接应用订单行为构建相干的i2i关系失去的后果十分稠密,召回的下发占比往往比拟低。 于是咱们把订单的i2i关系形象为类目-类目,产品词-产品词的的粗粒度相干关系。而后对全站lbs行为进行i2i关系开掘,失去的后果应用粗粒度相干关系进行过滤,失去了比间接应用定订单行为构建i2i关系更丰盛的后果,召回效率也比类似关系的效率更高。 3、向量化召回i2i vs embed:i2i的类似相干关系体现的更加精准,然而覆盖率低;embed形式新颖性好,覆盖率高,然而关系表白绝对不这么精准。 为了解决前文中提到的问题,对用户行为进行预处理,对异样用户和异样体现的商品先进行过滤,避免脏数据对整体数据分布造成影响,行为选取时,优先保留订单行为左近的用户行为(高质量行为),同时历史行为序列进行了session划分,保障行为的连续性和相关性,更能体现出用户决策周期内的集中趣味,优化i-i的关联关系。 模型方面咱们采纳了随机游走的graph embedding建模形式,和传统计划差别不大:行为序列开掘 -> 同构图构建 -> 带权重游走序列采样 -> skip-gram+负采样训练,失去物品的item embedding。 同时这里的用户行为序列的选取也能够参考跨域的思路,应用b2c行为进行补充,进一步解决lbs场域召回稠密的问题。线上即能够应用i2i的形式进行召回,也能够应用u2i的形式进行召回。相比i2i间接召回,曝光占比更高,效率更高。 4、其余召回通道还有诸如其余的依据品类趣味和常购行为的趣味画像召回,复购、常购召回等。 3.3 排序模型实际排序筹备方面,因为历史遗留起因,目前无论是用户在lbs场域的行为,还是lbs商品画像都有所缺失。于是第一步,咱们首先对根底数据进行了保护:1)对立了全站lbs行为接入口径:通过门店pv和商详的pv埋点,捕获全站lbs行为;2)建设了user-sku和user-store的用户画像和lbs商品画像。 排序特色方面:在复用了b2c商品的局部精排特色的根底上,构建了lbs场景的特有特色,如lbs场景用户行为序列,lbs场景商品/门店反馈特色,以及配送时效,配送费,配送间隔等context类特色。 模型优化方面:引入了用户在b2c场景的用户行为,同时引入了b2c训练样本做样本加强。 ...