D
(目前表示为形状为(572,572)的numpy数组),可能对应于沿着大致圆柱体表面的点之间的成对距离。即,值D [i,j]
对应于该空心圆柱体表面上沿任何路径的最小长度。如何构建这些572个点的三维(或n维)嵌入到欧几里德空间中,以保留这些测地线距离?
当前尝试
像局部线性嵌入和等距映射这样的算法能够将那些成对测地距离的矩阵输出为嵌入,使得成对欧几里得距离与原始测地线相同。虽然这通常不是相同的任务,在某些维度下输出近似超立方体的情况下,所需的转换实际上已经发生了(考虑瑞士卷),因为嵌入本身就是流形,所以欧几里得距离对应于测地距离。
即使是稍微复杂一些的物体,例如圆柱体,也不是这种情况。通过将测地距离视为欧几里得距离,所需圆柱体上的对极点映射到距离比预期远得多的位置,相应的全局优化问题通常会导致分支结构,其分支的末端对应于最大距离的对极点,从而放大圆柱体随机抽样中的小扰动。总的来说,这些算法的天真应用似乎不能解决手头的问题。另一个有些富有成效(但代价高昂)的方法是 brute monte carlo 技术。我从具有不同参数的管状物体中生成随机样本,直到找到一组生成类似于我的测地距离矩阵的参数集合,最多可以进行一次排列(通过求解将该距离矩阵转换为我的线性系统并测试结果是否接近排列矩阵来处理)。然后通过找到最近的排列矩阵来执行将我的 572 个点映射到保持成对距离的对象上的近似最优映射。
这产生了合理的结果,但它预设了数据的形状,并且代价高昂。我已经执行了一些更明显的优化,例如使用小型随机样本而不是整个数据集,并使用基于梯度的技术进行参数估计,但更通用的技术会很好。
注意事项
当然,这个问题并没有唯一的解决方案。即使假设从有限均匀采样中可以明确地在三维空间中识别流形,只需压缩一个圆柱体就会产生具有相同测地线但不同欧几里得距离(因此是不同的嵌入)的形状。这对我来说并不比LLE和Isomap产生不同的解决方案更麻烦,我对任何合理的答案都很满意。
关于如何从有限样本中唯一地识别流形,为了论证,我只需要使用scikit-learn
包中已安装的Isomap
类的dist_matrix_
属性而不需要任何特殊参数来查找测地线。这执行了一个不必要的MDS
步骤,但它并不是非常昂贵,而且开箱即用。我们希望得到一种嵌入方式,该方式将原始测地距离矩阵与dist_matrix_
属性之间的Frobenius距离最小化。