我想将只有成对距离的海量数据集聚类。我实现了k-medoids算法,但是运行时间太长,因此我想首先通过应用PCA减小问题的范围。但是,我知道执行此方法的唯一方法是使用我在我的情况下没有的协方差矩阵。
有没有一种方法可以仅知道成对距离来应用PCA?
我想将只有成对距离的海量数据集聚类。我实现了k-medoids算法,但是运行时间太长,因此我想首先通过应用PCA减小问题的范围。但是,我知道执行此方法的唯一方法是使用我在我的情况下没有的协方差矩阵。
有没有一种方法可以仅知道成对距离来应用PCA?
Answers:
更新:我完全删除了我原来的答案,因为它是基于欧氏距离和标量积之间的混淆。这是我的答案的新版本。道歉。
如果用成对距离表示欧几里得距离,那么可以,可以执行PCA和查找主成分。我在回答以下问题时描述了该算法:主成分分析和多维缩放之间有什么区别?
简而言之,可以将欧几里得距离矩阵转换为居中的Gram矩阵,该矩阵可以通过特征分解直接用于执行PCA。此过程称为[经典]多维缩放(MDS)。
如果您的成对距离不是欧几里得距离,则您将无法执行PCA,但仍然可以执行MDS,而该MDS将不再等同于PCA。但是,在这种情况下,MDS可能会更适合您的目的。
存在具有距离矩阵的PCA,它称为多维缩放(MDS)。您可以在Wikipedia或这本书中了解更多信息。
您可以R
使用mds function来实现cmdscale
。对于样本x
,您可以检查prcomp(x)
并cmdscale(dist(x))
给出相同的结果(prcomp
PCA 在哪里,dist
仅计算x元素之间的欧几里得距离)
这看起来像是可以应用频谱聚类的问题。由于您具有成对距离矩阵,因此可以定义一个完全连接的图,其中每个节点具有N个连接,这与其在图中每个其他节点的距离相对应。由此,您可以计算图拉普拉斯算子(如果听起来很可怕,请放心,这是一个简单的计算),然后采用最小的特征向量特征值(这是与PCA不同的地方)。例如,如果采用3个特征向量,则将具有Nx3矩阵。在这个空间中,由于一些简洁的图论,这些点应该(希望)被很好地分离,这表明这是最大化集群之间的流量(或距离,在这种情况下)的最佳选择。从那里,您可以使用k均值或类似算法在3空间中进行聚类。我建议您查看此出色的演练以获得更多见解:
像协方差矩阵一样,成对距离也形成方阵。PCA只是应用于协方差矩阵的SVD(http://en.wikipedia.org/wiki/Singular_value_decomposition)。您仍然应该能够使用SVD对数据进行降维。我不确定如何解释您的输出,但是绝对可以尝试。您可以使用聚类方法,例如k均值或分层聚类。还可以看看其他降维技术,例如多维缩放。您正试图从集群中脱身吗?