返回列表

2nd place solution

352. BigQuery-Geotab Intersection Congestion | bigquery-geotab-intersection-congestion

开始: 2019-09-12 结束: 2019-12-12 交通流量与路况 数据算法赛
第二名方案

第二名方案

作者: Panos, Aris
发布时间: 2019-12-19

首先,非常感谢主办方整理了这个非常有趣的数据集并举办了这次比赛!这让我们有机会探索多种方法,并为未来的工作找到了一些思路。

太长不看版: 我们结合使用了三种基于树的算法,进行了广泛的特征工程,使用了有限的外部数据,几乎没有进行交通建模。我们为四个城市分别开发了一套不同的模型。

问题陈述: 我们需要利用涵盖部分时空点的样本信息,预测不同时空点的拥堵变化。因此,实际上存在两个潜在问题:

  • a. 利用同一交叉口在不同时间点的数据,对该特定交叉口的拥堵情况进行插值/外推预测。
  • b. 预测我们没有任何信息的交叉口的拥堵情况。

我们的解决方案:

模型显然应避免使用 IntersectionId(交叉口ID)或任何其他与特定交叉口相关的信息,因为这会妨碍模型的泛化能力。我们构建了多个特征来探索每个交叉口的设置和相关路径的作用(例如,可能的路径和转弯数量、不同出入口的数量、转弯类型(特别是左转/同进同出方向+同名),并试图通过识别每条特定路径连接的上一个/下一个交叉口来“解开”网络。这反过来使我们能够计算交叉口之间的连接长度,事实证明这对建模最棘手的六个拥堵变量之一——总距离的 p80——非常重要。

我们还尝试利用图论指标来“解开”网络。我们将 IntersectionId 集合转化为图,并计算每个节点的介数指标。理论上,这对应于网络中通过该节点的最短路径的数量。但由于我们没有关于行程整体分布的信息,实际上这非常接近网络地理中心的代理指标。它最终在我们的模型中影响很小。

我们避免将坐标和方向作为独立特征使用,以防止过拟合。取而代之的是,我们使用 k-means 识别若干聚类,并计算每个交叉口到聚类中心的距离。例如,如果 k=1,我们就得到了到市中心的距离。最好的模型使用邮政编码人口作为聚类依据,k 值在 6 到 10 之间。基于 p50 变量的聚类似乎也有效。

我们对 TIGER 数据中包含的数据质量和精度感到惊喜。只需稍加处理,就可以轻松将比赛数据与真实网络匹配起来。然而,单靠 TIGER 的分类(主要是道路类型)对拥堵建模并没有真正的帮助。我们也尝试使用公开的实际交通数据,但没有帮助。在一个城市,最新数据是 2006 年的;在另一个城市,我们没找到从 API 提取 csv 或 shapefile 的方法。无论如何,我们设法将平均交通流量与网络上的点联系起来,并试图以此估计每个 IntersectionId 路径的交通流量,但成功率很低。但我们认为,只要有足够的时间和精力,最终是可以做到的……

我们觉得本可以更进一步,但在某个时候似乎已经做得够多了,我们的方案在公共排行榜(LB)上遥遥领先。显然并非如此;),我们在私有排行榜(PB)上被 Peter 超越了!我们还有另一个方案(未被选入最终评估)得分为 59.97,以及几个半成品的模型,可能可以进一步提高分数。

数据的附加价值: 我们非常欣赏关于时间和距离分布的数据(各种 P.x0)。虽然它们对比赛本身没有用处,但可以为从业者提供有用的信息。我们没有尝试分类的方法来预测每条路径可能具有的拥堵概况(这对本次比赛来说太耗时了,而且理论上说分布本身很难建模),但我们以后可能会自己尝试一下。

外部数据: 我们只使用了比赛中提供的数据和申报的外部数据。我们知道有关于交通流量、速度和拥堵数据的私有数据,这对这个问题可能非常有用,但我们没有也不使用任何此类数据。(我们有欧洲的良好数据和模型,但没有美国的)

BigQuery: 我们尝试了几次使用 BigQuery,但访问 BQ 的设置太复杂,我们很快就放弃了。原则上,SQL 方法应该对这类问题有用,事实上我们知道该领域有几个应用程序使用 SQL 进行数据处理。然而,根据我们对讨论的理解,BQ 在这次比赛中的弱点是它能容纳的模型种类缺乏多样性。