美团配送2021KDD论文:A Deep Learning Method for Route and Time Prediction in Food Delivery Service
背景
配送系统存在一些关键预测环节。
- ETA:用户下单前,系统会给用户一个承诺的预计送达时间(ETA);
- ETR:订单(A)分配到具体的骑手之后,在用户侧APP端可以看到骑手位置,以及更加准确、实时变化的预计送达时间(ETR);
预计配送顺序:在后续的订单分配时,需要预测订单(B)分配到骑手之后,骑手新的配送顺序(预估顺序)以及新的到达各用户的时间(ETR)。(需要注意的是,由于骑手受到ETA的约束,并不会随意选择配送顺序)
- 评估指标1:参考排序指标,LSD(location square deviation)、kendall系数
- 评估指标2:顺序一致率,即,两个顺序的公共前缀长度占比
- 评估指标3:时间指标,ME、MAE、N分钟置信度
- 建议配送顺序:在骑手端,系统会基于时效、路程、交通规则等给出建议配送顺序(建议顺序),对骑手没有强制力。建议顺序为分单之后的动作,对分单策略不具有参考意义。
本文要解决的是外卖配送领域的骑手路径预测和时间预测任务,简称FD-RTP (Food Delivery Route and Time Prediction) 。FD-RTP问题较为复杂,主要体现在3个方面:
- 骑手通常同时对多个订单进行取餐和配送(在高峰时段,甚至可以达到同时取送10单),对应的路径求解空间巨大,针对高峰期10单的情况,可以达到2.376*10^15个解。此外,路径预测需要考虑骑行距离以及每个订单的准时性。
- 整个路径的时间预测涉及到骑行时间、取餐配送阶段的步行时间、骑手在餐厅的等餐时间3部分。时间预测过程中存在比较大的不确定性,而且随着路径长度的增长,这种不确定性也随之增加。
- 作为一种线上算法,FD-RTP任务会被其他应用频繁调用,因此,FD-RTP任务需要在毫秒粒度返回结果。
之前(外卖配送路径规划算法:两阶段快速启发式算法)将FD-RTP任务看做一个PDPTW (pickup and delivery problem with time windows) 问题,重点通过优化搜索算法最小化启发式cost(heuristic cost,由time delay、delivery distance两部分组成),鲜少提升时间预测的准确度,而时间预测作为PDPTW中计算time delay的关键参数,其准确性下降也会导致搜索出的路径结果准确性下降。当前的算法结构下,针对单个FD-RTP任务,启发式搜索算法在返回结果之前需要求解上千个轮次,每个轮次都需要调用时间预测算法。正是因为这种算法结构,需要时间预测算法快速返回结果,所以,模型选型、特征选择总要做一些取舍,e.g.时间序列模型,骑手的历史行为习惯特征、时空关系特征、骑手所在位置的环境特征。
相关工作
RR (Route Recommendation)
RR问题指的是,在给定OD的前提下,基于历史轨迹为用户推荐出合适的routes。在之前的工作中,将该问题看做是一个在图(graphs)上的路径规划问题(pathfinding problem ),研究重点主要在设计启发式搜索算法,降低搜索空间。启发式搜索算法需要大量的迭代轮次,同时,设计合适的cost函数成为了算法的关键点。
然而,大量的研究将cost function设计成启发式的,导致算法应用性受限,不便于大范围推广。同时,启发式搜索算法在搜索过程中难以充分利用各种各样的环境特征,这基本上也是整个运筹优化方向类算法所面临的共同缺陷。
针对以上问题,大量的研究放在了利用机器学习方法引入更多的特征参与推断。
- Chen et al. propose a Maximum Probability Product algorithm based on the Absorbing Markov Chain to discover the most popular route between two locations [4]
- In [22], the authors adopt probabilistic models incorporating both temporal dynamics and spatial dynamics and address the data sparsity challenge for route recovery.
The development of deep learning sheds light on the RR problem using neural networks, especially the promising effectiveness of RNN for modeling sequential trajectory data.
- In [1], the authors propose Space Time Features-based RNN to predict people next movement by discovering the mobility patterns.
- Wu et al. design two RNN based models to capture variable length sequence of trajectory data and address the constraints of topological structure on trajectory modeling [21]
由于引入了订单准时率、骑手骑行成本,FD-RTP任务比RR问题更加复杂。
ETA
ETA预测有两个流派:OD-based、route-based。
OD-based类型的方法主要使用起始点特征,不考虑route及segment粒度的特征。相关研究如下:
- Jindal et al. propose ST-NN (Spatio-Temporal Neural Network), predicting the travel distance between OD and further predict the travel time combined with other time information [9]
- In [14], Wang et al. propose TEMP+R, which estimates the time duration as the weighted average travel times of similar historical trips.
route-based类型的方法主要放在对组成route的多条路段的预测,最终对预测结果进行聚合。
- BusTr infers bus delays combining real-time road traffic forecasts and contextual information [2]. Using a restricted fea- ture set, BusTr can be generated to cities without training data. Besides, formulating ETA as a pure regression problem, Wang et al.
- formulating ETA as a pure regression problem, Wang et al. propose a Wide Deep Recurrent learning model to capture global spatiotemporal and route segment information in [17]
- Hong et al. further employ an Attention based GNN (Graph Neural Network) to embed road network data, and model temporal heterogeneous information, beyond the state-of-the-art methods [8].
与传统ETA相比,除了考虑骑行时间,FD-RTP还需要考虑取餐、交付阶段的步行时间。
问题定义
FD-RTP任务的目标是准确预测骑手的location集合的访问顺序,即,l_0、P、D中元素的排列组合。可行route需要满足3项约束:
1)route必须以l_0为起点;
2)一个订单的pickup location应该在delivery location之前;
3)订单o的取餐时间必须晚于PT_o(商家备餐完成时间)。
Data Set
原始数据为最近两周的业务数据,涉及4.3亿订单、160万骑手。由于骑手配送过程中会持续有新订单加入,所以,原始数据并不能直接用于模型建模。因此,我们按照骑手分配新订单的时间点拆分骑手实际配送路径。以下图为例,我们将订单4分配给骑手为分界时间,将配送路径分为两段。
经过一些其他预处理(e.g.剔除速度过高的异常骑手)之后,剩余1.35亿条样本。下图罗列了每条样本所用到的特征信息。
需要特别说明的是,交付时长(drop off duration)、出餐时间(earliest pickup time)由其他模型产出,这里看作是已知信息。在RP模块和TP模块中,使用的信息存在差异,具体查看table2,这里不再赘述。
模型细节
如上图所示,本文提出了一种基于深度学习解决FD-RTP的方法,简称FDNET (Food Delivery Route and Time Prediction Deep Network)。FDNET通过对大量历史配送数据的挖掘,预测未来骑手访问location的概率,相比于启发式搜索算法,该方法能够较大的缩小路径规划求解空间,同时降低时间预测的调用频次。该方法仅生成少量高概率可行解,并预测其配送时长。计算量下降之后,便可以考虑将更多的特征加入到模型中,又进一步提高了模型预测的准确性。
FDNET由两部分组成:RP (route prediction) 模块和TP (time prediction) module模块。
RP模块用于预测骑手下一步的访问节点(location)的概率,进而预测出整个route。我们分析影响骑手行为的因素后,基于RNN和Attention设计出时间序列模型,借此更加详尽的描绘出骑手的决策过程。
TP模块用于预测route上两相邻节点之间的通行时间(离开O,到达D),并在考虑出餐时间、交付时长的情况下,生成每个订单的履约完成时间。我们将TP模块看作是ETA (Estimated Time of Arrival) 问题的变种。
RP模块和TP模块在FDNET中巧妙地结合在一起。TP模块的route 特征来自于RP模块,而TP模块的输出结果会作为骑手的未来特征加入到RP模块下一轮的预测中。
RP模块
RP模块可以形式化描述为如下形式:
其中,X表示代表在l_i地点所能获取到的所有信息。
特征
特征方面,主要考虑影响骑手决策的因素并借此设计特征,分析结果如下图所示。
从图上可以看出,
1)准时率的考虑,骑手优先取送剩余时间短的订单;
2)骑手倾向于先访问较近的location
3)相同情况下,骑手倾向于已经完成备餐的订单,完成时间点越早越好
4)倾向于优先配送交付时间长的订单,避免出现超时
模型
1.预处理阶段,对稠密特征进行离散化处理,并embedding化。主要基于两方面考虑:
- 稠密特征的微弱变化,并不会影响骑手的行为,同时,离散化可以提高模型稳定性;
- 我们希望模型可以学到微妙的表征,而不是直接用numerical values 。
2.使用deepFM模型,充分利用一阶特征、二阶交叉特征、高阶特征;
3.最终得到长度为m的向量,表征环境特征v_c,骑手特征v_u,订单o的取餐特征v^p_o,订单o的配送特征v^d_o;
4.利用LSTM处理时序数据,利用Attention计算倾向性
5.确保「问题定义」章节中的前两项约束。
LSTM Layer
在当前问题中,可以表示为如下形式:
其中,h_i-1、c_i-1 分别表示i-1阶段计算所得的两个状态。
计算细节如下:
其中:
- σ为sigmoid函数,σ(x)=1/(1+e^{-x})
- v_{l_{i-1}}表示地点l_{i-1}的向量表示,包括环境特征、骑手特征、取餐或配送特征(根据l_{i-1}的实际取送情况而定)。需要特别说明的是,在l_0时,因为不是具体的取送点,此时向量只包含环境特征和骑手特征。
- 每一步计算,更新环境特征和骑手特征
- h_t包含了前几个step的所有信息,作为后续预测的主要特征
- step之间增加dropout,避免过拟合
Attention Layer
在每一个location,骑手都会从所有pickup、delivery任务(用C _i表示)中选择一个作为接下来的访问地点。这里利用Attention机制描述骑手的决策过程。在第i轮次,我们首先获取骑手的全局信息(global view ),然后,计算骑手在i+1时访问location l的概率P(l),其中l属于C_i。
为了表示全局信息,
其中,h_i表示LSTM单元第i轮次的输出表示,v_l_j表示第j个location的特征。h_i与v_l_j的乘积越大,a_ij 就越大,对应的,g_i就更侧重于v_l_j向量(g_i是v_l_j向量的加权向量)。实际上,就是根据隐藏层与特征的相关性,决定关注点(attention)应该放在哪个location上。需要注意的是,这里并没有额外增加待训练参数,个人认为,可以看作是attention的简化。我们将g_i看作是骑手的全局信息(global view ),对应下一个访问点的概率如下:
到此,RP模块基本就讲述完了。
后续训练和预测过程有两种不同的策略,greedy strategy 和Beam Search strategy,前者每个轮次贪婪的选择一个最佳位置,并持续到所有轮次结束;后者每个轮次选择n个最佳位置,在下一个轮次中基于n*m个候选结果中选择n个最佳位置,直到所有轮次结束。
简单来讲,LSTM用i-1轮的信息得到h_i,用候选location(C_i)及h_i计算成为下一个访问节点的概率。
Attention的作用在于权重向量g_i,它由1)h_i与location向量v_l_j的相关性 2)location向量v_l_j 两部分决定;P由权重向量g_i和location向量v_l_j决定,所以,最重要的是h_i与v_l_j乘积的大小。
TP模块
TP模块用于预测到达各location的时间,即,从离开上一个location开始到到达当前location的时间差。问题定义阶段提出了3个约束,TP模块解决第三个约束问题,即,订单o的取餐时间必须晚于PT_o(商家备餐完成时间)。通过组合各时间差及备餐时间,我们可以得到各location的预计达到时间。如果骑手提前达到餐厅,他需要等待外卖准备完成;否则,骑手可以立即取餐。
我们将TP模块看做是一个纯粹的回归问题,形式化描述为如下形式:
其中,X^t_i表示在i轮次可以利用到的信息。
特征
- 环境特征
- 骑手特征
- 地理特征:我们利用了GPS经纬度的embedding信息
其中,dist指网格之间球面距离,本文采用300m的网格。
- 地理特征:交付时长
- OD特征:导航距离,不同时间粒度(昨天、前七天、上周同日)的导航时间统计特征,考虑到数据的稀疏性,我们利用geohash编码计算以上特征
模型
采用wide&deep模型:
- deep部分擅长抽取与location相关的潜在特征
- wide部分与RP模块有所不同,使用数值类型的稠密特征(因为预测目标与这类特征的变化非常敏感,e.g.导航距离)
针对预测OD类型的差异性,将OD分为6个部分。主要基于两个原因:
- 不同类型之间特征差异较大
- 不同类型之间的消耗时间分布差异较大
模型训练与预测
训练
采用 teacher forcing strategy 策略,即,涉及时间序列时训练采用真实数据,预测采用前几个轮次的预测结果序列。在我们这个问题上,RP模块、TP模块均使用骑手的真实骑行序列作为输入;在RP模块中,当需要计算l_i的时间特征时,均采用骑手离开l_i-1的真实时间作为输入。
在RP模块,我们使用交叉熵损失函数:
其中,D表示训练集,i表示样本中包含的轮次。
在TP模块中,我们使用MAE作为损失函数:
我们使用独立的adam优化器和学习率训练RP和TP模块,即,两部分是独立训练的。
预测
虽然训练时独立,但预测时RP模块和TP模块的协调非常紧密。在i轮次,RP模块使用RP模块在i-1轮次所产生的location及TP模块的i-1轮次对应更新后的特征(最早取餐时间、剩余配送时间、导航距离等)作为输入。此后,TP模块利用RP模块预测的location作为输入,产生i轮次的时间预测结果。
实验效果
离线评估
RP模块
route长度对指标影响较大,这里根据业务特点拆分成short route(小于等于8个location)和long route(8个以以上location)两类数据集。在确保特征尽量一致的情况下,测试FDNET与LR、RF、XGB的效果。指标上,看做point-wise排序,采用HR@1、MMR指标。
- HR@K:分母是所有的测试集合,分子式每个用户top-K推荐列表中属于测试集合的个数的总和
- MRR 是一个国际上通用的对搜索算法进行评价的机制,即第一个结果匹配,分数为1,第二个匹配分数为0.5,第n个匹配分数为1/n,如果没有匹配的句子分数为0
从结果可以看出:
1)route越长,解空间和不确定性越大,指标越差
2)LR效果好于RF和XGB,有点出乎意料,推测是RF、XGB这集成学习方法擅长利用统计特征
3)FDNET在两类数据集上均好于传统方法,推测是因为FDNET利用LSTM学习行为序列、attention刻画决策过程两方面原因
4)对比剔除环境特征、骑手特征的实验发现,因为环境特征对骑手决策影响较小,对应的与原始FDNET算法差别不大;从结果也可以推测出,骑手特征对骑手决策影响更大。未来可以尝试在这方面扩展颗粒度进行优化。
除此之外,还用XGB测算了一下不同特征的重要程度,即,特征在XGB中作为分裂节点的次数。从结果可以看出,pickup特征、delivery特征更加重要。
TP模块
在确保特征尽量一致的情况下,测试FDNET与线性回归、RF、XGB的效果,(GPS的embedding除外,其无法在线性回归、RF、XGB等传统方法中使用)对比指标为MAPE。
分析结果如下:
- 在传统方法中,XGB好于其他两类方法
- FDNET优于传统方法
- 与RP模块不同,骑手信息对时间预测非常有帮助。(但从table 4的特征重要性来看,骑手信息在当前利用率却不高,需要在未来做扩展)
location粒度时间准确性
将RP模块和TP模块组合,我们能够计算达到每个location的时间点,该部分将评估location粒度时间预测的准确性。table 6 是FDNET相对于传统启发式搜索方法所降低的MAPE比例,value越大代表算法效果越好。
从结果可以看出:
- 不管是Greedy还是Beam Search(每次保留2条最高概率结果),FDNET都优于传统方法;
- 针对short类型,pickup样本中greedy方法优于beam search方法,delivery样本中greedy方法持平beam search方法;针对long类型,beam search 均优于greedy。所以,在实际项目中,短链采用greedy方法,长链采用beam search方法。
线上AB实验
AB实验结果显示,FDNET可以获得0.08pp的订单准时率提升,订单生命周期降低20秒,骑手平均行驶距离降低60米。所以,FDNET方法同时提高了用户满意度和骑手体验。
case study
Case #1
传统方法考虑到l1剩余时间不足,存在超时风险,给出先送l1,再取l2、送l2的结果。凭经验平衡时间分、路程分,是传统方法的一个劣势。
FDNET考虑了骑手习惯及历史行为,给出先取l2、送l2、再送l1的结果,该结果与实际访问顺序相同。
Case #2
传统方法和FDNET方法在case上均预测错误。有两个原因:
1)由于l1、l2取餐位置太近,先取l1还是l2,存在非常高的随机性
2)备餐时间存在比较大的不确定性,该时间来自于另外一套ETA系统,预测结果存在偏差
个人观点:从实际业务来讲,先取1还是先取2并不影响骑手的总体路程和耗时。 这里更像是一个评价体系存在的问题。
Case #3
交付难度是影响骑手行为的重要因素,o1靠近道路,更容易交付;o2需要停车进入社区,交付更难。骑手更倾向于优先处理容易的订单,这和之前的特征分析存在矛盾。后续需要更加关注骑手的个性化信息,e.g.骑手对于配送先后顺序的偏好,骑手历史访问顺序。
未来优化方向
- 骑手对于配送先后顺序的偏好,骑手历史访问顺序
- 骑手对餐厅、配送位置的熟悉程度
- 更加大量的环境信息,e.g.交通状况
- 针对TP模块,引入route link的链接信息
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。