有没有办法找到阵列中n个最远的向量?

时间:2019-02-07 17:57:46

标签: python vector cluster-analysis doc2vec dimensionality-reduction

我有一个成千上万的doc2vec向量数组,它们具有90个维度。对于我当前的目的,我想找到一种方法来“采样”此向量空间的不同区域,以了解语料库的多样性。例如,我想将我的空间划分为n个区域,并为每个区域获取最相关的单词向量。

我曾尝试使用hdbscan进行聚类(在使用UMAP降低维数之后),以在其自然关节处雕刻矢量空间,但实际上效果不佳。

所以现在我想知道是否有一种方法可以采样空间的“较远区域”(n个距离最远的向量)。

  1. 这是个好策略吗?
  2. 我该怎么办?

非常感谢!

1 个答案:

答案 0 :(得分:1)

来自所有向量的随机样本是否一定会遇到集合中各个“区域”中的任何一个?

如果文档中存在“自然关节”和聚类,则某些聚类算法应能够找到N个聚类,然后,每个聚类的质心与其他聚类的质心之间的NxN距离越小,则可能识别出“距离最远” ”集群。

请注意,对于任何向量,都可以使用Doc2Vec值为most_similar() / false-ish的topn文档向量0来获得(未排序的)相似性来所有其他模型文档向量。然后,您可以在该集合中找到最不相似的向量。如果您的数据集足够小,可以实际用于“全部”(或一些较大采样)的文档向量,那么可能出现在“底N”个相似度最低的其他文档,数量最多其他向量,将是最“遥远的”。

这种“遥远”的想法是否确实在数据中显示或有用,尚不清楚。 (在高维空间中,所有事物都可能以与我们的2d / 3d直觉不匹配的方式与其他事物“相距甚远”,并且某些矢量的细微差异稍微“进一步”可能并不代表有用的区别。)