美团配送2022KDD论文:Applying Deep Learning Based Probabilistic Forecasting to Food Preparation Time for On-Demand Delivery Service
概要
在即时配送系统中,准确预估订单的商家出餐时间对用户和骑手体验都非常有价值。该问题主要有两个技术挑战,即样本标签不完整(部分订单只有出餐时间的大致范围)和数据不确定性大,常规的点估计回归方法很难处理。
本工作首次应用概率估计刻画订单出餐时间的不确定性,提出了一种基于深度学习的非参数化方法,并在特征构建和模型设计中充分利用范围标签的数据样本。在概率估计中,本文提出了S-QL损失函数,并证明了其与S-CRPS的数学关系,基于此对S-CRPS进行分位数离散化以优化模型参数。基于真实的配送数据评估以及线上A/B实验均证明了该方法的优势和有效性,该方法的预估结果已在美团即时配送系统中的多个核心模块中应用。
简介
外卖出餐时间(FPT),指商家收到订单到完成外卖准备的时间。备餐时间在订单指派和取餐时间推荐两个产品功能上十分重要。
FPT预测是一个典型的回归问题,存在两方面的难点:
label不完备性。label分为两类,真实label(precise label,PL)和区间label(range-label,RL)。
- 商家主动上报的出餐时间,或者,骑手在商家等待一段时间后才取到外卖的取餐时间,我们将这一部分认为是PL,大概占总订单的不到70%。
- 对于剩余的30%以上的订单,我们只能获取到其上下界。首先,我们可以认为取餐时间是订单出餐时间的上界。其次,我们可以根据业务特点,获取部分订单的下界,e.g.骑手因为长时间的等待放弃取餐而离开商家,我们就可以将离开商家的时间看作是下界(如果没有明确判定理由,下界设置为0)。
数据不确定性。受到下面3个因素的影响,传统单估计预测方式很难保证准确性。
- 商家供给:我们没有渠道详细获取商家厨房的信息,e.g.厨师、器皿、食材
- 食物准备的流程:每个商家都有其特有的食物准备工序,e.g.准备流程,并行处理订单的能力
- 到餐环境:线下店内就餐情况会极大的影响线上订单
因此,本文尝试预测FPT的概率分布,给决策带来更多有用的信息。目前,PF已经广泛应用于强不确定性的场景,e.g.地震,风力,电价;以及涉及区间数据的问题,例如,留存预测。同时,概率预测也被认为是最优决策的基本组成部分。回归问题的目的应该是校准和锐化应变量与自变量的条件概率分布。校准,指的是预测分布与观测结果的统计一致性,例如,当预测下雨概率为30%时,抽取10条样本应该大约有3条样本为下雨;锐化,表征了预测分布的集中程度,为决策提供了更多的信息。SF重点关注的是响应变量的条件期望/中值,但它将高阶矩视为固定值,这在现实世界中通常是无效的。
本文的创新点:
本文首次将PF应用于FPT,提出了一种基于深度学习的非参数方法来预测一系列累积密度的分位数。该模型通过最小化S-CRPS(生存连续排序概率分数)来处理[2]中被广泛采用的区间截尾数据,该模型由广泛采用的CRPS推广而来。在实现过程中,采用分位数离散化,避免了S-CRPS中积分计算的复杂性。[2] S-CRPS概念来自于吴恩达2020论文:「Countdown regression: sharp and calibrated survival predictions」.
相关工作
Regression for Interval Censored Data
在生存分析中,已经在使用回归方法分析事件发生的时间。概率预测(PF)算法主要通过最大似然估计(MLE)优化,即,最大化区间内发生的概率,而不预测具体的时间点,e.g.非参数化MLE、比例风险模型和参数化模型等。基于同样的思想,S-CRPS由CRPS推广而来。同样,我们对未知的精确FPT也不做任何假设,处理RL订单时充分利用上下界。
probabilistic forecasting
Bayesian vs. non-Bayesian approach
解决PF的问题可以分为贝叶斯方法和非贝叶斯方法2类。
- 前者做先验假设,并基于数据做后验推理;
- 后者,对不确定性直接建模,在实践中更加灵活。
本文重点放在非贝叶斯方法。
Parametric vs. non-parametric approach
参数方法和非参数方法是构造概率分布的两种主要方法。
- 前者假设密度分布的形状(如高斯分布、伽马分布),并专注于分布参数的预测。XGBoostLSS is proposed as an extension of XGBoost, which models all moments of a paramet- ric distribution [18];Duan等人[4]将boosting算法与自然梯度相结合,对假设分布的参数进行估计;Salinas等人[20]在深度学习的基础上提出了DeepAR,通过训练自回归递归神经网络模型,对高斯似然进行参数估计。
- 后者不对概率分布形状做假设,直接对分布的有限点位做估计。分位数回归是一种典型的非参数回归方法,通常对多个分位数回归模型进行独立训练来计算分布,这可能导致分位数的交叉(crossing quantiles);Hasson等人[10]设计了一种level-set PF方法,将数据点分组到不同的分区,并计算每个分区内的分布;此外,基于dropout的集成方法[15]也属于非参数方法。
一般来说,非参数方法比参数方法更灵活,但只有有限的预测点数量,而不是分布函数。然而,参数估计方法的有效性取决于假设的分布是否与实际分布极其匹配。
非参数模型(non-parametric model)和参数模型(parametric model)作为数理统计学中的概念,现在也常用于机器学习领域中。在统计学中:
参数模型通常假设总体服从某个分布,这个分布可以由一些参数确定,如正态分布由均值和标准差确定,在此基础上构建的模型称为参数模型;
非参数模型对于总体的分布不做任何假设或者说是数据分布假设自由,只知道其分布是存在的,所以就无法得到其分布的相关参数,只能通过非参数统计的方法进行推断。
所以说,参数模型和非参数模型中的“参数”并不是模型中的参数,而是数据分布的参数。 需要注意,有参数模型它的参数是有限的,而非参数模型也并不是没有参数,而是参数的数目很多。
问题定义
解决方法
不同订单的聚合(Aggregation of FPT for Different Orders)
实践中,为了特征分析和特征提取,我们通常需要对历史订单统计计算。针对label明确的一般情况,只需要计算label的平均值和方差即可。然而,我们面对的是包含PL(精确值)和RL(区间值)两种类型的订单集合,上述计算平均值和方差的方式变得无效,而只考虑PL订单会导致样本偏差的问题。因此,本文设计了离散累计概率DCP (Discrete Cumulative Probabilities)聚合两类数据集,代表了等距离散累计概率取值的集合,其中,下标z代表了离散值对应的时间点。
计算时,PL订单直接参与计算;RL订单,当上下界穿越z时不参与计算,上下界位于同侧时参与计算。对应的,近似平均值计算方式如下:
注意,近似平均值可以对FPT的平均值进行近似刻画,仅仅是为了方便分析,并不能直接使用。
特征提取
总体包括环境特征、商家特征、餐品特征3类。
S-CRPS and S-Quantile Loss
该部分主要用于如何评价拟合分布的好坏,便于后续再模型构建和训练中使用。
在下面篇paper中已经证明,相对于MLE,CRPS更加鲁棒并在求解PF问题中广泛应用。
Calibrated probabilistic forecasting using ensemble model output statistics and minimum CRPS estimation.2005.
Comparingdensityforecastsusing threshold-and quantile-weighted scoring rules.2011.
CRPS的两种等价写法如下:
其中,F指代CDF(累计分布函数),y指代观测值。当目标是最小化CRPS,需要在x<y时降低F(x),x>y时增加F(x)。极端情况下,概率密度集中在y时,CRPS=0。公式3则在CRPS和分位数loss之间建立了直接联系。其中,分位数loss用于分位数回归模型,定义如下:
\( F^{-1} \)指代CDF的逆函数,\( F^{-1}(q) \)指将q分位数作为参数进行计算。
为了避免复杂的积分计算,通常采用式3的离散化形式,例如,将公式3中的积分替换为对QLq的求和,q = 0.01,…, 0.99,称为分位数离散化。
借鉴CRPS并同时解决区间删失数据场景,Avati等人提出S-CRPS,相对于MLE该方法更加合适且能够产生更加清晰锐化(sharper)的分布。
Countdown regression: sharp and calibrated survival predictions.2020.
针对FPT-PF任务,PL订单,S-CRPS与CRPS处理方式类似;RL订单,S-CRPS则定义为如下形式:
针对RL订单,S-CRPS不做任何精确label的假设,仅仅充分应用上下边界。(应该还没有针对区间删失数据的分位数S-CRPS,这应该是这篇文章的首创)本文提出了S-QL的分位数loss,公式如下:
文中做了证明,S-CRPS可以描述为如下形式:
基于此,在后续模型优化时可以将S-CRPS的分位数离散化形式作为loss。
模型
预处理
文章提出了一种针对FPT-PF任务的非参数化深度学习模型。首先,我们对提取到的环境特征、商家特征、餐品特征进行预处理。其次,我们引入了Attention机制捕获同一个订单中不同餐品的贡献差异。最后,我们对FPT的累计密度函数分位数进行预测,并通过最小化S-CRPS分位数离散值对模型进行优化。
为了高阶特征与低阶特征充分交叉,我们引入了DCN网络对特征进行编码(注意,这里是两个DCN网络):
X_c、X_r分别表示环境特征和商家特征,X_d表示餐品特征,v_cr、v_d分别表示编码后的两个向量,维度均为k。DCN计算细节如下。
Attention
在该文中,attention主要计算餐品对于出餐时间的影响权重。
对一个订单里的不同餐品向量进行聚合时,我们应该当前订单以及之前订单中不同餐品的制作工序。但是,不同商家的不同餐品的制作工序差异性较大。例如,奶茶的制作工序通常固定,且准备工作的并行化程度较高;相反,拥有复杂烹饪过程的餐品,当商家供给能力不足时,餐品的准备工作变成串行的。在完全并行的情况下,一个订单的出餐时间主要由最晚餐品决定;在串行的情况下,由所有餐品准备时间的总和决定。所以,一个餐品对订单的影响是十分复杂的,与环境信息、商家信息有非常大的相关性,由此我们想到了使用Attention机制解决信息聚合(如图fig4 C所示)。
w_cr和w_d均为k维参数,sigma(x)=1/(1+e^{-x})。相比于传统Attention机制使用softmax计算加权平均,这里采用sigmoid函数更容易捕获并行性。【why?】所有餐品的聚合特征向量如下,其中,a_i∈(0,1),代表了d_i餐品的贡献权重:
最终,我们将v_D和v_cr拼接在一起,完成特征encoding(如图fig4 B所示)。
Probability forecast
如上文所述,概率预测分为参数化和非参数化两大类方法。其中,非参数化方法不需要假设概率分布形状,是最灵活的建模方法。针对当前应用,采用S-CRPS的分位数离散化形式作为模型的建模目标(如图fig4 A所示)。为了解决穿越分位数的问题,我们需要保证随着分位数的增加,预测概率同步增加。在本文中,采用全连接网络搭载softplus激活函数,softplus(x)=log(1+e^x)。通过这种方法,每个分位数得到一个非负数,然后在Cumsum环节对前置各中间结果进行累加。最终输出F^{-1}(q_i)。
Model Training
根据公式3和公式7的分位数离散化形式,损失函数如下所示:
其中,θ对应神经网络模型参数,delta_q=0.01,n_q=99。训练中采用Adam优化器优化模型,此外,采用BN保证稳定性。
评估
概率预测的目标是在满足 calibration(校准) 的前提下尽可能提高预测的 sharpness。所谓的 calibration 指的是预测分布和观测值在统计上的一致性,而 sharpness(锐度) 则是指预测分布的集中程度。
评估指标
PF的评价比SF的评价更具挑战性,PF公认的目标是使概率分布的锐度最大化。无论锐度如何,未经校准的预测都是错误的,而经过校准但锐度不高的预测是正确的,但用处不大。我们遵循现有的大多数研究,基于校准、锐度和回归精度来评价性能,即,评分规则和分位数损失。具体的指标将在以下部分给出,图5展示了三个例子来帮助理解。
calibration
校正是预测分布与观测结果的统计一致性。在本文中,我们遵循[2]中使用的相同方法来评估预测分布的校准效果。我们计算不超过每个累积密度预测分位数的观测频率。对于特定的累积密度q,每个阶的q分位数由模型预测。
- 对于PL订单,当y≤q分位数时观察到该订单,否则不观察到。
对于RL订单
- 当u≤q分位数时观察订单
- 当q分位数≤l时不观察该订单
- 如果q分位数∈(l,u),则忽略订单,因为无法确定FPT是否大于q分位数。
图5(a)和图5(b)说明了我们提出的方法的两个预测分布,以帮助理解。最后,通过观测数与所有考虑订单(不计忽略订单)的除法计算观测频率。当预测分布校正良好时,累积密度q的观测频率应接近q,本文对累积密度进行了0.1 ~ 0.9的评价。RL订单的标定也保持了对未知的精确FPT不做任何假设,充分利用上下界的原则。
sharpnass
锐度表征了预测分布的集中度。锐度只是预测分布的一个单一性质,不考虑观察结果。我们使用中心预测区间的平均宽度来评估锐度。形式上,区间(a, b)的平均宽度由预测分布的b分位数减去a分位数计算。fig5 C 展示了两个预测分布在区间宽度(0.2,0.8)的集中度差异。
Regression accuracy
通过最小化CRPS/S-CRPS,同时优化了校准和锐度。因此,采用S-CRPS作为一个重要的评价指标,它可以捕获预测分布相对于观测结果的准确性。考虑到计算复杂度和不同方法之间的可比性,我们计算了S-CRPS的分位数离散化,即公式11中的损失函数。为了和传统回归精度保持统一,这里考虑使用0.5分位数Loss做分析,即,PL订单使用QL_0.5,RL订单使用S-QL_0.5。QL_0.5是MAE(平均绝对误差)的一半,通常在SF中用于准确性评估。
离线评估
参数化方法对比
假定FPT数据符合高斯分布或伽马分布,离线评估环节对比了本文提出的非参数化模型与两种参数化模型的效果。其中,高斯分布常用于自然科学和社会科学,对不知道分布形状的随机变量进行刻画;伽马分布常用于预估等待时间。
高斯分布的概率密度函数为
伽马分布的概率密度函数为
为了公平起见,训练时模型结构不变,仅仅根据高斯分布、伽马分布调整神经网络最后一层。 模型输出高斯分布或伽马分布的模型参数(同样采用softplus激活函数及公式11中的loss)。从table3 和table4可以看出,除了0.2、0.3的累计概率密度,在其他分位数上,该文提出的模型都具有比较好的校准能力;同时,在锐度和回归精度方面,文中提出的模型也优于高斯分布和伽马分布。从原因来说,样本本身的真实分布与高斯分布、伽马分布的差异决定了后两者的效果上限,而文中提出的模型则更加灵活,更能够保证效果。
从第三行结果可以看出,我们提出的方法是校正效果最好,观测到的频率接近相应的累积密度(0.1~0.9)。
此外,对较大累积密度(0.6 ~ 0.9)的校准优于较小累积密度(0.1 ~ 0.5)的校准。
在锐度和回归精度方面,间隔(0.2,0.8)的平均宽度大于间隔(0.4,0.6),分别为349.42和105.80。PL/RL订单的S-CRPS(127.67/46.29)和0.5分位数损耗(90.30/29.77)。
Comparison with spot forecasting
该部分尝试与传统方法对比回归精度指标(传统SF方法聚焦在fixed value)。SF模型输出的是一个正数标量,为了保持对比公平性,依然采用QL_0.5作为loss,特征与模型结构也保持不变。从table5中可以看到对比结果。
(注意,训练时SF模型只使用PL订单)
可以看到,文中提出的方法在各PL、RL数据集上均好于SF模型。通过分析,这部分收益主要来自于RL订单,使用RL订单可以带来更多有用的信息。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。