转换数据点以匹配其他数据点

数据挖掘 数据集 数学
2022-02-20 07:14:59

我有两组数据点,一组 A 和一组 B。

两组的每个点都有两个维度(x,y)

假设集合是下图左侧的橙色集合,而是右侧的蓝色集合(有些点更透明,因为这些点代表了一段时间内的位置;点越暗,越近它所代表的位置)。AB

数据集

我可以观察到两组之间存在相似之处。执行一些旋转和缩放,我最终会得到一个与集合 A 更相似的BBBA

我的问题是,我可以使用什么方法来找到使集合尽可能类似于的转换?我如何衡量相似度?BA

我不需要编程解决方案,只需要一些关于可能存在的算法的提示。

如果没有简单的解决方案,我想知道是否有此类问题的指定名称或某些关键字可以为我指明正确的方向。

谢谢!

2个回答

对于这个任务,你需要决定 3 件事:

(1) 允许的变换是什么。

例如,您是否允许任意仿射变换(旋转、缩放、平移)。然后你需要一个矩阵(使用齐次坐标)将左图的点映射到右图。矩阵的每个条目都是您要确定的变量。中设置某些条目来限制特定的仿射图(例如仅旋转)fR3×3A

原则上你可以使用任何映射,这取决于一些变量fw:R2×2R2×2w

(2) 你需要考虑一个度量(或“损失”),它评估两组的相似程度。对于任意集合,有 Hausdorff 距离,它忽略任何时间信息。如果您将数据视为随时间变化的两条曲线,则存在Frechet 距离您可以在这里查看一下,通常使用 Haussdorf 距离是一个难题。事实上,只计算豪斯多夫距离,不做任何优化已经 不是小事了。但是,对于多边形曲线,您可以有效地计算 Hausdorff 距离、Frechet 距离和离散 Frechet 距离

最后,在您的特定情况下,对于中的对应点,您可以测量每个对应点的距离(这只是为您提供中的均方误差)。ABR2

(3) 根据 (1) 和 (2) 的选择,您需要使用相应的优化器。

如果您想最小化成对距离,但没有可用的对应关系,则有迭代最近点如果你简单地计算对应点之间的距离,你就会遇到一个非线性优化问题。您可以使用Levenberg–Marquardt等求解器。

正如@bogovicj 指出的那样,该主题称为点集注册。

动态时间扭曲测量两个值序列在时间上的相似性。它将比较一对点 的想法与找到两个序列之间的对齐算法类似于字符串之间的编辑距离,可用于提取序列之间的映射。(aA,bB)(a,b)