百事通旅行平台现全面招商,热烈欢迎! 027-87869600
标王 热搜:
 
 
当前位置: 首页 » 公告中心 » 行业新闻
飞猪旅行场景下的实时用户理解服务
 [打印]添加时间:2023-04-04   有效期:不限 至 不限   浏览次数:6967
   一、飞猪旅行用户理解服务架构
 
  1、旅行行为特点与用户行为模式
 
  旅行行业结构具有低频性、时空属性和周期性三大特点。
 
  ①低频性是指大多数用户每年出去旅行的次数是非常少的;
 
  ②时空属性是指一般用户在不同的时间会选择去不同的地点,比如三月份大多数人会喜欢去武汉看樱花,元旦或者春节很多用户会选择去三亚过冬;
 
  ③周期性是指用户在周末时喜欢周边游,小长假时会喜欢远途游。
 
  与传统的商品推荐不一样,旅行场景下用户行为包括:
 
  ①行前规划,比如在出行前一周去做相应的一些规划。
 
  ②行程安排,是多元的,包含交通、酒店,以及吃喝玩乐等度假商品。
 
  ③行中履约,指到达目的地后的酒店履约、门票核销等。
 
  ④最后是行后反馈,当用户从旅游地回来以后会对旅游地有一些想法,比如喜欢的话下次还会去。
 
  基于这些旅行行业的用户特点,用户在飞猪APP从进入到离开的在线行为模式无非是三种链路:一种是用户意图比较明确,一般会去搜索,再去找他想要的东西;第二种是用户通过APP上一些导航的小工具栏点击请求;第三种是闲逛的用户,会在首页猜你喜欢去找自己感兴趣的东西,跳到详情页然后进行点击,滚动,或者进行收藏、加购和购买的等行为。
 
  2、RTUS演变背景
 
  早期基于用户行为模式,我们抽取了一套统一的实时特征服务中心,简称RTFS。
 
  最底层通过多端(飞猪端、淘宝端、包括早期的支付宝端的飞猪场景)、多场景(机票、酒店、度假等)的一些底层日志(搜索日志、点击日志、购物车加购、收藏日志和下单日志)收集起来,定义了统一的一套用户行为Schema。
 
  用户行为Schema主要包括这样几个字段:行为用户的user_id,行为类型bhv_type,行为时间bhv_time,行为对应的id,行为对象的类型biz_type,以及行为对象的一些额外信息extra_info,比如用户在某个时间点搜索了某个内容,包括了一些额外信息,比如city信息,类目信息,或时间信息等等。
 
  这是我们早期统一的一套用户的实时行为特征服务中心,基于用户实时的统一特征服务中心,下游业务会做一些用户理解。
 
  传统的方法是基于用户实时的行为,根据统一的Schema信息,各个场景会去查RTFS,每个场景去做用户的理解和建模。传统方案的弊端是每个场景都要重复去基于底层数据去计算用户的偏好或兴趣,比较浪费资源,每个场景都会花二三十毫秒去计算用户的兴趣点,整体存在一些问题。
 
  后面我们基于RTFS统一去做用户理解中心,简称RTUS,把所有场景做的工作进行统一收尾。根据底层的RTFS数据,我们可以去做用户的兴趣理解,包括出行意图预测等,同时提供显式和隐式的表达场景,最终把用户多方面、多维度的兴趣理解或者是意图预测存到实时IGRAPH数据库里面。下游各个场景如果需要用户各个维度理解的时候,直接去调用接口去查询。一方面实现了数据复用,模型复用,同时节省了性能开销。
 
  3、RTUS如何实现多链路融合
 
  整体来说,飞猪底层用户行为数据分为多个链路收集。包括mtop服务端的日志、ut客户端日志ut/walle专链数据。不同的链路数据存在不同特点,像服务端的日志,因为服务端直接上报,时延为2-3秒,但可能存在数据丢失或重复数据;ut客户端的数据,因为是客户端用户真实行为直接上报的数据,上报时延会比较长,但准确性比较高;还有专链数据,上报更快,但整体各个场景覆盖面不会特别全。
 
  RTUS对各个链路的数据做了异步融合。把每个链路收集的数据,统一规范成Schema,有了统一的数据链路后,后链路就可以拿到既准确又高时效的用户行为数据。
 
  4、RTUS如何实现数据和模型复用
 
  以目的地的偏好预测为例介绍如何实现数据和模型的复用。
 
  进行用户的目的地偏好分或者是目的地偏好向量预测,一部分是通过离线的ODPS数据,全量回流至IGraph的全量数据,另外一部分数据是用户实时的目的地行为数据,通过Blink或者是Porsche,以增量方式汇总到离线数据中去作为整体的输入。
 
  传统的方式如蓝色部分所示,每个场景发生了请求时,都会触发各个业务场景的同步计算。新的RTUS当用户有任何一次行为触发时,一方面数据融合与传统方式相同,但是有任何用户请求触发时,我们会直接去查用户行为数据,异步去调用打分模型去预估用户的人工偏好。整体打完分以后,会把打完的分实时更新到数据库里面。有业务场景来的时候,直接去查打好分的表就好了,实现了统一的用户目的地偏好预测,各方场景都统一去使用,实现了模型的复用。
 
  5、RTUS整体架构
 
  RTUS用户理解服务架构整体如上图所示。
 
  最底层是实时的公共层,包括了用户的浏览、点击、加购、收藏、购买、关注、领券和核销等最底层的日志。
 
  经过特征处理层,会把最底层的行为日志进行规范化、标准化、聚合化,同时会关联用户行为对象的属性,包括商品详情,交通行程,酒店的一些属性信息。通过实时特征层处理,会得到用户LBS状态特征、用户的行为序列特征、用户的行为统计特征、商品认知标签特征、商品属性特征、页面模块统计特征。
 
  再往上——用户表达层,是基于结构化特征加工层去做一些算法模型。包括:用户的长短期偏好预测;用户的实时意图,包括POI意图,价格意图预测等;用户的需求理解,是否有复购需求,或者是否搭配需求;用户的行程表征;人群的兴趣表征等,是我们算法核心的实时计算。
 
  最上面一层,是算法层的输出。包括显式和隐式向量的一些表达,这些表达都会存在实时引擎的数据库里面。
 
  上游业务场景使用的时候可以根据自己的需求,直接查询到用户的意图向量、兴趣向量或行程向量。下面会重点介绍蓝色用户表达层,即飞猪旅行用户理解算法的一些相关实践工作,这块工作沉积了三篇顶会文章。
 
  二、飞猪旅行用户理解算法实践
 
  1、冷启动用户兴趣表征
 
  (1)问题背景
 
  冷启动用户兴趣表征,是发表在AAAI 2022年会议上的一篇文章。
 
  前文中介绍了旅行场景其实是非常低频的需求,大多数用户一年出去一两次,每次出去买的东西一般是比较聚焦的,一般包括交通或酒店或度假商品,导致整体用户行为比较稀疏。因此在该场景下,用户冷启动是非常严峻的问题。
 
  统计数据发现过去三年,只有一个商品行为的用户有35%。也就是说过去三年有35%的用户都是基本上没有行为或者只有一个商品行为,过去30天的统计数据发现58%的用户只有1-5个商品行为。如何对无行为或行为商品少的用户进行推荐是我们面临一个挑战。
 
  但旅行场景下时空兴趣非常明显,比如一般用户,在不同的时间点,不同的地点有一些热门玩法。例如每年元旦或者春节时,很多人会去三亚,每年三月份很多人会去武汉看樱花,北京的用户每年九月到十二月会去看枫叶。即不同的时间点,全国各地会有不同的一些热门地点,用户时空兴趣,随着时间和位置发生变化。
 
  第二个特点是用户具有一些群体兴趣。比如一般亲子用户更倾向于去一些娱乐场所,旅行倾向于自由行,而对老年人用户则更倾向于去跟团,情侣用户也是倾向于自由行,还倾向于去一些浪漫一点的景点,即不同的群体兴趣偏好不同。
 
  第三个特点是用户具有一些周期性的行为偏好。有些用户短期一年内没有行为,但历史过去几年有一些周期性的行为。比如有些亲子用户,每年暑假会带小孩去迪士尼乐园,还有些用户每年都会去三亚过冬。
 
  另一方面的场景特点体现在用户的行为特点里。比如用户会随着旅行规划的决策状态,行为也会有比较大的差异。根据定义,将用户的行为状态划分为多种:从静默期,到浏览期,到种草,有了明确目的地或者兴趣后,会进入决策期,最后会聚焦到商品去进行购买。即用户的行为随着用户的决策状态发生不同的变化,是一个从发散到收敛的过程。
 
  另外用户的行为也会随着LBS状态发生变化。位置状态分为三个:行前、行中和行后。行前更聚焦多个景点;行中会聚焦目的地用户所在的LBS周围的景点;行后如果是远途旅游的话,短期内不会再去这个地点。
 
  基于这些特点,我们提出了多方面兴趣表征的推荐网络。该网络主要包括:用户当前的兴趣表征输入模块,多方面兴趣抽取模块和用户旅行的状态模块。
 
  最终基于旅行的状态,从多方面兴趣模块中抽取出来和其旅行状态对应的兴趣。同样基于用户当前Session内的行为兴趣,也会从多方面兴趣模块交叉学习,抽取出用户历史兴趣相关的一些兴趣作为融合。最终将用户的单方面兴趣、多方面兴趣以及状态角色兴趣,作为融合作为最后的冷启动用户的表征输出。
 
  (2)SMINet Model
 
  目前定义了五个多方面兴趣抽取器,其输入是多方面兴趣的商品集合。这五个多方面兴趣商品集合包括:时空行为的商品集合,群体商品集合,用户周期性商品集合,用户长期行为的商品集合,以及用户短期行为的商品集合。
 
  基于全量用户的全量历史行为,不同的query可以检索出Top-k的Item作为集合的表征。如时空行为的兴趣抽取,首先输入时空的商品集合,query是时间和空间,比如武汉、三月,从全量用户行为商品里面抽取出销量最高的一些商品作为武汉、三月时空兴趣的集合。得到商品集合后,经过Embedding层得到编码向量,再经过Multi-Head Attention最终得到时空的兴趣表征。
 
  其他的兴趣表征过程和时空兴趣表征类似,都是通过query抽取Top销量的商品集合,再经过编码层、聚合层等到兴趣表征。
 
  除此以外,还要结合用户当前Session的行为。这里借鉴了传统经验GRU网络并做了一些改进,因为我们认为用户当前行为序列中的最近一次行为的商品,最能表现用户当前的兴趣,即用户对某个商品的兴趣随时间衰减。
 
  基于上述思路,在GRU网络中引入Time Aware模块,主要加强用户最近一次行为商品的兴趣重要度。一般传统GRU会输出h1-ht多个状态的隐向量,这里每个隐向量的重要度β是不一样的。β为行为商品的重要度随时间距离单向衰减。最终当前Session的表征包括:GRU网络最后状态的输出,每个状态的输出均值,引入时间衰减的表征的最终融合。
 
  最后,通过Co-Attention网络和用户多方面的兴趣做交叉学习。最终得到当前兴趣和多方面兴趣交叉后的兴趣表征。
 
  用户的旅行状态会从多方面的兴趣里抽取出旅行状态对应的兴趣。基于旅行的状态从多方面兴趣里抽取出对应的一些兴趣网络。蓝色部分为Travel State Aware的门控网络,通过门控网络从多方面兴趣抽取状态表征,根据每个兴趣的重要度做加权融合得到最终的兴趣表征。
 
  最终把当前Session表征以及状态选择的表征做融合,作为用户最终的输出。这是整体的网络结构,损失函数是交叉熵损失函数。
 
  在线Serving时,是把多方面的兴趣存在kv的数据库中,key为之前所描述的query,如时空、群体等,Value为向量表征。
 
  (3)实验结果
 
  在飞猪和公开数据集上的实验测试表明,与经典统计模型,序列模型,图模型和交叉网络的方法进行比较,整体在Recall和MRR指标上都远高于之前模型。
 
  消融实验表明,移除用户的短期兴趣,效果下降最多;此外加入时空兴趣可以带来比较好的结果;另外拉长用户的长期的行为数据,也会带来收益。当前Session和旅行状态的兴趣表征的融合也带来了效果提升。
 
  travel state-aware层的重要度,颜色越深表示越重要。横坐标是不同的五种兴趣,纵坐标是用户行为多少。行为较少的用户时空兴趣的重要度越强,用户短期的兴趣行为整体都比较重要。
 
  线上在全量用户和冷启动用户上都进行了实验来看效果,冷启动用户的效果提升更加明显。
 
  2、用户出行意图预测
 
  (1)问题背景
 
  用户的出行意图预测工作已被CIKM2022年会议收录。背景是以营销业务场景为载体,进行用户出行意图预测。为了让有旅行意图的用户,从手淘或者支付宝导航栏的入口跳转到飞猪,会做一些营销文案。会根据用户的不同意图,去做一些营销文案来引导用户跳转。另外会发push信息,告诉用户周边好玩的景点,或者回家应该买哪个车次等。
 
  目前根据用户行为距离远近和频次两个维度将具体的旅行场景意图分为八种。通过整体数据分析,60%的用户是在本地,40%的用户分布在其他的一些意图上。不同的颜色代表不同的节假日或者日常,在不同的时间用户的出行意图不一样。
 
  基于上述背景可以拿到用户历史在不同的节假日的一些出行数据。分析发现这些数据也有时空的周期性,比如每年元旦都是出去玩,每年的春节都会回老家等,包括在小粒度上,比如每周或者每个月的一些周期数据。此外,还有前后周期的关联性,比如中秋回老家,那国庆就不回老家了。
 
  (2)DCIEN Model
 
  基于这些特点,提出了双通道周期演变的意图预测网络。一方面结合了用户的在线行为序列,另一方面结合了用户的离线行为意图序列。
 
  整体网络的输入包括:用户的Profile信息,上下文产品信息(时间、位置等),离线数据(过去三年的结构化为节假日和星期的两个矩阵数据),在线的用户行为序列和未来的意图。
 
  离线数据中,有两个用户线下位移意图,分别是节假日和周一到周天的位移意图。通过设计多种大小的卷积核(2x2、1x7等),得到节假日和近期的模板pattern,再通过模板pattern挖掘用户的周期表征。
 
  将用户的周期表征引入到用户的在线行为序列中,提出periodic-aware兴趣演变模式。通过两层GRU网络,把周期性的兴趣演变计算出来。第一层通过序列输入得到隐状态,接下来在隐状态上拼接提取出的离线位移表征得到周期性的Pattern表征,作为第二层GRU的输入最终得到用户周期演变的兴趣表征。通过Target Intent的输入和Attention机制可以得到兴趣里哪个跟Target Intent最重要,做加权Pooling最终得到整体的兴趣输出。
 
  (3)实验结果
 
  和传统经典方法比如DSIN、DMSN相比,我们提出的DCIEN方法效果更优。
 
  分析原因认为,该方法主要考虑了Session内兴趣行为的抽取。DMSN也是我们团队早期提出的方法,主要是采用Deep Model挖掘时空的意图,通过CNN和RNN进行抽取,因为重点考虑了用户的周期pattern,所以效果比传统电商的DIN和DSIN要好。DCIEN方法效果最优的原因一是采用了离线数据去抽取历史pattern,二是将离线pattern融合到在线行为序列建模中。
 
  消融实验可见DCIEN的效果是0.719,去掉离线的序列效果下降至0.69;去掉在线的序列效果下降更加明显至0.66;去掉在线离线的交叉计算,效果下降至0.713;去掉时空pattern,用MLP网络代替,效果下降至0.711。消融实验表明DCIEN中的各个网络模块都对最终效果有正向作用。
 
  线上实验表明模型在营销场景和猜你喜欢上,都对CTR有正向影响。
 
  举例来说,一个用户定位在杭州,一般会推附近的三公里内的,也有远处周边的一些景点。加入意图预测模块,如果是外地远途来杭州的人,会更聚焦推荐杭州所在景点附近的一些景点;如果是杭州本地人,会推荐一些周边的景点。结合意图预测,推荐会更加精准和聚焦。
 
  3、用户出行目的地预测
 
  (1)问题背景
 
  用户目的地预测也是意图预测的一种,为直接判断用户去哪个城市,工作发表在SIGIR2022的会议上。
 
  该业务的大背景和上面两项工作的背景相似,一是用户旅行需求比较低频,二是早期的一些目的地预测的文章没有考虑到线下的一些位移数据,传统的电商推荐一般只考虑用户在线行为序列。然而旅行是一个线上行为到线下旅行的过程,除了线上行为以为,线下去过哪些城市也是非常重要的。
 
  基于场景的特点,通过数据分析发现用户去不同的城市也呈现周期性。比如周末去的地方和短假或长假去的地方不太一样。如上图的左图横坐标是不同时间的假期,纵坐标是用户出行的次数,一般长假出去次数比较少,周末出行的次数较多。右图的横坐标是距离的范围,纵坐标是出行次数占比概率,可以看出远途旅行相较于距离较短的目的地占比较低。
 
  (2)OOPIN Model
 
  基于上述特点,提出离线和在线融合的目的地预测的网络。整体网络的输入包括离线和在线两大块。
 
  离线的同样把用户线下去过的城市结构化成矩阵pattern,再融合在线行为序列,对离线和在线的行为做融合,最终得到当前的兴趣演变过程。
 
  离线模块是将用户历史去过哪些城市结构化成矩阵后,通过不同的卷积核可以得到时间空间的一些周期性的pattern来在离线兴趣演变中使用。
 
  将这些pattern融合输入到离线行为的第二层GRU中,相当于把离线行为的城市经过一层GRU拼接后可以得到离线演变的周期兴趣。
 
  用户线下去城市之前,在线也会有一些行为序列。通过Distance Aware Attention网络得到在线可能去的城市。
 
  计算逻辑为计算在线行为可能城市两两之间的距离,提取出主要的城市。比如,用户要去云南旅行,可能去的城市包括昆明、丽江和大理多个城市等。这些城市之间有共同的特征,就算偶尔穿插了三亚或北京,但通过Attention网络还是会聚焦到云南省,把其余的干扰因素丢弃,通过去除噪音得到在线行为序列中的更大范围的核心目的地。用户最终去云南的话,云南可以通过Target Aware Attention,找出跟离线最接近的城市的表征。通过信息增益网络做减法,可以得到用户还想去三亚的信息。即将用户在线行为过的城市信息里,减去他已经去过的城市信息,增益的信息作为一个新的序列输出,作为用户未来目的地意图的预测。
 
  (3)实验结果
 
  与传统方法对比,OOPIN效果是最优的。
 
  消融实验表明,去掉在线行为后效果下跌最多至0.1135。去掉信息增益后,效果也下跌到0.1527,因为去掉信息增益网络后,没法学习额外的一些增益信息。去掉离线行为模块后,效果也有明显下降。
 
  十天的在线实验也表明,增加目的地预估加权融合商品的CTR预估作为最终的排序得分后,商品的CTR效果有提升。