3

我正在处理在 NCBI BLAST 中生成的蛋白质-蛋白质相似性的大型数据集。我已将结果存储在一个大型成对矩阵 (25,000 x 25,000) 中,并且我正在使用多维缩放 (MDS) 来可视化数据。这些矩阵太大而无法在 RAM 中使用,因此我将它们以 HDF5 格式存储在磁盘上,并使用 h5py 模块访问它们。

sklearn 流形 MDS 方法为 3D 中的小规模数据生成了出色的可视化效果,这就是我目前使用的方法。对于计算,它需要一个完整的对称成对相异矩阵。但是,对于大型数据集,会形成一种“外壳”,从而掩盖已形成的集群。

http://imgur.com/XkpoOJ4

我认为问题在于我需要输入一个完整的相异矩阵。有些蛋白质彼此不相关,但在成对相异矩阵中,我被迫输入相异的默认最大值。在 sklearn MDS 的文档中,它说值 0 被认为是缺失值,但是在我想要缺失值的地方输入 0 似乎不起作用。

有什么方法可以输入不完整的相异矩阵,因此不必输入不相关的蛋白质?还是有更好/更快的方法来可视化成对相异矩阵中的数据?

4

2 回答 2

1

MDS 需要一个完全相异矩阵 AFAIK。但是,我认为它可能不是您计划实现的最佳工具。假设您的相异矩阵是度量的(不一定是这种情况),它肯定可以嵌入到 25,000 个维度中,但是将其“压碎”到 3D 会将数据点“压缩”在一起太多。这会导致你想要剥掉的“外壳”。

我宁愿在相异矩阵上运行层次聚类算法,然后对叶子(即蛋白质)进行排序,使相似的叶子保持在一起,然后可视化相异矩阵,其中行和列根据聚类生成的顺序排列. 假设短距离是黄色,长距离是蓝色(想想色盲!:-)),这应该会产生一个矩阵,其中沿对角线有大的黄色矩形,相似的蛋白质聚集在一起。

您将不得不对图像进行下采样或购买 25,000 x 25,000 的屏幕 :-) 但我假设您无论如何都希望获得“整体”低分辨率视图。

于 2014-08-02T04:44:10.103 回答
0

有许多名为非线性降维的算法。您可以在 wikipedia 上找到这些算法的长列表,其中大部分是近年来开发的。如果 PCA 不适用于您的数据,我会尝试 CCA 或 tSNE 方法。后者特别适合显示集群结构。

于 2014-08-03T21:48:25.573 回答