干货 | 机器学习算法在饿了么供需平衡系统中的应用

干货 | 机器学习算法在饿了么供需平衡系统中的应用

image:url(https://ask.qcloudimg.com/avatar/1292807/6341kxs4h2.png?imageView2/2/w/72)">用户1292807发表于携程技术中心订阅

830

作者简介

陈宁,饿了么人工智能与策略部高级算法专家,负责供需平衡系统的算法与研发工作。获新加坡南洋理工大学计算机博士学位,研究方向包括:数据挖掘,机器学习,自然语言处理,软件工程等,曾发表7篇顶级国际会议 (期刊)论文。

一、前言

即时配送物流系统是外卖领域核心价值所在。区别于其他物流,这个行业的“物流”是希望30分钟内能够送到,这就对我们的算法模型具有很大的挑战。智能调度系统更是即时配送物流系统中的核心。

在本文中,我将介绍饿了么的智能调度系统,着重介绍其中的压力平衡子系统,并通过两个实例,分享机器学习算法在构建压力平衡系统中起到的关键作用以及取得的成果。

希望通过本文,帮助一线的机器学习算法工程师和爱好者们了解饿了么即时配送系统中压力平衡系统的构建,以及如何利用常见机器学习算法有效地解决O2O场景下的实际问题。

二、饿了么智能调度系统

饿了么智能调度系统是外卖即时配送领域中最核心的环节,该系统替代了调度员大部分的工作,减少了人力介入的程度,实现了自动化、智能化的派单。

智能调度系统主要可以划分为四个子系统,如图1所示:

图1 饿了么智能调度系统

  • 智能派单:包括骑手与订单的匹配策略, 骑手的路径规划等;
  • 时间预估:包括骑手行程时间预估, 骑手楼内停留时间预估, 出餐时间预估与下单送达时间预估等;
  • 供需平衡:包括实时的压力平衡,中长期订单预测、运力规划和短期的骑手排班等;
  • 位置服务:包括配送范围划定, 商圈/楼宇/配送点的建设,位置校准等。

以上各个子系统相辅相成,组成了整个饿了么智能调度系统。本文中我将重点介绍机器学习算法在供需平衡中的实时压力平衡系统中起到的作用。

三、压力平衡系统

3.1 系统目标

压力平衡系统要解决的问题是:当配送供给(骑手)与用户需求(订单)出现日内的异常不匹配时,为了保证用户体验不受到过大损伤,及时有效地使用调控手段来平衡需求与供给。

图2 压力平衡系统目标

造成用户需求和配送供给日内异常不匹配的原因有很多:比如遇到恶劣的天气、商家搞一些临时性的大活动,骑手运力本身不充足等。

当出现异常不匹配时(压力高于某个阈值),压力平衡系统会采取一定的措施。比如上调配送费、缩小配送范围、下满减活动、关店等。

3.2 算法框架

图3展示了压力平衡算法的总体架构:

图3 压力平衡算法框架图

首先,图3的最上方 (M1) 展示的是团队(饿了么组织运力的最小单元,一个团队由若干骑手组成) 压力系数及其辅助指标的实时监控和预测模块。这个模块主要的作用是估算自动调控开始的最佳时机和调控的量化控目标:即当压力系数大于一定的阈值时,开始自动采取一系列的措施,使得压力系数降低到可接受的范围。

其次,图3的中部 (M2) 展示的主要是两个模块:1)餐厅理解;2)调控策略池。其中,餐厅理解:利用餐厅重要性排序模型,单店爆单模型,餐厅配送难度等信息来细化调控的基本单元,它使我们知道哪些餐厅是应该首先被调控的。调控策略池包含了调控可用的调控手段,例如:增加配送费,下大额满减活动,缩小餐厅的配送范围等。

最后,图3的底部 (M3) 展示的是自动调控策略生成主模型:我们会根据量化的调控目标,来优化单个或多个指标的组合。通过数据、算法来决定调控哪些餐厅,每个餐厅使用什么样的调控策略。

图中每个模块都通过数据驱动,应用了机器学习算法来实现相应的目标。图中绿色标记是我们已经完成的,标记黄色部分是我们正在或者规划中的工作。在第四章中,我将通过两个例子来介绍我们取得的一些成果。

3.3 数据监控

我们还构建了一套策略实时监控系统,方便相关人员查看。例如,图4显示的是某个团队的实时压力系数。团队压力系数,我们做到了归一化(所有团队值域一致,含义一致),并且能根据天气、温度等情况自适应地变化。当前,这个指标我们做到了每隔5分钟更新一次。在第四章中,我将会更加详细地介绍团队压力系数的计算方式。

图4 压力系数监控看板

四、机器学习算法在压力平衡中的应用

在这个章节中,我将通过两个案例来介绍机器学习算法在构建饿了么压力平衡系统中起到的关键作用。

4.1 骑手最大背单能力模型

骑手的最大背单能力反应了一个骑手的水平,是骑手画像的非常重要的组成部分。第一版,由于我们只是为了得到团队的最大背单能力,所以我们只使用了简单的规则,计算了团队的平均最大背单能力,用这个平均最大背单能力作为这个团队骑手的最大背单能力。显然,这是非常不合理的。

在第二版中,我们通过一些负责的规则,将骑手分成了若干等级,每个等级的骑手具有一个相同的最大背单能力。这个版本的骑手最大背单能力具有了一些个性化,但是任然无法细致、有效地区分不同骑手的水平。

在第三版中,我们采用了机器学习的方法,把这个问题抽象成一个二分类的问题,从而得到了每个骑手在不同背单量情况下超时的概率。图5显示了以上介绍的迭代内容,下面介绍V3.0版本我们的思路。

图5 骑手最大背单能力模型迭代

解决这个问题的关键思路在于,我们将骑手最大背单能力的估算转化为一个二分类问题。具体步骤如下:

第一步:我们队每张骑手的运单构建一条训练数据;

第二步:统计这张运单运送过程中骑手的最大背单量作为其中一个特征;

第三步:统计其他特征,包括骑手画像相关特征,天气特征等;

第四步:构建二分类的Label,一张运单超时记为1,不超时记为0;

第五步:使用大量的训练数据,训练得到一个线性的二分类模型;

第六步:给定一个骑手,固定其他特征,并滑动最大背单量特征,得到该骑手在不同最大背单量下超时的概率。

下面,我详细介绍一下特征工程部分,主要包括以下几块内容:

1)骑手历史最大非超时背单量。包含前28天、21天、14天、7天、5天、3天的骑手平均最大非超时背单量; 2)天气和温度信息; 3) 骑手的个性化信息:包括骑手的等级,骑手的工作天数,骑手所在团队的信息等; 4) 时间信息:主要包括该日是一周的哪一天,是否是工作日两个特征; 5)运单信息:运单运送过程中骑手的身上最大背单量。

接下来我介绍一下模型的选择和训练集和预测集的构造。根据简单有效原理(即:奥卡姆剃刀定律),我们采用了常用的线性模型,即Logistic Regression(LR)模型,我们的考虑如下:

  • 线性模型,模型非常简单,有效,计算速度快;
  • 模型可解释性很强,便于业务人员理解;
  • 问题需要输出[0,1]之间的概率值, LR使用sigmoid函数能够将预测值转化为概率值。

训练集的构造我们采用了最近14天的运单数据,即数据日期范围是[T-13,T], 时间范围限定在了午高峰(10:30~12:30)。由于超时单相比非超时单占比非常小,所以我们对正负样本的比例进行了调整,对非超时样本按照10%左右进行了降采样。

在构造测试集时,我们对运单运送过程中骑手的最大背单量特征进行滑动,从0 ~ 30按照0.5的间隔进行构造。然后通过训练的模型进行预测,从而得到骑手在不同背单量下的超时概率。如图6所示, 是taker_id =342853的骑手在不同max_order_num_on_taker情况下超时的probability。

图6 骑手在不同背单量情况下超时的概率

下面我来介绍一个骑手最大背单模型的重要应用场景,即计算团队的压力系数:

我们定义团队压力系数 = load / (q1 + q2 + .... qn)

1)load = 团队负载

2)qn = 该团队第n位骑手的个性化最大背单量(使用骑手最大背单模型计算的数值)

团队压力系数的定义简洁有效,直接支持了饿了么即时配送相关10多个相关业务系统:包括智能派单,压力平衡,运单分流,T模型,客服系统等。

4.2 团队压力系数预测模型

正如章节4.1所介绍,团队压力系数是即时配送中一项非常重要的基础指标,因此,如果我们能提前预测这一指标将会对多个业务系统产生巨大的价值。基于此,我们构建了一个实时的团队压力系数预测模型,它能够每隔5分钟对团队未来1个半小时(每15分钟一个时间片,共6个时间片)的压力系数进行预测。图4中的虚线即展示了其中一次预测的值。我们将这个模型应用在以下2个场景中:

1)定量描述压力平衡自动调控的目标,辅助确定自动调控的时间点,进行提前调控;

2)应用在智能派单策略上,通过压力系数的预知,规划不同的派单策略。

如下图所示:截止目前,我们完成了团队压力系数预测模型的三轮迭代。通过

持续迭代,我们大幅提高了模型预测的准确率和预测的频率。

五、总结展望

通过本文,我们希望读者能够对饿了么即时配送体系中的压力平衡系统以及如何利用常见的机器学习算法有效解决O2O场景下的实际问题有所了解。展望未来,压力平衡系统中仍然有很多问题可以抽象成机器学习问题(例如:排序学习,时间序列等),希望在不久的未来,有机会和大家分享我们更多的成果。

原文发布于微信公众号 - 携程技术中心(ctriptech)

原文发表时间:2018-01-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于
  • 干货 | 携程个性化推荐算法实践
  • 干货 | 平安银行算法实践
  • 干货 | 机器学习在酒店呼叫中心自动化中的应用
  • 干货 | 深入理解Python装饰器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

研讨会 | “人工智能与行业知识图谱技术实战”研讨会

人工智能时代2017年7月,国务院《新一代人工智能发展规划》明确提出“建立新一代人工智能关键共性技术体系”的重点任务和设立“新一代人工智能重大科技项目以及“1N”人工智能项目群”,特别强调“研究跨媒体统一表征、关联理解与知识挖掘、知识图谱构建与…

Sigmoid函数与Softmax函数的区别与联系

目录 缘起逻辑回归 Sigmoid Softmax 缘起逻辑回归 逻辑回归模型是用于二类分类的机器学习模型(不要说逻辑回归可以做多类分类啊喂,那是二类分类器的组合策略问题,而与逻辑回归分类器本身的构造没有半毛钱关系啊)。 我们知道&…

数据挖掘算法(logistic回归,随机森林,GBDT和xgboost)-腾讯云社区

机器学习就是样本中有大量的x(特征量)和y(目标变量)然后求这个function。(了解更多可以看: https://zhuanlan.zhihu.com/p/21340974?refermlearn ) 求函数的方法,基于理论上来说&am…

阿里P8高级架构师教你如何通过BAT面试顺利拿到offer

“ 在开始面试之旅之前还是要多说几句,选公司是要看时机的 ,建议先去小公司试试水,找找感觉,其次建议选熟人内推,也是对面试成功率有帮助的,那么就开始今天的面试之旅吧。 一:招聘方式 BAT技术…

论文浅尝 | SenticNet 5: 借助上下文嵌入信息为情感分析发现概念级别的原语

Citation: Cambria E, Poria S, Hazarika D, et al.SenticNet 5: discovering conceptual primitives for sentiment analysis by meansof context embeddings[C]//AAAI. 2018.概述目前大部分的人工智能的研究都集中在基于统计学习的方法,这些方法需要大量的训练数据…

文本匹配(语义相似度)综述

本文转载自公众号“夕小瑶的卖萌屋”,专业带逛互联网算法圈的神操作 -----》我是传送门 关注后,回复以下口令: 回复【789】 :领取深度学习全栈手册(含NLP、CV海量综述、必刷论文解读) 回复【入群】&…

大型网站架构设计

“ 大型网站的架构设计,涉及到的面非常多,并不像大家想象的那样,就是一个网站这么简单,今天抛砖引玉,希望能给想从事互联网行业的同学一点初步的概念。 架构设计,其实就要清楚整个大型网站技术架构的演变…

强化学习之原理与应用

PaddlePaddle原创2019/02/20 17:23强化学习之原理与应用强化学习特别是深度强化学习近年来取得了令人瞩目的成就,除了应用于模拟器和游戏领域,在工业领域也正取得长足的进步。百度是较早布局强化学习的公司之一。这篇文章系统地介绍强化学习算法基础知识…

论文浅尝 | 基于多原型mention向量的文本-实体联合学习

链接:http://anthology.aclweb.org/P/P17/P17-1149.pdf概述在知识库和文本的联合表示中,歧义是个困扰的难题。同一个 mention 可能在不同的语境下表述不同实体,同一个实体又有多种 mention 表示,如下图。本文提出了一个新的表示方…

NLP预训练模型综述:从word2vec, ELMo到BERT

目录 前言 word2vec 模型 负采样 char-level与上下文 ELMo BERT 深层双向的encoding 学习句子与句对关系表示 简洁到过分的下游任务接口 前言 还记得不久之前的机器阅读理解领域,微软和阿里在SQuAD上分别以R-Net和SLQA超过人类,百度在MS MARCO…

一篇文章了解架构设计的本质

“ 大型网站的架构设计,涉及到的面非常多,并不像大家想象的那样,就是一个网站这么简单,今天抛砖引玉,希望大家正确看待架构设计。 什么是架构设计的本质? 任何系统,自然情况下,都是…

看完这篇Linux基本的操作就会了

只有光头才能变强这个学期开了Linux的课程了,授课的老师也是比较负责任的一位。总的来说也算是比较系统地学习了一下Linux了~~~ 本文章主要是总结Linux的基础操作以及一些简单的概念~如果不熟悉的同学可下个Linux来玩玩(或者去买一个服务器玩玩【学生版的不是很贵】…

论文浅尝 | 基于知识图的问答变分推理

Zhang Y, Dai H, Kozareva Z, et al. Variational Reasoning for Question Answering with Knowledge Graph. Proceedings of 32th AAAI 2018动机传统的知识图谱问答主要是基语义解析的方法,这种方法通常是将问题映射到一个形式化的逻辑表达式,然后将这个…

阿里P8架构师谈:分布式架构设计(文章合集)

Docker容器 阿里P8架构师谈:Docker简介、组成架构、使用步骤、以及生态产品 阿里P8架构师谈:Docker容器的原理、特征、基本架构、与应用场景 消息中间件 阿里P8架构师谈:消息中间件介绍、典型使用场景、以及使用原则 阿里P8架构师谈:分布…

NLP史上最全预训练模型汇总

本文转载自公众号“夕小瑶的卖萌屋”,专业带逛互联网算法圈的神操作 -----》我是传送门 关注后,回复以下口令: 回复【789】 :领取深度学习全栈手册(含NLP、CV海量综述、必刷论文解读) 回复【入群】&…

论文浅尝 | 基于迭代的概率规则约束的知识图谱分布式表示

Citation:Shu Guo, Quan Wang, Lihong Wang, Bin Wang, Li Guo.Knowledge Graph Embeddingwith Iterative Guidance from Soft Rules. AAAI 2018. 动机知识图谱的分布式表示旨在将知识图谱中的实体和关系表示到连续的向量空间中,本文考虑的问题是如何将知识库的分布…

笔记:毫米波雷达传感器,优势、应用和产业规模

信息来源:https://www.sohu.com/a/314806539_465219 优势 非接触式传感,可检测物体的距离、速度和角度信息,唯一可以“全天候全天时”工作的传感器系统组件(比如天线)的尺寸可以做到很小穿透性:穿透塑料、墙板和衣服等特殊材料高…

「优知学院」淘宝架构的前世今生(下)

“ 淘宝技术架构前世今生就是一部架构活教材,今天仍然由陈睿mikechen为大家解读淘宝架构。 我稍微把前面淘宝架构的三个阶段简短总结: 淘宝1.0 采用LAMP mysql读写操作 淘宝2.0 把mysql替换为oracle,为了使用oracle的连接池,php采用代理连…

学习排序 Learning to Rank:从 pointwise 和 pairwise 到 listwise,经典模型与优缺点

Ranking 是信息检索领域的基本问题,也是搜索引擎背后的重要组成模块。本文将对结合机器学习的 ranking 技术——learning2rank——做个系统整理,包括 pointwise、pairwise、listwise 三大类型,它们的经典模型,解决了什么问题&…

论文浅尝 | 从 6 篇顶会论文看「知识图谱」领域最新研究进展 | 解读 代码

本文内容源自往期「论文浅尝」,由 PaperWeekly 精选并重新排版整理,感谢 PaperWeekly。ISWC 2018■ 链接 | http://www.paperweekly.site/papers/1912■ 源码 | https://github.com/quyingqi/kbqa-ar-smcnn■ 解读 | 吴桐桐,东南大学博士生&a…