企业宣传,产品推广,广告招商,广告投放联系seowdb

用户出行需求预测

在飞猪 APP 端、支付宝或许淘宝端,咱们用到的交通相关的业务关键有三个:机票、火车票和汽车票。这里以机票为例,来展现一下各个子场景:

2、特点与应战

交通业务场景与传统的电商介绍是不一样的,由于交通游览场景,有很大的场景特征。详细而言,用户出行周期关键分为四个阶段:

在用户出行周期中,关键面临四个应战:

决策长周期性。在传统电商平台,用户每个月或许每周都会经常使用淘宝或许京东App启动购物,然而游览的决策周期十分长,一年或许也就会出行几次,每两个月出行一次性,或许一个月出行一次性。

行为稠密性。同上,电商App的用户行为就比拟密集,然而在游览场景,尤其是疫情时期,或许一年出行两次,用户的行为就比拟稠密。

行为时序性。其实是场景的长处,假设用户出行,先经过交通工具到一个中央,而后订酒店住宿,再乘坐交通工具到另一中央,用户先做什么后做什么,有清楚的逻辑性。如何充沛应用出行法令中的逻辑性是一个难点。

时空关联性。假定用户22 年的春节回了老家,那23 年的春节大略率也会回老家,这个时空关联性就比拟强。如何捕捉时空关联性,也是要处置的一个疑问。

定位应战之后,业务的目的可以拆分为用户侧和商品侧。应用用户侧用户的基本属性、社交相关和游览形态和商品侧做婚配,婚配目前关键是关注三个方面:

针对以上三个方面,接上去关键解说全体的算法优化历程。

1、架构

用户进入到一个飞猪介绍场景,会触发共性化。咱们的实时用户核心、实时特征核心和交通消息池会依据这外面的消息去对该用户启动一个用户画像。用户画像关键包含用户的一些基础消息,以及用户的一些实时的或常年的、短期的历史行为消息。构建完用户画像之后,咱们会应用团体的一些平台,如 iGraph、FPP、Summary、RTP等平台,来提供允许,去启动召回、 OD 消息完善和排序。

介绍预测算法全体上分为召回和排序两个阶段:

全体来说,第一步是思索特征交叉,再去思索特征融合或许序列建模助力机制。图中的ODNET论文是咱们在22年发的基于多义务学习的一篇论文,大家有兴味可以看一下。

接上去区分详细引见召回和排序这两个阶段的优化上班。

2、召回

他有一张西安到重庆的机票,假设应用传统的Swing算法计算相似度,会给用户介绍 西安—>成都,郑州—>重庆的机票。这是不合乎常理的,经过捞日志,也会发现这些用户就没有点击。经过剖析也可以知道,由于用户曾经有一张西安到重庆的票了,再给他推相似的行程是没无心义的。用户接下或许会点的是重庆—>成都或许成都—>西藏的票。以上可以显示出来,当一个用户在游览的行中,其行为具备清楚的延续性。而假设平台没有感知到用户它曾经内行中了,经常使用介绍算法预测的就不准确。

假设经常使用传统介绍算法召回,获取的是北京—>苏州、天津—>杭州,由于北京和天津比拟近,杭州和苏州也比拟近,而且市区相似度也比拟高,所以此类行程会被介绍出来,但这也很不对。存在用户B点击的是从杭州—>北京的返程,而用户C 点的是从杭州—>苏州,杭州—>上海。为什么两个用户点击的不一样呢?经过特征剖析可以发现,用户B来杭州,是为了出差,没有游览的心智,所以间接就返程了。而用户C,从北京到杭州,目的是游览,所以他下一步或许会从杭州再去下一个市区。

以上就是经常使用传统Swing召回算法存在的疑问。一个用户,游览会具备清楚的延续性,就像西安—>重庆—>成都,而后再回西安,存在清楚的延续性行为。

如何捕捉用户的出行用意也是优化的一个方向,首先看一下传统介绍算法,上图左侧:用户1,买了一条蓝色的裤子,白色的鞋,还有一件灰色的衣服,这是用户 1 的购置行为;用户2, 也买了一条蓝色的裤子,白色的鞋,灰色的衣服。

当一位新用户进入平台,买了一条蓝色的裤子,灰色的衣服,当咱们给用户介绍鞋的时刻,介绍白色鞋子仿佛是理所应当的。由于用户1和2在同时购置这两个东西裤子和衣服的同时,又购置了白色的鞋子,鞋子必需和裤子及衣服搭配率比拟高,这就是传统的Swing介绍算法。但在游览场景,存在场景特征,也就是说用户不论是游览、出差还是回家,有很清楚的潜在目的。

针关于故乡、景点和公司,咱们划分为八种需求:

如何融合这 8 种需求,详细而言,如上图右侧的异构图所示:其中关于用户1,虚线示意其分开了北京,假定用户分开了北京,抵达了上海,而后从上海分开,抵达厦门,最后从厦门分开,抵达了三亚。如何把这种用意建模出来?比拟关注的是用户的登程市区,对用户而言是什么样的用意,登程市区是家还是公司,抵达市区关于用户来说又有怎样的意义,是景点、家还是公司。

在线上,经常使用用户实时特征系统去判别这个市区能否为用户的常驻地、故乡地、出世地或许抢手景点去判别。

如图中右下侧公式白色部分,新增用意模块,其中:β 代表用户 u 的一个出行用意, γ 就代表用户 v 的一个出行用意。假设这两个出行用意能够命中,η 作为无心义方向加到这外面去。假设它没无心义,这一项都等于0。针关于经常使用算法的一个改良,相当于再参与一个用户出行,登程用意和抵达用意都融合到公式里。

详细的case,假定线上推的 Trigger D,假设用户的目的地是上海,分两路召回,“回答”用户为什么去上海:

上图下方展现了A/B test的结果,全体而言,相关于base,召回效率、uvctr & pvctr 成果都有较大优化。

在启动排序模型的解说之前,还是以线上的case为例,引见一下咱们为什么要这样做。

针对上述三种状况,将分红三个模块来启动解说。

这个模块关键处置内行前阶段思索去哪个中央玩的多阶段性,比如用户先去华南,或许先去华东,而后再去上海或是杭州,最后选择去杭州。建模时分为三个子义务:GeoHash2 ,GeoHash2和City 级别的子义务,最后再融合为 loss 训练。

假设同时保管这两种是比拟难的,这里关键是思索全域的长时期行为序列,经过把 OD 提取出来,建模空间图和抢手市区图。

a.关于空间图,假设两个市区在同一个GeoHash2 外面,由于GeoHash2的大小可以跨两个省级别。假设两个市区在GeoHash2 外面,就发生一条边,假设没有就不会发生边,这样就会生成一张空间图。

b.关于抢手市区图,关键思索抢手市区和非抢手市区。关于抢手市区的定义,是经过把飞猪火车票,机票还有汽车票或许酒店的售卖状况去计算售卖量,经过售卖量启动布局,进而计算抢手市区。同时也会将抢手市区依照区域启动划分,比如按华东、华南等七大区域块启动划分。由于不同区域的人,想去的中央也不太一样,经过划分不同区域内的抢手市区和非抢手市区。举例,华中区域与华南区域的抢手市区,会有 Alpha 发生一条边,非抢手市区之间会有 Beta 发生一条边。

这样做的目的是为了保障全体的陈腐性,可以捕捉一些用户流量。

建完空间图和抢手市区图之后,咱们它会经过一两个阶模块去提取这些市区的一个隐备点表征,最终经过多头自留意力机制将特征表征启动融合,输入Contact 到 3 个子义务上方去。经过这 3 个子义务之后,再经过一个多头自留意力机制将 3 个子义务启动交互交叉的学习。

去捕捉用户的长短期兴味,最后启动 3 个 loss 的联结训练。

在离线,关键驳回了两个数据集:

将应用Fliggy2训练的模型推到线上,启动A/B测试,全体的 pvctr 和 uvctr都有4%左右的优化,上线将近 10 天,全体优化成果比拟稳固。

这里以线下发现的现象作为引子去讲,为什么要这样做。

首先第一个用户,从杭州—>青岛,威海,杭州,青岛,这是他的行为序列;第二个用户,从北京—>重庆、丽江、大理、西藏,去了这些市区。

召回阶段的候选集,三亚、北京、杭州、威海、青海、西安和成都。候选集对两个用户是一样的。如何从候选集中给两位用户启动介绍呢?

为什么要给他推威海?由于用户既然去威海,并且在去威海之前,去了青岛,存在清楚的时空周期性。假定用户上一年去了青岛、威海,往年又去了青岛,下个阶段是不是也会去威海,具备清楚的一个时空周期性。

为什么要推杭州?由于用户也有或许要返程,从杭州登程,最终前往杭州。

为什么要推三亚?由于三亚和青岛、威海,都是一些比拟相似的海岛市区。表现出用户潜在目的是对沿海市区或许海滩市区比拟感兴味。为了保障介绍的偏心性或许陈腐性,就会给用户介绍一些沿海或许是沙滩市区。

为什么要推成都?用户去过重庆,必要求给推成都。

为什么要推青海,经过剖析用户行程。重庆、丽江、大理、西藏,这样的行程清楚属于川藏线的游览路途。用户去了西藏之后,依照大部分人的行为延续性,该用户下一站大略率会去青海,或许间接前往北京,返程行为。

以上就是线上处置的一些case。

上方详细解说如何优化。

咱们基于DIN模型设计了 G-PDIN 模型,改善的模块为右侧模型架构图中白色的部分,关键包含:部分兴味捕捉模块、周期兴味捕捉模块和潜在用户用意的捕捉模块,最后会和目的 item 启动特征计算。

接上去详细开展引见这 3个模块。

传统的DIN模型会间接做一个特征Embedding 相乘再相加的留意力机制。G-PDIN 不同,是用一个基于元门路学习的形式。如上图左侧,灰点是用户,黄点是用户登程市区,紫色点为用户抵达市区,经过建模异构图,并定义一些Mentfast,来捕捉用户的长Trigger。

构建好图并定义好元门路之后,把上文中提到的空间图和抢手市区图,也会经过一个 Graph SAGE 启动一个特征提取。不凡提取完之后,就可以获取登程地市区和抵达地市区的表征消息。经过把这些表征消息做叉乘,就可以计算出 OD 的相似度。

如图所示,举例说明:User1 去了昆明、重庆和成都;User2 去了三亚、青岛和厦门。候选集给User1 介绍的大理,由于大理和昆明,重庆,成都无论在天文相关性上,还是在二部图上,都有很高的相关性。User2 介绍的是威海和大连,由于捕捉用户去三亚、青岛和厦门这些沿海市区,而且介绍的市区离青岛比拟近。

自创了Hinton传授的胶囊网络,启动特征的聚类。把这种思维用到用户的点击序列当中,每个用户的点击序列,每一个市区Embedding之后,经过CapsuleNet胶囊网络+Attention,将这些市区聚为 n 类,代表着用户能否是归乡或许上班游览。

上文提到的Swing改良算法所对应的 8 个用意,这里也会把 8 个用意启动聚类,再经过多头留意力机制,启动用意融合,将最终获取的Embedding concat 到其它的表征消息中,启动前面的训练。

自创了 CNN 图像畛域的空泛卷积的思维,对春节、国庆、中秋等一些节假日启动处置。在数据剖析时,咱们发现平均每个用户的点击行为不会超越两三次,所以把 2 或许 3 做一个step,启动节点腾跃,对节点启动消息聚合,再经过多头留意机制生成最终的 Emending 表征。经过这种形式去模拟用户周期新行为捕捉。

这三个模块做完之后启动 Contact,前面的形式就和 DIN 模型一样的了。

离线训练,是以 DIN 模型作为基线,在数据集上AUC 为0. 8。假设参与图留意机制,还有周期性、潜在用意捕捉模块,AUC优化到了0. 83,相对值优化了 3 个点左右。线上启动了 10 天左右的A/B测试,全体来看无论在 pvctr 还是uvctr,都有一个点的优化。

最后,对过去的上班和未来的上班方向启动一个总结。

首先是对近期上班的思索:

关键是基于Swing模型开发了一个 IC (Intention Capture Swing)索引Recall, IC 索引就是去捕捉用户的潜在用意。

a.基于多义务学习,关键是一步一步增加了空间图,抢手市区图,不同级别的子义务模块,还有 LSTM 模块和 GRU 模块。

b.基于DIN 模型,逐渐去增加了一些部分兴味提取,周期性提取,潜在用意捕捉,预训练的 GNN模型,去计算 OD 的相似度,

关于未来的上班方向,关键会思索超长历史行为序列档次建模,时空序列全体建模,以及元学习和跨域学习。

详细而言,比如三亚/厦门的用户,在 09 年去了三亚, 20 年去了厦门, 21 年去了三亚, 22 年又去了厦门,那23年更应该给该用户推三亚,由于用户存在清楚的周期性,而且用户序列比拟长。如何建模这种序列,下一步的思索就是把这些序列建模成时空图,用时期和空间图去启动一个形象建模。

另外,还会思索元学习和跨域学习,做冷启动或许其余方面的战略。由于用户乘坐飞机的行为或许比拟少,然而乘坐火车/高铁等场景的行为比拟多,可以应用跨域学习追踪做一些冷启动的战略。

Q1:G-PDIN模型能否曾经宣布论文?

A:论文还未宣布,如今曾经线上通常并离线评价,成果比拟好,后续或许会写一下论文。

A:GAT模块特征用得比拟少,只用了市区,市区所在GeoHash,能否为抢手市区等,这些基本的属性特征,没有用POI 或许维经纬度的其它特征。

Q3:介绍抢手航线能否能够带来清楚奉献?

A:这个是能的。由于人们在游览前,大少数是不知道去哪里,会被小红书等一些App的市区介绍影响心智。

Q4:请详细开展讲讲长序列模型?

A:咱们做的关键是去模拟时空序列,经过对每一年、每一个月独自启动序列建模,而后分档次,像 2022年12个月 2022就是 1* 12,叠正一个矩阵,对矩阵做一个时空图的特征抽取。

Q5:出行用意模型能否有独自输入?

A:没有,由于这是一个端到端的交叉网络,训练时会间接输入Embedding,并把表征衔接到用户的特征消息上。

Q6:时期消息是怎样用的?

A:如刚才所讲的,会叠成一个矩阵启动特征抽取。目前线上用的是这种形式,援用时期消息,经过矩阵或矩阵的敞口宽去代表一个时期消息。由于出行需求预测和传统的交通流量预测不太一样,交通流量预测每时每刻都不一样。但游览行为数据比拟稠密,而且周期比拟长,所以以月为单位,比拟正当。假设以每秒或许每小时做切分,不太正当,会十分稠密,获取的矩阵基本全都是0。

© 版权声明
评论 抢沙发
加载中~
每日一言
不怕万人阻挡,只怕自己投降
Not afraid of people blocking, I'm afraid their surrender