我想对一个只有成对距离的海量数据集进行聚类。我实现了一个 k-medoids 算法,但是运行时间太长,所以我想首先通过应用 PCA 来减少我的问题的维度。但是,我知道执行此方法的唯一方法是使用在我的情况下没有的协方差矩阵。
有没有办法只知道成对距离来应用 PCA?
我想对一个只有成对距离的海量数据集进行聚类。我实现了一个 k-medoids 算法,但是运行时间太长,所以我想首先通过应用 PCA 来减少我的问题的维度。但是,我知道执行此方法的唯一方法是使用在我的情况下没有的协方差矩阵。
有没有办法只知道成对距离来应用 PCA?
更新:我完全删除了我原来的答案,因为它是基于欧几里得距离和标量产品之间的混淆。这是我的答案的新版本。道歉。
如果成对距离是指欧几里得距离,那么是的,有一种方法可以执行 PCA 并找到主成分。我在对以下问题的回答中描述了该算法:主成分分析和多维缩放之间有什么区别?
很简单,欧几里得距离矩阵可以转化为居中的格拉姆矩阵,通过特征分解可以直接用来进行主成分分析。此过程称为[经典] 多维缩放 (MDS)。
如果您的成对距离不是欧几里得,那么您无法执行 PCA,但仍然可以执行 MDS,这将不再等同于 PCA。但是,在这种情况下,MDS 可能更适合您的目的。
这看起来像是一个可以应用谱聚类的问题。由于您有成对距离矩阵,您可以定义一个完全连接的图,其中每个节点都有 N 个连接,对应于它与图中每个其他节点的距离。由此,您可以计算图拉普拉斯算子(如果这听起来很吓人,别担心——这是一个简单的计算),然后取最小的特征向量特征值(这是它与 PCA 不同的地方)。例如,如果您采用 3 个特征向量,那么您将拥有一个 Nx3 矩阵。在这个空间中,点应该(希望)被很好地分离,因为一些简洁的图论表明这是最大化集群之间的流量(或距离,在这种情况下)的最佳切割。从那里,您可以使用 k-means 或类似算法在 3 空间中进行聚类。我建议查看这个很棒的演练以获得更多洞察力:
成对距离也形成一个方阵,就像协方差矩阵一样。PCA 只是应用于协方差矩阵的SVD( http://en.wikipedia.org/wiki/Singular_value_decomposition )。您仍然应该能够对数据使用 SVD 进行降维。我不确定如何解释您的输出,但绝对值得尝试。您可以使用聚类方法,例如 k-means 或层次聚类。还可以查看其他降维技术,例如多维缩放。你想从你的集群中得到什么?