【发布时间】:2022-01-13 12:56:42
【问题描述】:
这是一个真实数据集上的图论问题。我有一个大约 100M 点的数据集,是随着时间的推移在城市中对汽车的摄像头目击记录。它们可以粗略地认为是{相机ID、车牌ID、时间戳}元组。城市周围有大约 2000 个摄像头,我们知道它们的位置,在我们掌握数据的一个月内,大约有 1000 万辆独特的汽车(车牌)。我试图根据经验确定任意摄像机(节点)之间有多少条独特的路径。这里的“路径”只是不同相机在时间上接近时连续看到同一车牌。
问题在于,1/3 的摄像头目击都丢失了:大多数摄像头的识别准确率为 80%,少数只有 0-10%。主要问题是:我们如何判断两条路径是否真的不同,而不仅仅是一条缺少一些目击的潜在路径?
例如,考虑一些高容量路线 A->C。如果只有一种从 A->C 到达的方式,比如通过 B,那么您仍然会在 A 看到很多汽车,然后直接在 C,因为相机 B 碰巧没有接它们(大约 1/3总流量将是 AC 只是因为这个缺失数据点的事实),因此 AC 看起来和 ABC 一样是一条流行的路径,而实际上 ABC 是人们从 A->C 采取的唯一真实路径。目标是区分这些路径,以便我们可以在一天结束时计算唯一路径 A->C 的数量,以研究交通网络对道路关闭的稳健性。
一种方法是比较通过路线的平均时间,但是通过空间的两条不同路线可能需要非常相似的时间。以下是我针对特定情况解决问题的方法:考虑从 A 到 C 的两条路线:ABC 和 AB'C,其中没有边 B->B'。我们知道这实际上不可能是一条基础路线 ABB'C,因为这样我们会看到一条边 B->B',而我们没有。我想知道这种启发式是否可以推广(当然,即使 BB' 是一条边,我们仍然想区分路径,因为在这种情况下,我们不能保证 ABB'C 是唯一的真实路径)。
我也愿意使用 Google Maps 等外部 API 来获取更多信息,但不太确定这会如何让问题变得更容易。我的目标是解决两个任意远摄像机之间任意长路径的问题,但我认为大多数此类问题都可以简化为上述 ABC 与 AC 问题的一个版本。
这是一个问题实例的图示示例。左下角可以被认为是节点 A,右上角是节点 C。那么它就变成了一个 AC vs ABC vs ABDC 问题。数据显示,AC 19 次,ABC 46 次,ABDC 86 次。问题是要弄清楚这三种路径中有多少是人们经过的“真实路径”。当然,在地图上,根据道路网络手动计算更容易,但问题是根据手头的所有数据点的数据进行算法计算,而无需绘制。
以下是数据示例。我们将数据分成代表真实汽车旅行的组。因此,不同的摄像机在时间上足够接近(当然是在同一天)看到相同的车牌。这是一个组的示例(与上图无关),还有大约 1000 万其他组。
index camera_ID encoded_plate date time_seconds velocity
9200 480301111 660.0 2021-03-11 62000.0 54
9201 480321111 660.0 2021-03-11 62135.0 28
9202 480331111 660.0 2021-03-11 62235.0 5
9203 480341112 660.0 2021-03-11 62302.0 42
9204 450371112 660.0 2021-03-11 62648.0 32
【问题讨论】:
-
我的问题是,这对 SO 来说如何?您在这里提出了一堆问题和要求,但没有明显的尝试自己解决。
-
有一个明确定义的问题:AB vs ABC。我有一整段解释了我是如何尝试自己解决的(一种方法……这是我解决的方法……)。
-
解决这个问题可能是一个不错的博士项目。
标签: python algorithm graph-theory network-flow