[译] 解密 Uber 如何使用RNN预测极端事件

news/2024/6/26 8:05:37

原作者:NIKOLAY LAPTEV, SLAWEK SMYL, & SANTHOSH SHANMUGAM

原文地址:https://eng.uber.com/neural-n...

clipboard.png

在Uber,事件预测能够给辅助推断用户需求。它包含几个要素:何地、何时、有多少用户在任意时间内将会到达。

极端事件发生的时间比如:节假日、音乐会、恶劣天气、运动赛事在提高预测精度方面都非常重要。在极端事件中计算需求时间序列是异常检测、最有资源分配、预算中是关键的一环。

虽然极端事件预测是一个 Uber 运营中关键的一部分,但是却面临数据稀疏对预测精度的挑战。想象一下,在除夕夜预测,那么需要为数不多的除夕夜数据而且在每个用户分组里都不尽相同。对于传统的历史数据,极端事件预测也依赖于大量外部因素,比如天气、人口增长、市场变化比如运力激励

一个经典的时间序列模型的组合比如标准的R包和机器学习方法是通常被用来预测事件。这些方法对于Uber来说不够具有灵活性和拓展性。

本文,我们引入Uber结合历史数据和外部因子的极端事件预测模型,相比此前模型主要在架构上有些亮点。

创建 Uber 新的极端事件预测模型

经过一段时间,我们意识到为了满足业务增长的需要,我们需要提升我们的预测模型精度。

我们最终使用了LSTM架构构造时间序列模型,它是一个端到端提取特征的建模方法,容易从每个外部变量中自动提取特征。通过提供海量高维数据,lstm的方法可以构建复杂非线性特征交叉。

在选定框架之后,我们使用备份数据训练模型:

图 1: 骑行增长数量随着时间推移而变化。断层处表示在新年有许多人用Uber乘车回家。

极端事件预测因为它们不同的频率所以带来了困难,为了克服数据缺陷,我们决定训练单一、灵活的神经网络来给许多城市做一次性建模,这极大提升我们的进度。

用神经网络建立一个新的体系结构

我们的目标是设计一个通用、端到端时间序列预测模型,满足可拓展、精确并且适用于异构时间序列。为了实现这个目标,我们使用成千上万的时间序列来训练多个模块的神经网络。

我们测量和跟踪原始外部数据来建立神经网络:

clipboard.png

图 2:我们的模型使用一些衍生变量的组合,包括天气(降水、风速、温度)、城市信息(给定时空范围的骑行量)、注册用户信息、当地节日与事件。

这些原始数据被用在我们的模型训练上来进行简单预处理,包括日志解析、扩容和数据趋势消除。

使用滑动窗口训练

训练集包括滑动窗口数据(输入 X)和(输出Y),使用这两个窗口,可以训练神经网络最小化损失,比如使用RMSE作为评估。

X 和 Y 的窗口滑动每次都增加一些小的训练数据:

clipboard.png

图3:X和Y的滑动窗口包括 批处理大小、时间、特征(X)和预测变量(Y)。

接下来,将解释如何使用训练数据来设计一个自定义LSTM模型。

裁剪LSTM模型

在测试期间,我们会用一个没有调整过任何参数的简单 lstm 作为模型基准,包含多变量预测因子和机器学习要素。该模型在使用单一神经网络时表现较差,单一适应时间序列。


http://lihuaxi.xjx100.cn/news/280790.html

相关文章

分布式事务的实现原理

点击上方“方志朋”,选择“置顶或者星标”你的关注意义重大!事务是数据库系统中非常有趣也非常重要的概念,它是数据库管理系统执行过程中的一个逻辑单元,它能够保证一个事务中的所有操作要么全部执行,要么全不执行&…

php pdo 判断数据条数据,PDO一次查询一行数据

这篇文章主要介绍的内容是关于PDO一次查询一行数据&#xff0c;有着一定的参考价值&#xff0c;现在分享给大家&#xff0c;有需要的朋友可以参考一下<?php require pdo_edu_config.php;try{$pdonew PDO($dsn,$userName,$passWord);$sql"SELECT id,name,course,grade …

燃爆,100个Python实战小项目汇总!

每一篇文章都是一个知识点&#xff0c;一个小小的代码实践&#xff0c;总有一篇是你想要的&#xff01;小实战全网首发&#xff01;华为任正非&#xff0c;近20年400多段高清音频演讲故宫下雪了&#xff01;我花了45秒&#xff0c;用Python给它画了一组手绘图2.14情人节&#x…

GitHub代码一键转VS Code:只需+1s

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达 本文转自 | 机器之心导读 被微软收购后的 GitHub&#xff0c;正在变得越来越易用&#xff0c;现在又有人把它和「宇宙第一 IDE」VS Code 紧密联系起来了。VS Code 是一个…

玩王者荣耀用不好英雄?两阶段算法帮你精准推荐精彩视频

作者 | Wentao Yao, Zixun Sun, Xiao Chen译者 | 孙薇编辑 | Jane出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;【导读】近日&#xff0c;腾讯三位工程师在arXiv上发表了论文&#xff0c;分析如何利用算法&#xff0c;针对热门手游“王者荣耀”游戏视频进行快速检…

CentOS7中使用efibootmgr管理UEFI启动项

UEFI是一种固件接口&#xff0c;在现代机器上已经取代了传统的BIOS。 UEFI固件的一个特性是能够在持久可编辑的NVRAM (Non - Volatile RAM&#xff0c;非易失性内存)中保存启动项。 在UEFI模式下安装Linux操作系统时&#xff0c;通常会将相关的引导项写入NVRAM&#xff0c;在某…

条件注解 @ConditionalOnBean 的正确使用姿势

本文转载于公众号“吉姆餐厅ak”条件注解是Spring4提供的一种bean加载特性&#xff0c;主要用于控制配置类和bean初始化条件。在springBoot&#xff0c;springCloud一系列框架底层源码中&#xff0c;条件注解的使用到处可见。不少人在使用 ConditionalOnBean 注解时会遇到不生效…

分布式服务框架-原理与实践:14---流量控制-学习笔记(理论篇)

2019独角兽企业重金招聘Python工程师标准>>> 上次学了灰度发布&#xff0c;这次我们学习流控。 当资源成为瓶颈时,服务框架需要对消费者做限流&#xff0c;启动流控保护机制。 想做流控&#xff0c;就得有策略&#xff0c;比较常用的有: 1)针对访问速率的静态流控 …