如何将轨迹映射到向量?

机器算法验证 时间序列 多元分析 数据转换 功能数据分析
2022-03-13 07:48:26

对于一组用户,我有一系列这种形式的数据点(时间戳、纬度、经度)。每个用户从 A 点到 B 点时都有一条轨迹。从 A 点到 B 点可能有任意数量的点。它们是基于时间戳的有序数据点。我想将它们转换为向量来执行各种分析任务。我的一个想法是查看转弯并将它们作为一个维度。我想知道更多的方法。我想要的是一个代表整个轨迹的向量,把它想象成一个轨迹的一个点。现在我有一个 3d 点的集合。

我想做轨迹相似性搜索。如果有两条轨迹在时间上彼此靠近,那么它们是相似的。想象一下,你早上 9 点从家里去上班。早上 9 点 10 分的其他人也是他工作的家,并且与您保持一定距离。由于您拥有相同的工作场所,因此您很可能拥有相同的轨迹。类似于建立在轨迹之上的分类器。我可以在轨迹中进行活动检测,也可以进行源目的地分析。

3个回答

我将从动态时间扭曲开始。只要您有任何两点(纬度,经度)之间的距离,这种方法就应该有效。它针对不同的运动速度进行调整。例如,你和我住在同一个村子,去同一个工厂上班,但我在路上顺便去了一家咖啡店。我需要更长的时间才能到达,但我们或多或少走在同一条路上,因此相似性度量会针对不同的时间尺度进行调整。

这与您的想法不同。看来你想拿出一个值(向量)来表示轨迹,然后计算向量之间的距离。我建议您直接使用轨迹之间的距离度量,而无需中间步骤。

如果您只考虑瞬时转弯,即方向变化,我认为这不会唯一地定义下一次实例的位置 - 除非每个用户都以恒定的已知速度行驶(在您的问题中没有表明这一点) . 由于您正在穿过(球形,我推断?)表面,您可能至少需要第二个坐标来确定您的唯一位置。为什么不简单地构建数组每个用户,时间戳作为参数,然后将其连接到一个向量你必须标记用户有一个向量(或?你也可以取弧长2×N[x(t);y(t)]1×(2N)[x(t)y(t)]1×(2N×M)Ms(t)将行进路径作为参数。时间戳是否定期;否则,您将需要一个单独的向量供它们查找。PS:我看不到统计数据的链接;这与交叉验证有关吗?

对于每个用户,您有两个时间序列,lat(t) 和 long(t)。我认为这是最简单的表示——我不会试图通过转换为转弯的某些定义来使事情​​复杂化,这不仅会更加困难,而且还需要对初始起点非常小心,并在任何情况下都以不同的方式对待它分析。(它可能也更嘈杂。)

将数据保持为 lat & long 时间序列还可以使其最可能的用途变得简单——您将在不同时间查看不同的时间窗口——无需在新时间窗口开始时不断重新计算起点正在分析。

如果每个用户的时间序列 lat 和 long 都在完全相同的时间进行采样,如另一个回复中所述,您可以将两个时间序列向量连接成一个长向量。具有 5 个时间序列的类似示例如下所示
然后,每个用户都有一个长向量,您可以像分析任何其他向量一样进行模式识别、距离测量、聚类等。

对于用户之间的距离度量,您通常会根据应用程序使用加权形式。例如,当专注于向共同目的地收敛时,您会在时间窗口结束时最大程度地增加权重(无论是查看欧几里德计算、最大距离等)。

但是,最初的问题似乎是说,对于不同的用户,A 和 B 之间的点数可能不同。无论如何,即使对于相同的采样间隔,时间也可能不完全相同(可能会因采样在不同时间开始而有所不同)。此外,很可能会有一些缺失的数据。在任何这些情况下,从概念上讲,您需要以连续的形式考虑每个时间序列,可能会为其拟合一条曲线,并在完全相同的时间重新采样每个用户。(这类似于缩小图片时在照片分析中发生的重新采样)。那么你的 lat & long 时间序列向量的长度相同,并且完全对应于相同的时间,