We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode Real-Time Forecasting Faceoff: Time Series vs. DNNs // Josh Xi // #305

Real-Time Forecasting Faceoff: Time Series vs. DNNs // Josh Xi // #305

2025/4/11
logo of podcast MLOps.community

MLOps.community

AI Deep Dive AI Chapters Transcript
People
J
Josh Xi
Topics
Josh Xi: 我在Lyft的市场团队工作,负责构建预测模型来平衡供需。我们使用实时预测模型,对每个地理哈希单元(约1平方英里)进行未来5分钟到1小时的预测。这需要处理数百万个数据点,并整合外部数据源,如事件和天气数据,但这些数据整合起来具有挑战性。我们发现,传统的基于时间序列的预测方法(如自回归模型)在实际应用中表现优于深度神经网络 (DNN)。时间序列模型更易于解释,更容易进行人工干预调整,并且在处理实时、高频数据时更有效率。我们每分钟对模型进行再训练,以保持高精度,尽管这会带来高昂的计算成本。我们也尝试了时间序列基础模型,在某些用例中效果良好,但在实时、高粒度预测方面不如传统的自回归模型。在模型训练和服务方面,自回归模型的成本远低于DNN,并且更容易进行在线再训练,从而更好地适应市场动态。我们通过在线再训练、集成多个模型以及使用启发式规则进行偏差校正来提高预测精度。我们计划将区域级离线预测模型与实时预测模型结合,以提高精度并更好地处理特殊事件。处理时空数据的模型需要考虑空间相关性,这增加了模型的复杂性和训练难度。由于人类行为的复杂性和变化性,准确预测出行需求具有挑战性。我们主要关注区域层面的异常值分析,并通过自动化的模型调整和偏差校正来处理预测误差。 Demetrios: (主要以提问和引导讨论为主,没有形成具体的核心论点)

Deep Dive

Chapters
This chapter introduces Lyft's real-time forecasting system, focusing on the challenges of balancing supply and demand in a dynamic market. The discussion highlights the use of geohashes for granular forecasting and the importance of incorporating external data sources.
  • Lyft uses real-time forecasting to manage supply and demand.
  • Forecasting is done at the geohash level (e.g., GeoHash 6, approximately one square mile).
  • External data sources (events, weather) are incorporated but pose challenges.

Shownotes Transcript

Josh XI,我在Lyft做了一年多高级数据科学家。我咖啡怎么喝?拿铁不错,我喜欢,加奶油牛奶。我最近发现了一种6%脂肪的牛奶,超级浓稠,几乎像半乳脂,但味道真好。大家好!

我们又回到了MLOps社区播客。我是主持人Demetrios。今天我们讨论时间序列机器学习模型与深度神经网络。Josh对此有一些强烈的观点,但我们也想知道你是否对两者之一有自己的看法。他刚在录音结束后告诉我,他很想收到大家的评论,以防他遗漏了什么,并且想知道……

以及如果大家采取与他不同的方法,都在做什么。让我们开始这次对话吧。首先,告诉我你在做什么,因为我觉得它很吸引人,而且深入细节,我喜欢。所以我想知道关于它的一切。

我在大型核心市场团队,该团队主要负责Lyft市场的供需平衡。从本质上说,我们是一个平台团队。你有一方是需求方,一方是供应方,你想在这两者之间取得市场平衡。

你可以通过不同的杠杆来做到这一点,比如定价。通常,如果需求过高,你可以提高价格来抑制需求。或者你可以提供司机激励来吸引更多司机。两者都可以在实时或长期内发生。长期定价更像是优惠券,你可以发送优惠券来吸引更多乘客到平台上。但所有这些模型或杠杆都需要大量的信号输入。

最基本的一个将是预测需求或预测供应。我的团队叫做市场信号团队,它基本上提供所有这些进入这些模型的关键信号或特征。你需要知道现在发生了什么,但你也需要知道未来会发生什么。因此,这些杠杆需要大量的预测。我想我从一些人那里听说过,

离开Lyft的人谈到你们在任何给定时间运行的模型数量之多。也许不是说

是不同的模型。只是在世界不同地区或美国不同地区运行的模型不同。所以它们是很相似的模型,但有点不同,我想,差不多,但又不一样。是的,实际上数量巨大。基本上,Lyft非常依赖数据。所以所有这些杠杆都在

同时在不同的地区运行。我的团队面临的一组问题是我们称之为实时预测的问题。基本上,对于每个geohash(对于那些不知道geohash的人来说,它就像一个典型的标准区域定义,有点像邮政编码,但它们有不同的级别),我们通常关注geohash 6,

它大约是一英里见方的区域,就像一个位置上的单元格。所以每个城市通常有几千个,有时甚至有一万个geohash。所以基本上对于每个geohash,我们需要实时生成未来,比如说,5分钟到1小时的预测。你可能需要同时预测数百万个数据点。

哇。好的,所以每个geohash,这是有道理的,因为……

你想得到精确到街区的预测。是的。所以通常如果你考虑定价或司机激励,基本上你试图以某种方式重新分配司机或将他们吸引到某个繁忙的区域。所以它需要一定的粒度。如果你只是预测整个区域,它并不能真正帮助司机知道他们应该去哪里。所以,是的,

为了能够采取实际行动产生某种影响,你必须具备这种粒度。因此,出于这个原因,我们通常从GeoHash 6级别开始,但这取决于用例。有些情况下,我们可能会将它们聚合到更高的级别以适应这些需求,因为

区域越大,密度越高,你可能获得的精度越高。你多久使用平台之外的特征或数据一次?例如,超级碗正在进行中,比赛开始前或开始前两小时以及比赛结束后两小时,体育场周围可能会有很多需求?

这实际上是一个非常好的问题。所以我们尽最大努力获取外部来源。事件肯定是一个。所以我们确实与一些数据承包商合作以获得一些输入。所以事件、体育场馆、航班起降信息,任何我们认为可能有帮助的信息。但实际上,仅仅摄取这些数据就面临很多挑战。所以

以事件为例,我们通常很容易获得关于事件开始时间的信息,比如人们通常会在什么时间去参加活动。但棘手的是事件结束时间。想象一下,你坐在足球比赛中,还剩两分钟。这两分钟有时可能只是两分钟,有时如果加时赛或有任何不确定性,可能意味着半小时。这取决于两队当前比分有多接近,对吧?所以这部分存在不确定性。对于所有国际听众来说,那就是美式橄榄球,两分钟实际上并不是两分钟……

对于全球其他地区的足球,也就是足球,是的,我想你在比赛结束时有一点回旋余地,但不像美式橄榄球那样。无论如何,对不起,我不是故意打断你,我只是想……哦,是的,没关系,是的,足球,是的,对于足球来说,有时可能会进入加时赛,这可能意味着再半小时或更长时间,是的,所以我们一直在努力弄清楚什么是正确的事件结束时间

这绝对是一个很大的挑战。我们提到的另一个是天气数据。所以我们也一直在做很多关于天气如何影响需求的分析。基本上,我认为大多数人的第一直觉是:天气不好,需求增加,这可能通常是正确的。但当我们真正查看数据时,例如查看

创建所有这些降水特征、温度特征,或在其之上进行各种组合,并试图找到与我们需求数据的相关性。它实际上低于我们的预期。不可能。其中一个

推测实际上并非真正关于温度是多少或下了多少雨。更多的是关于人们对将会发生什么的预期以及实际发生的事情。所以预测说,好吧,要下雨了,而且相当准确。每个人都更有可能在精神上做好准备,或者他们已经有某种方式来应对大雨、暴雨。但是

如果有什么事情让他们措手不及,每个人都会说,好吧,让我叫辆出租车或叫Uber或Lyft。我认为这有很大的区别。还有雪。最有趣的发现之一是2014年,那时我实际上第一次开始研究出租车数据与天气。

而且每个人都认为,好吧,下雪会对出租车需求产生巨大影响。所以在冬天的前半段,我们查看了数据,我们看到了一些相关性,但不知何故,后半段的降雪量与出租车需求的相关性很差。你知道发生了什么吗?

好吧,那一年是一个超级糟糕的冬天。在那个季节的后半段,大多数城市开始用完用来清理街道的盐。

所以他们不清理街道,没有人可以出行,人们只是放弃出行,或者他们只是开始决定待在家里。所以降雪量与你将有多少需求之间真的没有多少相关性。这些都是外部信息,通常很难放入模型中。是的,这肯定会,这些因素肯定会影响我们如何构建我们的预测模型或模型

如果某些模型比其他模型更有效。我以为你会说下雨时,人们就待在家里。所以需求较低,我可以想象某些人会待在家里,但这更像你所说的那样。如果说要下雨了,那么……

我更有可能在精神上做好准备,穿上雨衣或带伞出门。但如果天气预报说是晴天,然后开始下雨,那就糟糕了,我没有带伞。我没有带……我没有为此做好准备。我需要尽快回家或到达我需要去的地方。是的,那是完全正确的。我还想知道疫情是否改变了人们的出行习惯。所以……

在那之前,每个人都必须去办公室。所以即使下雨,他们或多或少也可能会说,好吧,下雨了,我仍然需要去办公室。现在,他们会说,好吧,如果下雨,我的心情不好。我每周只需要去办公室两天。让我选择不同的日子或其他什么。是的,完全正确。它改变了我们做某事的可能性。

但是,当我们谈到这个数据采集时,这看起来像一团糟,伙计。这似乎是一件非常困难的事情,首先是获取正确的数据,然后是清理或转换它,然后从中获得见解,特别是对于这些外部数据。我想你们已经建立了一些管道。

你可能一直在调整它们,或者你正在做,你正在尝试看看,我们能否从这里创建更好的特征,或者能给我们更多见解的东西,我们可以将其提供给模型?我说这些是不是离题了?是的,是的,这绝对是我们经常做的事情。在内部,我们有团队在查看事件数据以对其进行整理,嗯,

但最终,这需要大量的人工来使其正确。我们专注于最重要的事件,这些事件实际上在我们的某些模型中效果很好。但对于大多数模型来说,并非如此。所以这导致了我今天想谈论的事情,那就是为什么传统的时序广播在现实中效果更好。

许多人的概念是,好吧,模型将自己学习未来,因此它可以插入尽可能多的数据。让模型学习什么重要什么不重要。这通常意味着你需要大量训练数据和大量的计算能力。

与时间序列类型模型(如自回归、ARIMA)相比,它试图通过主要关注或几乎完全关注历史来预测未来,因为至少即使市场不稳定,它们也不是

保持相同的趋势,但在短时间内,事情往往会自行重复。时间序列模型查看昨天、前天、上周同一时间发生的事情,实际上已经涵盖了未来将要发生的大部分事情。所以这种类型的模型是我们目前最好的选择,因为它们

非常容易解释,因为你的未来是你历史的某种加权平均值。因此,根据你认为未来相对于历史将发生多少变化,你可以相对容易地应用任何人工干预来进行某种调整。

比如说,根据我们所知道的,好吧,上周没有超级碗,但是你知道,下周会有超级碗。所以你可以很容易地调整或……

在这种情况下调整需求。但是对于DNN,我想在超级碗的情况下,如果DNN从未在超级碗上进行过训练,我们也可以这样做。所以你也可以进行调整,但还有其他各种正在发生的本地事件。有些可能更难进行调整,而且你不知道DNN在馈送这些模型时是否能够捕捉到这些事件。所以你必须与

自回归相比,你知道你肯定知道,好吧,如果我不这样做,因为通常自回归不会,它只是所有值的历程,所以它并没有真正明确地放入任何事件信息,所以你可以假设我的模型中没有事件,所以你可以很容易地添加某些东西

还有更高级的模型,如分解模型。你可以分解趋势、季节性和周期性,所以你知道,好吧,如果我相信正在发生局部事件,我需要调整哪一部分,这是一个峰值。它不在季节性中,它不在趋势中。所以你可以取这两个组成部分,加上你的峰值。这使得调整你的模型、调整你的预测并使其更准确变得容易得多。

而且对于这些峰值,你几乎可以使用历史数据来说,好吧,这看起来像是我们可能两周前或上周出现的峰值。所以我们会朝着那个方向发展。我真正感兴趣的是,我对DNN有两个主要问题。然后,我还听说过很多关于时间序列基础模型的事情。

所以首先,我想简单的问题是,你玩过时间序列基础模型吗?你用它们取得过成功吗?因为我

通常从社区中的人那里听说它们没有多大价值,而且他们没有用它们取得成功。所以实际上,我没有,我玩过,好吧,我实际上玩过一点TimeGVT。我知道我的同事也玩过很多。所以我实际上是从他们那里了解到我的第一手信息,而不是我自己。但根据我与他们的谈话,我的学习结果是

它在查看我们的一些用例时是准确的,因为我们实际上对实时时空模型(就像我前面描述的那样,在那种意义上非常细粒度)进行了预测,因为每一分钟你都在查看未来5分钟、10分钟到1小时的预测,而且所有这些都是数千个单元格,所以有很多差异,各种事情都在发生,而且

你还需要它很快,因为每一分钟你都在不断刷新预测。而另一种类型的预测更像是离线或短期、近期预测。每个公司或团队可能使用不同的名称,但他们更关注的是,例如,说旧金山地区,或将其分解成几个子区域,并关注未来一两周的小时、每日信号值。所以……

大多数学习实际上是它适用于后一种用例。对于前一种用例,到目前为止效果还不理想。就在这里。

我认为这主要是在谈论准确性,但我认为除了准确性之外,另一个非常大的问题是实时节奏。它发生得太快了,而这些类型的模型有点太大,无法快速启动并不断发出特征。我不确定是否已经设计了某种工程基础设施来利用这些模型来

处理此类用例。是的,特别是对于你需要的这种延迟,这是非常有意义的。这就是我想用DNN讨论的问题,即需要什么样的基础设施来服务这些类型的模型或尝试在你的用例中利用这些模型?这是否不会给问题增加额外的麻烦

后来你发现,该死的,这些模型的性能并没有好多少。我们为什么要费尽心思来支持DNN?这仅仅是因为也许有些人想在简历上写上它。这是什么原因?我知道你们可能并不想彻底测试它。但归根结底,如果支持起来困难得多,而且它们并没有给你带来那么大的提升,

而且我假设支持起来困难得多。我很想听你谈谈,实际上,支持这两种模型的区别是什么。让我们比较两种类型的模型,这实际上是我们一直在大量测试的。一种是前面提到的自回归。你的未来是你历史的加权平均值,而你的

另一种是,让我们看看,这是一篇来自微软实验室关于时空DNN的非常著名的论文。还有其他模型,如用于时间序列预测的LTSM。

尽管大多数LTSM论文都只关注单个时间序列,但在我们的例子中,我们谈论的是许多,例如城市中的数千个单元格,或者类似的东西。所以你还必须捕捉那里的空间相关性,这使得模型变得更加复杂。所以微软的论文是在许多应用或研究中最受关注或使用最多的论文之一。

从训练来看,我认为两者之间存在巨大差异。首先是自回归。不使用GPU,只使用CPU。如果你想进行任何回测、训练,单个CPU是最好的。而对于空间DNN,你使用GPU。所以从成本角度来看,至少相差100倍。这是根据我们的第一手经验。现在服务它们……

所以如果你只想,呃,服务器,呃,DNN模型,我们并不一定需要使用GPU,因为你的模型权重已经预先计算好了。所以你可以,呃,启动机器,然后,呃,

获取权重,重建你的模型,并获取你的输入。计算量会多一点,但我不会说成本会高很多,因为考虑到这一点,通常在我们的例子中,我们进行预测的节奏是每一分钟。所以每一分钟你都会尝试预测接下来的,比如说,30分钟。所以只要你能在30秒内完成整个预测,就应该足够好了。

所以我认为只是一台普通的机器加载模型权重,重建模型,将你的输入通过计算,30秒就足够了。时间序列模型的权重要少得多。所以当然,速度要快得多。所以学生,绝对没问题。所以这就是为什么从推理方面的成本角度来看没有太大区别的原因。是的。

那么在训练时的数据方面呢?每种模型需要什么样的数据?因为我觉得自回归需要很多特征,但你可能不需要这些特征,或者你不需要在深度神经网络中明确地使用它们。

哦,是的,这是一个很好的观点。这是训练方面另一个不同之处,那就是训练数据。对于ARIMA,根据我们的经验,我们可以只获取几周的数据和视图特征,即未来值与历史值。如果你试图使用历史数据来说明一些事情

一周中的时间,从一到两周前,那么你也需要更长的历史数据。对于DNN,可以使用少量数据来完成。然后问题是权重一开始可能不太好,因为你有很多权重。你更有可能遇到欠训练的情况。所以理想情况下,你想要更长的历史数据。

对于自回归,你甚至可以从实际上没有任何权重开始。你可以假设一个移动平均值。就像过去三分钟的20%,昨天的同一时间的20%,前一天的20%,对不起,前一周的某个时间,只是编造你自己的关于加权平均值将如何计算的先验知识。你可以做的是,

这实际上是线上的,回到在线差异,虽然没有成本,但自回归或经典模型实际上有一个巨大的优势,那就是你可以快速重新拟合它们。这些是线性模型。你可以以超快的速度重新拟合它们,因为它只是一些权重,对吧?可能……

20、30个历史特征。你取平均值,所以你可以,你有一个来自过去五分钟或十分钟、半小时的新观测值,这取决于你想要进行什么样的重新训练节奏。你可以将其插入这个线性模型中,然后

并进行重新拟合,调整你的权重。所以你可以进行在线学习,使模型能够适应市场中正在发生的变化。任何变化,比如峰值正在上升,你可以使用重新拟合或模型来快速将更多权重放在,也许是你的最新值上,以赶上峰值。

对于DNN,它是一个更大的模型。所以你也可以进行重新训练,对吧?因为这就是我们训练模型的方式。它就像批量训练或类似的东西。你可以随时获取一个小样本数据并重新训练模型。

但问题在于成本,因为重新训练DNN模型实际上也非常昂贵。所以与训练情况类似,任何你想在线进行重新训练的事情,试图适应市场中正在发生的任何变化,都会产生更高的成本。这实际上是DNN在实践中的另一个缺点。

因为有了这个成本,你可能只能更少地进行重新训练,这也意味着你将牺牲重新训练较少的准确性。是的,而且类似的经验也可能意味着你的训练成本相差10倍或100倍。

好吧,特别是如果你像你说的那样,你不断地重新训练,并且在你学习关于世界的新知识时不断地重新训练。所以我想,你多久重新训练一次?这个管道是否每隔几秒钟就被触发一次?我们说的是每隔几个小时、每天一次吗?

现在是每一分钟。这只是一个选择,因为机器基本上一直在为我们的模型待机。所以我知道在市场团队内部,我的团队是那些使用机器能力的昂贵团队之一。是的。但如果你的准确性持续提高,我认为这是值得的。

3%的准确性提升会为你带来大量的收入。是的。所以有意义的是你希望它尽可能……

准确。是的,我们或多或少会进行某种成本效益权衡。所以我们运行这些机器的时间,它们的成本是多少,以及准确性的估计影响是多少。这些是我们日常工作中也需要考虑的权衡。是的。所以我想它必须自动重新触发以进行此重新训练。那么你如何添加

添加额外价值?是你引入了一个全新的模型,然后将其投入到这个重新训练循环中吗?或者是你只是不断更新模型并添加新的数据源?你从哪里插入以确保任何现有的模型都能达到最佳性能?

对于在线自回归模型,它在大多数用例中都运行良好,例如捕获峰值并使其更快地适应市场。到目前为止,我们学到的挑战实际上可能主要围绕事件。我们的模型确实捕获了这一点,例如当事件开始增加需求时,

我们的模型会捕获这一点,但我们的模型在这里有一点延迟。这取决于我们如何根据历史数据设置模型中的学习率。这基本上是你有一个旧权重,你有一个学习率。根据你的观察,它正在争论,好吧,我应该在我的最新峰值上增加更多权重,还是我应该更相信我的历史?所以

调整这些参数非常困难,因为每个区域都不同。所以每个区域通常都有自己的模型,但我们还没有真正找到一种好的方法来为每个模型找到完美的参数调整。理想情况下,你可以将所有事情都保留在离线状态,继续测试,并

运行大量机器,这需要花费很多钱。所以我们有一些合适的范围。通常这些参数效果很好。所以我们将其用于我们正在运行的所有模型。最重要的是,我们可以……

你可以随时观察模型在过去几分钟内的表现,对吧?一旦我们看到真实数据,预测是什么以及误差是多少。所以对于外部调整,

与其使用,好吧,你不能,与其让人们查看数据并进行调整,或者说这里有一个足球。所以让我增加更多需求。另一种方法实际上只是查看预测误差,并查看误差的一致性。你可以通过设置一些

一些启发式规则来添加某种偏差校正或某种调整,好吧,如果说,过去10分钟,它一直在预测,让我们提高需求。所以调整可以是,比如,使用基于以下内容的比率:比如,如果预测一直是实际值的90%左右,你可以将其除以0.9,或者如果预测

但是如果你考虑实际的人工干预,到目前为止我们还没有真正测试过,因为我们面临的问题在空间上非常巨大,对吧?在一个区域中,你有数千个单元格。很难只查看其中的每一个。所以一切都基于更像准确性而不是……另一个我们正在关注的方向实际上是更多的集成模型。所以

自回归只是一个模型。它很容易解释。这就是我们选择它的原因。但在线性模型领域还有其他一些线性模型。你可以快速运行重新拟合,或者你可以基本上根据你对数据空间分布的假设来更改模型设置。你可以基本上应用更多的新模型。

同时运行它们。只要它们相对较小,成本就不会太高。你同时运行不同的模型,并且性能不同。然后根据最近的性能,你将更多权重放在提供更好预测的模型上。这是另一种提高准确性的方法。

所以你并不是取你正在运行的五个模型的平均值。而是你取最准确的模型。是的,你也可以对它们进行加权。所以最好的模型的准确率为80%。

我们将预测结果赋予权重,最好的模型赋予80%的权重,第二好的模型赋予20%的权重。这是一种加权平均的方法。目前,我的团队主要关注使用这些方法来提高准确性。

是的,因为人力资源有限,我们团队只有少数几名数据科学家。很难做到实时监控每天和未来几天的市场动态。这超出了我们目前的能力。是的,看起来“简单模型”与深度神经网络相比,

更容易解释。实际上,我们今年希望实现的目标之一是建立在线模型,模型粒度非常细致。我还提到了另一种预测方法,即区域级或子区域级预测。与其关注单元格,不如关注城市中的

10个子区域,并预测未来几天的每小时预测值。

从这些模型中,您可以获得趋势和季节性信息。通常,这些模型也更容易让人们观察事件的影响。他们会根据知识进行菜单调整,例如,在活动时间前后,会看到多少峰值。因此,我们正在考虑将这些输出作为输入,并将其输入到

实时预测的最后一层。一旦我们进行预测,例如,

我们关注的是单元格级别。对于发生在子区域中的事件,我们可以聚合所有单元格并查看总需求。我们预测它,并查看它与离线预测的差距。然后,您可以使用该差值进行乘法运算或其他操作。这就是我们进行调整的方式。我认为这是一个更大的挑战,因为我们必须让

实时系统与离线系统进行通信。但概念很简单。获取实时预测的输出,将其与人工干预的离线预测进行比较,然后检查两者之间的差异。所以,这里的想法是,你知道……

它应该是什么,因为季节性或……你知道它应该是什么,因为去年这个时候是这样的,你正在打开光圈,打开光圈会给你

另一个可以输入模型的特征?是的,因为自回归通常会关注损失,关注上周发生的事情,并根据上周或两周的数据捕获平均季节性。如果您离线,离线模型会查看更长的历史记录,并且会更明确地处理事件。

因此,如果他们认为该事件会增加需求,并且他们已经

进行了调整并得到了最终结果。因此,我们的假设是,他们能够更好地捕捉这些特殊事件或季节性。因为他们去年或上一季度已经见过这种情况了。我明白了。是的,离线模型通常会使用两年的数据进行训练,因为这通常是不同的。

几个时间序列和超过

几个子区域。因此,使用较长的历史记录进行训练的数据量并不多。这完全可行。而且,对于他们的用例,他们通常每周或每天运行一次。他们每周运行一次预测,查看未来一两周的每日或每小时预测。因此,他们不必实时生成这些预测。因此,成本对他们来说不是什么大问题。

因此,他们的模型往往更复杂,能够处理季节性、外部事件,并且他们也关注区域级别。他们还可以挑选出该区域的主要事件,并在其基础上进行调整。因此,他们在

进行调整方面更容易一些,能够处理更复杂的模型。因为他们已经见过这种情况了。是的,这很有道理。这不像什么新鲜事,也不像突然冒出来的事情,而且你已经有了这些数据。我不知道你能获得两年的数据。是的,或者更多,如果你想的话。是的,如果有一个当地的运动队,他们在橄榄球赛季期间每周日都有比赛。

然后你知道,好吧,在橄榄球赛季期间,需求大致是这样的,因为我们已经看到了过去两年或更长时间的情况。是的,对于这些情况,它或多或少地嵌入在特征中,就像时间序列一样。因此,有时更像是每年只发生几次的事情。时间序列很难捕捉到这一点。

在这种情况下,可能需要人工干预。我认为对于从事长期预测的人来说,最后一步,他们非常关注那些规模很大但每年只发生几次的事件。是的,我能理解。我还想问的是,当你们测试这些新模型时,你们是否会进行……

并排分析。你们是否会进行某种冠军挑战者发布?是?我想我听说过其他方法,但我记不清它是如何工作的了,你们只是给它提供虚拟数据,模拟它会预测什么,然后看看它是否比你们现有的模型更准确。

是的,对于时间序列预测,最常用的技术之一称为回测。我想这就是你在想的东西。基本上,你可以假装……

呃,这是你……你当时正坐在过去某个时间点上,然后在那个时间点上,你运行模型训练,然后你假装,好吧,模型的权重将会是什么,然后你开始像模拟一样向前移动时间……然后生成预测,因为实际上一切都已经发生……

在现实生活中。因此,您可以实际查看模型预测的结果与实际观察到的历史记录。您可以计算偏差或任何类型的指标、用于准确性的性能指标。这就是我们比较模型的方式。或者,每次我们尝试对模型进行调整或评估新模型时,我们都会进行回测,以帮助我们确定,好吧,如果这个模型的性能真的比另一个模型更好。这些模型具有地理空间方面的影响有多大?简单来说,非常困难。是的,对于DNN来说,如果它是一个单一时间序列,你可以使用长短期记忆网络,而不用担心数据如何在空间上相关。

因此,模型更简单,模型权重更少,训练速度更快,预测速度更快。对于空间模型,人们现在需要做的另一件事是处理不同空间之间的相关性,因为你不能将每个单元格都视为一个独立的模型。但是,如果有3000个单元格,你就有3000个模型,而不会这样做。因此,

更实际的解决方案是将整个单元格视为单个输入中的不同维度。我前面提到的微软实验室的空间时间论文中,他们所做的是实际上使用某种卷积神经网络方法。因此,基本上,每次快照都是,

例如,你的需求是什么,你的供应是什么,以及它们在不同位置的情况。你可以将其视为图像。你的纬度是图像中的X轴。你的经度是图像中的Y轴。每个单元格都是图像上的某个值。这就是图像处理基本上处理数据的方式。我们可以使用相同的方法。在CNN中,您可以应用一组内核来学习空间相关性,例如3×3单元格或5×5单元格,以获取它们的

跨空间信息并应用不同的权重,这样你就可以学习,好吧,也许当这个人上升时,那个人也会上升,例如

当某个位置的需求很大时,附近位置的需求也很大,或者相反。它正在学习所有这些空间相关性。因此,您最终会在神经网络中获得模型权重来捕获这些信息。但是要很好地学习这些权重,这意味着您需要更多训练数据集。虽然我们了解到的一件事是

这些相关性会随着时间而变化。因此,您正在尝试学习更多关于相关性的知识,但是如果去年的相关性与今年的相关性不同,它就不会表现良好。你只能学习有限数量的相关性。这可能是某种持续半年的建筑工程。因此,您创建的相关性仅仅是因为建筑工程,对吧?是的。

而且也许,你知道,一些办公室,人们搬到另一栋建筑物,或者疫情。这是一个巨大的打击,对吧?人们突然改变了出行方式,人们不断地从一个地方搬到另一个地方。宏观经济会影响像购物中心这样的企业倒闭,并使人们失去控制。虽然让我们说这些问题较少,但是

在这种情况下,你只能使用有限数量的数据。我能理解创建空间数据的模式

例如,在我的脑海中,我把它想象成一个体育场,体育场里正在举行一场活动,人们将从南北两侧进入。因此,你会期望这两侧之间存在某种相关性,即当一侧繁忙时,另一侧也繁忙。是的,这种情况有时会发生。

这实际上让我想起了我们学到的一些非常有趣的知识,场馆的运营方式会随着时间的推移而发生变化,有人跳出来说,上个月

我们用这两个入口做了这件事,对吧?南,北。这就是你引导人们离开场馆的方式。然后是,好吧,那太糟糕了。那是一个错误。让我们改变一下。让我们选择东、南以及其他一些位置。

一个月后,他们说,让我们使用班车,例如,将人们从这个位置移动到另一个位置。下个月,你知道,班车服务不可靠。人们仍在抱怨。因此,场馆的兴趣也在不断变化。他们也在机场有很多这样的情况,例如……

有时他们使用A停车场作为Uber和Lyft的接送点。有时他们使用B停车场,而且这种情况会随着时间而变化。这会弄乱我们的数据,除非我们确切地知道场馆或机场的运营方式。但有时这很难,因为总会有信息延迟。如果你考虑一下橄榄球比赛和泰勒·斯威夫特演唱会,这也很有道理。

以及这些活动的参与人群以及这些活动的时间。因此,也许你在想,好吧,一般来说,如果发生事件,如果你只是将其作为事件,

体育场,而你不知道更多信息,这是一场橄榄球比赛还是一场演唱会,那么你就会被烧伤,所以你可能必须更详细地了解这是什么类型的事件,是的,是的,这绝对是正确的,有时这很难,而且像

同一个歌手,有时可能会吸引不同的人群。对不起,同一个场馆,但不同的歌手。他们可能会试图吸引不同的人群。某些人群可能更倾向于乘坐Uber或Lyft。某些人群可能更喜欢自己开车。因此,我们还注意到,有时是同一个场馆,同一周的同一天,但不知何故,他们对我们的需求却大相径庭。

我认为你的预测模型只是被彻底摧毁了。这就是你所说的,你需要关注

错误或负面结果,而不是关注它做得正确的地方?是的,这就是为什么重新拟合或偏差调整非常重要,因为我们知道我们无法正确地对它们进行建模。因此,我们能做的最好的事情就是从错误中学习。好的,最后五分钟,我们只预测了这么多。因此,让我们对模型进行重新拟合,或者让我们应用一些偏差校正。

因为有时我们查看错误时,甚至不知道为什么在我们的预测中会看到这么大的偏差,这真是令人难以置信,是的,所以是的,实际上,简单的模型很有趣,因为它更容易应用调整,速度也更快,而复杂的模型DNN则……从理论上讲非常有趣,但是……

如果您处理的是与人类行为相关的数据,那么往往会伴随着许多其他未知因素。因此,很难真正很好地预测它们。

相比之下,我想说的是,如果您处理的是图像处理或语言,这些都是更有结构的,对吧?人们按照一定的语法说话。你有一些变化,但它并没有真正超出范围太多。这就是为什么它更容易预测,因为它没有超出范围太多。因此,可能更容易很好地训练它们。而且你还有很多数据,例如

语言。哦,我认为当一种语言发生变化时,例如完全变化,可能需要数千年的时间,对吧?你可能会突然开始用不同的方式说话,使用不同的想法和概念。至少在过去5到10年中,我不会说我们会用非常不同的方式说话。但是,当涉及到旅行时,人类行为就像,哎呀,五年前,这是一个完全不同的世界。你不能再使用这些数据来训练你的模型了。是的。

而且……你说得对,但你显然没有和许多Z世代的人交谈过,我想。你没有……

那是真的,是的。不,但是如果你将莎士比亚的语言与我们的语言进行比较,是的,这是一个巨大的转变,但这也要花费数百年的时间或一千年的时间。我不记得那是多久以前了。因此,如果您查看这一点,我还有一个问题想问您,关于您尝试多频繁地查找

这些异常值的根本原因。就像你说的,有时你就是不知道为什么这个预测会有这么大的偏差?为什么我们没有预测正确?你一天中有多少时间花在弄清楚为什么你没有预测正确上,而不是

日常工作?是的,这取决于用例。我认为我的团队,由于我们关注的是单元格级别,即数百万个数据点,因此我们并没有那么多能力真正深入研究这一级别。因此,我们通常的做法是,我们在更像区域级别上有一些指标,例如将所有单元格聚合在一起,查看预测与实际数据。

因此,我们有一些指标可以跟踪。如果值相差太大,或者趋势存在某种漂移,我们会监控一组指标。如果它们触发某个警报,那么我们会花费精力来调查。

其他时间通常是因为所有这些实际上都进入了下游模型,例如定价,对吧?或者司机激励。他们方面也有自己的性能指标。通常,他们会达到某种定价目标。如果他们的价格不知何故,他们的模型开始输出

价格超出了他们的范围或其他什么,他们会调查一下,看看是否是预测或其他因素触发的,如果他们认为是预测方面的问题,他们会回到我们这里,我们会调查一下。这就是实时方面的工作方式,由于粒度,我认为,这是一个挑战。

是的,但是对于离线预测,这不是我的工作,但是还有其他情况,他们只关注区域级别的每小时值,例如未来的一周或两周。他们会让人们坐下来,逐个区域地进行审查。这实际上是他们方面更频繁的节奏。是的,而且

他们对差异非常敏感,因为这实际上是他们的下游,通常决定公司决定,好吧,他们下周想花多少钱。因为如果激励措施之间存在很大的差距,或者对不起,如果供需之间存在很大的差距,他们需要决定,好吧,他们需要花多少钱来吸引司机或吸引乘客。这些都是一大笔钱。

是的,这其中涉及到重大的决策。因此,您需要确保这些决策是正确的。是的,而且我认为从技术上讲,这也是更可行的。通常,您可以查看顶级区域,或者您可以查看您知道将要发生重大事件的区域。因此,我们可以很容易地检查,好吧,如果该时间段在该位置的预测是准确的。我想,如果我们想说,好吧,这是事件。但是我们的预测实际上发生了变化

每分钟都会发生变化,持续30分钟或一个小时左右。因此,我们看到该预测的时间是在那之前30分钟。因此,我不知道如果事件发生在午夜,这是否可行。我不知道我们是否会等到午夜,然后

快速评估性能,因此一切都是自动化的,我们更多地关注的是,随着预测的发生,我们观察实际情况,如果差异很大,如果不是,那么让我们尽快对模型进行调整,这是一个非常不同的概念