在即时配送行业,ETA存在以下难点:

无法获取关键信息:ETA在用户(商户)下单时候就须要被展现,此时订单并未被骑手接单,因此无法提前获取骑手的信息及其实际的配送路径;须要考虑更多影响成分:一样平常的ETA问题仅需考虑景象、交通状况、时空信息及路径信息等,而即时配送中ETA除了考虑此类信息外,还需考虑商户的地理位置,商户的实时动态以及调度系统派单等信息;配送系统的调节中枢:须要平衡用户-骑手-商家-配送效率之间的关系;

骑手取货时长轻量级预估实践_特点_模子 科技快讯

站在骑手的角度看,可以将ETA抽象为以上这幅图。
图中将依据骑手的详细动态将全程ETA拆分为接单时长、骑行时长、取货时长、骑行时长和交付时长等五个阶段。

接单时长:紧张与用户(商户)下单时候该区域运力均匀水平、骑手规模等成分干系;骑行时长:紧张与取货间隔、路况、环境、景象、早晚高峰时候等成分干系;取货时长:紧张与商户画像(地址、经纬度、品类、均匀取货时长等)、商户实时特色(出单量、进单量、挤压状况等)、订单特色、早晚高峰时候等成分干系;骑行时长:紧张与送货间隔、路况、环境、景象、早晚高峰时候等成分干系;交付时长:紧张与用户画像(地址、经纬度、楼层、是否有电梯等)、早晚高峰时候等成分干系;

在以上五个阶段中,接单时长以及两段骑行时长基本上与用户、商户、订单等无关,更多的是与区域运力、路况、环境、景象等成分干系;而取货时长、交付时长则紧张与用户、商户、订单等干系,以是以此为打破口进行实践。

特色 & 模型 & 评估特色工程离线特色配送区域画像:城市id、区域id、区域运力均匀水平、骑手规模、单量规模、均匀配送间隔等;商户画像:商户POI信息(id、店名、品类、地址、经纬度、标签)、均匀接单/出货/到店/取货/投递时长、均匀配送间隔、出餐状况、单量、品类偏好、客单价等;用户画像:用户id、交付地址、交付经纬度、楼层、是否有电梯等;在线特色配送区域实时特色:在岗骑手实时规模、区域挤压(未取货)单量、运力负载状况等;商户实时特色:过去N分钟出单量、过去N分钟进单量、过去N分钟订单挤压状况、过去N分钟均匀接单/出货/到店/取货/投递时长;订单特色:价格、品类、数量、时段、是否周末、配送间隔等;环境特色:景象、温度、降水、风量等;模型迭代

在模型建立之初,该当明确一点,即ETA预估属回归问题,即根据多维度特色预测出某个详细数值。

结合以上特色不难创造,离线特色中存在大量id类特色,如城市id、区域id、商户id、用户id等,以是模型需能办理高维稀疏特色的处理;同时模型不能过于繁芜,因ETA预估属根本做事,对打算性能哀求较高。

LR(Linear Regression)

逻辑回归是最根本的回归模型,在项目刚启动时作为baseline。

从逻辑回归的公式可以看出,该模型将每个特色演习一个参数,笔者最开始只考虑了“时段”、“是否周末”、“物品类型”三个特色作实验。
研究创造,逻辑回归常日会将“时段”拟合出一条曲线,该曲线每每与整体的均匀取货韶光重合(想一想为什么?),而“是否周末”、“物品类型”的改变只会影响曲线的整体上移或下移。
这明显是不符合常理的,但也解释了逻辑回归的毛病:特色之间独立!

事实上,大量特色之间是有关联的。
为理解决特色独立问题,可以利用特色组合(多项式),即将特色与特色之间进行交叉。

但对付离散特色来讲,常日在模型演习之前会进行One-Hot编码,编码后的向量非常稀疏。
如上式所示,若直接进行特色交叉(多项式)则特色维度会非常之大,韶光繁芜度也为O(kn^2),非常不利于模型演习。
于是,Steffen Rendle于2010年提出FM(Factorization Machines)模型,目的是为理解决稀疏数据下的特色组合问题。

FM(Factorization Machines)

LR紧张引入矩阵分解的思想求解特色交叉项的权重,韶光繁芜度从O(kn^2)降到O(kn)。
详细细节在此不再展开,普通来讲,FM是在LR的根本上增加了二阶(或更高阶)的特色交叉,且韶光繁芜度还保持线性。

paper: https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf

根据paper描述,FM有以下三个优点:

可以在非常稀疏的数据中进行合理的参数估计;模型的韶光繁芜度是线性的;作为一个通用模型,其演习数据的特色取值可以是任意实数;FFM(Field-aware Factorization Machine)

FFM作为FM的升级版,与FM比较紧张引入了field观点,FFM把相同性子的特色归于同一field。

在FFM中,每一维特色,针对其它特色的每一种field,都会学习一个隐向量。
因此,隐向量不仅与特色干系,也与field干系。
须要把稳的是,FFM的特色交叉项并不能够简化,韶光繁芜度为O(kn^2)。

paper: https://www.csie.ntu.edu.tw/~cjlin/papers/ffm.pdf

DeepFM

目前在CTR或ETA领域的预估,最主要的是学习到行为背后的特色组合。
在不同的场景下,低阶特色组合和高阶特色组合都可能会对终极的预估结果产生影响。

人工办法的特色工程,常日面临两个问题:特色爆炸和特色之间如何组合。
针对这两个问题,广度模型和深度模型供应了不同的办理思路。
个中广度模型(LR、FM、FFM)通过对特色的低秩展开,为每个特色构建隐式向量,并通过隐式向量的点乘结果来建模两个特色的组合关系进而实现对二阶特色组合的自动学习;而深度模型(FNN、Wide&Deep)通过神经网络构造和非线性激活函数,自动学习特色之间繁芜的组合关系。

但目前广度模型和深度模型都有各自的局限,广度模型一样平常只能学习1阶和2阶的特色组合;而深度模型一样平常学习的事高阶特色组合。
DeepFM模型结合了广度和深度模型的优点,联合演习FM模型和DNN模型,特色Embedding化后,在FM根本上加入deep部分,分别针对稀疏特色及稠密特色做领悟;FM部分通过隐变量内积办法考虑一阶及二阶的特色领悟,DNN部分通过Feed-Forward学习高阶特色领悟。

DeepFM相对付现有的广度模型、深度模型来讲,其上风在于:

DeepFM模型同时对低阶特色组合和高阶特色组合建模,从而能够学习到各阶特色之间的组合关系;DeepFM模型是一个端到真个模型,不须要任何的人工特色工程;

paper: https://arxiv.org/pdf/1703.04247.pdf

评估方法N分钟准确率:实际投递时长与预估时长的绝对偏差在N分钟内的概率;N分钟业务定时率:实际投递时长与预估时长的差值在N分钟内的概率;多少问题及办理方法如何合理利用骑手信息

骑手对每个区域的熟习程度不同,将城市划分成以“网格”为最小单元的不同区域。

ETA在用户下单时候就须要被展现,此时订单指派给详细哪位骑手是未知的。
为充分利用与骑手干系的影响成分,会根据骑手取餐间隔、骑手当前身上的订单数等特色表征每一位可能接单的骑手,然后将骑手序列进行特色编码传入外卖ETA模型中,随后利用把稳力机制提取骑手序列信息,以此来增强模型的预测能力。

后处理

虽然演习数据已经做了数据洗濯,但难免会存在一些非常订单,而这些非常订单会影响整体模型的效果,详细表现为所预估的取货时长为负值或者为2小时以上的非常值,以是须要对预估的取货时上进行后处理。

后处理的详细做法是利用该商户的均匀取货时上进行缩放,进行最大最小值的限定(最小值常日为0,最大值常日为均匀取货时长的3倍)。
当所预估的取货时长为负值时就取最小值,当所预估的取货时长为较大的非常值时,就取最大值。

长尾问题业务长尾:整体样本分布造成的长尾;紧张表示在间隔、价格等维度;间隔越远,价格越高,实际投递韶光越长,但样本占比越少;模型长尾:由于模型自身对预估值的不愿定性造成的长尾;模型学习的是整体的统计分布,但不是对每个样本的预估都有“信心”;可采取多棵决策树输出的标准差衡量不愿定性;预估效果展示某餐饮店

上图是某餐饮店分别针对“美食”、“主要物品”、“其他”等三种物品类型所作出的取货时长预估。

从中可以看出,“美食”、“其他”两种类型基本与该商户的均匀取货时长持平,而“主要物品”类型相较于均匀取货时长则大幅度降落。
究其缘故原由也不难阐明,因其为餐饮店,故“美食”等货韶光较久;而“主要物品”每每是手机、钥匙、证件等,不需过历久待;再者,“其他”中每每包含各种各样的无标签物品,与均匀取货时长持平也可理解。

某宠物店

同样是针对“美食”、“主要物品”、“其他”等三种物品类型所作出的取货时长预估,不同的是上图针对的是某宠物店,紧张是为了与某餐饮店做比拟。

从中可以看出,三种类型的取货时长预估结果类似,并没有像某餐饮店似的有大幅度变革。
其缘故原由也很随意马虎阐明,因其为宠物店,发布“美食”的订单险些为0,更多的是“主要物品”或“其他”,那么为什么“美食”类型预估的结果与其他两种类似呢?由于若该类型的订单(演习数据)较少的话,模型就会学习整体的均匀水平。
这种征象在上图的0~10点区间更能解释,宠物店每每只有白天业务,那么晚上的订单(演习数据)险些没有,若偶尔涌现一个深夜订单难道模型就没办法预测了吗?很明显不是的,模型会结合多特色维度学习整体的均匀水平。

模型支配

利用Django框架进行支配,url地址ip:port/predict/,采取post办法访问接口,request和response字段解释如下所示。

request

名称

类型

解释

orders

dict

须要预估的订单信息,key为订单id,value为订单信息,其类型也为dict,包括user_id、city_id、publish_time、goods_type、distance

default_value

float

现阶段模型暂不支持冷启动,若所预估user_id不存在于模型中,则返回此默认值

名称

类型

解释

user_id

int

该订单所对应的用户id

city_id

int

该订单所对应的城市id

publish_time

str

该订单的发布韶光,形如yyyy-mm-dd hh:mm:ss

goods_type

str

该订单的物品类型

distance

int

该订单的取货间隔,即骑手到商户的间隔

response

名称

类型

解释

code

int

返回码。
200:成功;300/301/302/303/400:失落败

msg

str

返回

ret

dict

预估结果,key为订单id,value为订单信息,其类型也为dict,包括code、msg、pickup_duration

名称

类型

解释

code

int

返回码。
200:成功;201:默认值;300/301:失落败

msg

str

返回

pickup_duration

float

预估取货时长

思考和展望

万事开头难,目前针对估量投递韶光的预估只做了五阶段中的其一,且该预估实践算是UU跑腿利用人工智能技能在ETA领域迈出的第一步,虽已上线利用,但还存在很多不敷,例如考虑特色不全面、冷启动问题等,故在今后的事情中,将环绕以下三方面重点展开:

连续优化骑手取货时长,重点放在特色工程方面,可以利用商户特色演习embedding以办理冷启动问题,加入商户地址、坐标等POI信息;借鉴取货时长模型策略,适当调度特色和模型,办理交付时长的预估;探索接单时长、骑行时长的预估算法;参考资料

https://mp.weixin.***.com/s/qyegF_r_SPGnkEdZqkVjxA

https://mp.weixin.***.com/s/LgXP2IRbyidRSSH9U7q5RQ

https://zhuanlan.zhihu.com/p/146916779

https://zhuanlan.zhihu.com/p/261985122

https://www.zhihu.com/question/496861462

https://tech.meituan.com/2019/02/21/meituan-delivery-eta-estimation-in-the-practice-of-deep-learning.html

https://tech.meituan.com/2017/11/24/gbdt.html

https://mp.weixin.***.com/s/Mes1RqIOdp48CMw4pXTwXw

出处:https://tech.uupt.com/?p=705