Uber如何用循环神经网络 RNN 预测极其事情
在Uber系统内,事情预测使咱们能够依据预期用户需求来提高咱们的服务品质。最终目的是准确地预测出在预约的时期内Uber将会在何处,何时以及收到多少次的乘车恳求。
普通来说,极其事情——诸如假期、音乐会、顽劣天气和体育赛事等高峰游览时期,只会提高上班布局预测的关键性。在极其事情时期计算需求时期序列预测(demandtime series forecasting)是意外检测(anomaly detection),***资源调配(optimal resourceallocation)和估算的关键组成局部。
但无法疏忽的一个理想是,只管极其事情预测在Uber操作中占有无足轻重的作用,但数据稠密性使得准确的预测具备很大的应战性。比如元旦之夜(NYE),这是Uber最忙碌的日子之一。可是咱们只要少数几次元旦之夜的数据可以自创参考,而且每个实例或者有不同的用户群组。除了历史数据,极其事情预测还取决于许多外部要素,包括天气、人口增长和诸如驾驶员处罚措施这样的市场营销的变动。
无理想生存中,在规范R预测包中发现的经典时期序列模型,通常和机器学习方法组合在一同,从而用于不凡事情的预测,但是,这些方法关于Uber来说,既不灵敏也无法扩展。
在本文中,咱们引见一种将历史数据和外部要素相联合的Uber预测模型,以便更准确地预测极其事情,突出其新架构,以及如何与先前的模型启动比拟。
创立Uber的新的极其事情预测模型
随着时期的推移,咱们看法到为了扩展开展规模,咱们须要更新咱们的预测模型,从而准确预测Uber市场的极其事情。
咱们最终选择基于长短期记忆网络(LSTM)架构启动时期序列建模,LSTM架构是一种具备端到端建模特色,易于整合外部变量和智能特色提取才干的技术。经过在多个维度上提供少量数据,LSTM方法可以建造模拟复杂的非线性特色交互模型。
在选用好架构之后,咱们评价了训练模型所需的数据贮存,如下所示:
在市区中随时期推移而变动的规模性游览次数是用于训练咱们模型的历史数据贮存的一局部。请留意元旦夜时期数据的一个下跌,而后急剧下跌,示意人们在元旦夜时期乘用Uber回家。
其实,极其事情的预测是一件很艰巨的事情,关键要素是它们的不频繁性。为了克制这个数据毛病,咱们选择训练一个繁多的、灵敏的神经网络来一次性性地对许多市区的数据启动建模,从而大大提高了咱们的准确性。
用神经网络构建新的架构
咱们的目的是设计一个通用的、端到端的时期序列预测模型,它要具备可扩展性,准确性并且实用于异构时期序列。为了成功这一点,咱们经常使用了数千个时期序列来训练一个多模块神经网络。
咱们测量和追踪了原始的外部数据,从而构建了如下图所示的神经网络:
咱们的模型是经常使用外部变量,包括天气(例如降水、风速和温度预告)和市区级消息(例如在特定天文区域内的任何给定时期启动的游览,已注册Uber用户,本地假期或事情)的组合启动训练的。
这个原始数据用于咱们的训练模型中,来启动包括日志转换,缩放和数据转换这样便捷的预处置。
用滑动窗口启动训练
神经网络中的训练数据集须要滑动窗口X(输入)和Y(输入)来限定惯例值(例如输入大小)以及预测范围。经常使用这两个窗口之后,咱们便可以经过最小化损失函数(lossfunction),如均方差(Mean Squared Error)来训练神经网络。
X和Y窗口都是以单个增量滑动的,从而生成训练数据,如下所示:
X和Y滑动窗口是由批次,时期,特色(关于X而言)和预测特色(关于Y而言)组成的。
接上去,咱们就解释如何经常使用咱们的训练数据来设计自定义的LSTM模型。
调整咱们的LSTM模型
在测试时期,咱们确认,与基线模型(其中包括单变量预测和机器学习元素的组合)相比,vanillaLSTM操作并没有体现出优秀的功能。vanilla模型在未被训练的畛域内不能顺应时期序列,这造成在经常使用单个神经网络时体现并不是很好。
经常使用每一个时期序列要处置***目的的方式来训练一个模型是不实际践的:基本没有足够的资源可用,更不用说时期的有限性了。此外,训练繁多的vanillaLSTM不会发生竞争性的结果,由于模型不能辨别不同的时期序列。只管时期序列特色和输入可以手动加载到vanillaLSTM模型中,但这种方法是冗长有趣且容易出错的。
为了提高咱们的准确度,咱们在模型中引入了一个智能特色提取模块,如下所示:
咱们的模型由手动派生的时期序列特色(左)和咱们提出的具备智能特色提取模型(右)的LSTM架构组成。
咱们选择构建一个经过智能特色提取模块提供繁多模型、异质性预测的神经网络架构。正如上图所示,模型首先经过智能、基于集成的特色提取来初始化网络;在提取特色向量后,再经常使用规范集成技术对其启动平均。而后将***一个向量与输入衔接从而发生最终预测。
在测试时期,咱们能够成功基于LSTM架构的14.09%的对称平均相对百分比误差(SMAPE)改良,同时比Uber的实时监控和基本要素探求工具Argos中的经典时期序列模型优化25%。
随着咱们的架构的成功开发、定制和测试,如今正是将该模型投入消费经常使用的时刻了。
经常使用新的预测模型
一旦计算了神经网络的权重,它们就可以以任何编程言语方式启动导出和口头。咱们的路径是首先经常使用Tensorflow和Keras启动离线训练,而后将生成的权重导出为本地Go代码,如下所示:
该形容模型首先启动离线训练,而后导出到目的言语启动本机口头。
为了本文最后所设定的目的,咱们建设了一个模型,经常使用的数据关键来自于美国五年间经常使用Uber来成功假期游览的时期段,比如,像在圣诞节和元旦来临的七天之前、之间和之后所发生的数据。
在一些市区启动预测的时期,咱们搜集了经常使用之前的和如今的两种模型所发生的平均SMAPE,如下所示:
咱们的新预测模型的效果清楚优于以前的预测模型。
例如,咱们的新形式发现,预测最艰巨的假期之一是圣诞节,这与需求中的***失误和不确定性相对应。
咱们描画了一个市区200天的预期和实践成功游览的图表,如下所示:
一个市区200多天成功游览次数的模拟,咱们对同一数据的预测凸显了咱们新模型的准确性
咱们的测试结果标明,与咱们的专有模型相比,现有的模型的预测精度提高了2-18%。
只管神经网络对Uber来说优势颇多,但这种方法并不是“万金油”。依据以往的阅历,咱们定义了一个三维思想,以此来选择神经网络模型能否实用于你的状况:(a)时期序列数,(b)时期序列长度和(c)时期序列之间的关系性。相关于经典时期序列模型而言,这三个维度参与了神经网络方法启动更准确的预测的或者性。
未来预测
咱们计划继续经常使用神经网络,为异构时期序列创立一个通用的预测模型,作为一个独立的、端到端模型或更大的智能化预测系统中的构建块。假设你对这种钻研比拟感兴味的话,那么在2017年8月6日在悉尼的国内机器学习条约(InternationalMachine LearningConvention)时期,可以检查Uber的时期序列研讨会(。