在球体上投影数据

机器算法验证 主成分分析 降维 投影 特纳
2022-03-24 15:18:39

我习惯与 PCA、tSNE、LLE 一起工作......他们都很好地将数据投影到平面上(或的线性子空间)。是否有任何其他嵌入技术可以将数据投影到非线性空间上?像一个球体,还是任何其他流形?Rn

目的是指定要投影到的空间和距离(示例将是球体和测地线距离)。

我正在寻找任何参考或开源项目!

例如,将称为数据集的元素,将称为初始距离,称为球体上的测地线距离,“类似 MDS”的公式可以是:xiddg

minyi,j||d(xi,xj)dg(yi,yj)||2

除了蛮力解决这个问题还有其他方法吗?

3个回答

使用类似于非经典度量 MDS 的过程(使用应力标准)可能可以解决您的示例问题。将“投影点”初始化为位于球体上(稍后会详细介绍)。然后,使用优化求解器找到最小化目标函数的投影点。与普通 MDS 相比,存在一些差异。1) 必须计算投影点之间的测地距离,而不是欧几里得距离。当流形是球体时,这很容易。2)优化必须服从投影点位于球面上的约束。

幸运的是,存在用于执行优化的现有开源求解器,其中参数被限制在特定的流形上。由于这里的参数是投影点本身,这正是我们所需要的。Manopt是 Matlab 的一个包,Pymanopt是 Python 的。它们包括作为受支持流形之一的球体,还有其他可用的。

最终结果的质量将取决于初始化。对于普通的非经典 MDS 也是如此,其中通常使用经典 MDS 获得良好的初始配置(可以作为特征值问题有效地解决)。对于“球形 MDS”,您可以采用以下方法进行初始化。执行普通的 MDS、isomap 或其他一些非线性降维技术来获得欧几里得空间中的坐标。然后,使用合适的投影将结果点映射到球体表面。例如,要投影到一个 3 球体上,首先执行普通的降维到 2d。使用立体投影之类的方法将结果点映射到 3 球体上. 如果原始数据位于在拓扑上等效于球体的某个流形上,那么执行初始降维到 3d 可能更合适(或者如果它们已经在 3d 中则什么也不做),然后对向量进行归一化以将它们拉到一个领域。最后,运行优化。与普通的非经典 MDS 一样,可以使用不同的初始条件执行多次运行,然后选择最佳结果。

应该可以推广到其他流形和其他目标函数。例如,我们可以想象将其他非线性降维算法的目标函数转换为在球体或其他流形上工作。

也许在 R 上有类似的东西?

http://planspace.org/2013/02/03/pca-3d-visualization-and-clustering-in-r/

如果您只取前两个轴,则 PCA 项目在平面上。如果你拿第三个,你就有了球体上的投影。

关系透视图 ( http://www.visumap.net/index.aspx?p=Resources/RpmOverview ) 可能对您来说很有趣。RPM 最初用于圆环面;然后扩展到其他低维流形,如 3D 球体和投影平面。在封闭流形上设计 MDS 的一个关键是“距离”度量必须扩展到一种多路径聚合。VisuMap 软件包还提供动画/导航,以可视化 3D 球体等空间中的数据。