有没有办法找到数组中 n 个最远的向量?

Is there a way to find the n most distant vectors in an array?

我有一个包含数千个 90 维的 doc2vec 向量的数组。对于我目前的目的,我想找到一种方法来 "sample" 这个向量的不同区域 space,以了解语料库的多样性。例如,我想将我的 space 划分为 n 个区域,并为每个区域获取最相关的词向量。

我已经尝试使用 hdbscan 进行聚类(在使用 UMAP 降维之后)在其自然关节处雕刻矢量 space,但它确实效果不佳。

所以现在我想知道是否有一种方法可以对 space 的 "far out regions" 进行采样(n 个彼此距离最远的向量)。

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

非常感谢!

来自所有向量的随机样本是否一定会遇到集合中各种 'regions' 中的任何一个?

如果文档有 "natural joints" 和聚类,一些聚类算法应该能够找到 N 个聚类,然后每个聚类的质心与彼此的聚类的质心之间的较小数量的 NxN 距离可能会识别那些"furthest out" 个集群。

注意对于任何矢量,您可以使用 Doc2Vec 文档矢量 most_similar()topn 值为 0/false-ish 来获取(未排序) 与 all 其他模型文档向量的相似之处。然后,您可以在该集合中找到最不相似的向量。如果您的数据集足够小,可以针对文档向量的 "all"(或一些大样本)执行此操作,那么可能出现在 "bottom N" 中的其他文档最不相似,因为大多数其他向量,将是最多 "far out"。

这个 "far out" 的想法是否实际显示在数据中,或者是否有用,尚不清楚。 (在高维空间中,一切都可以 "far" 以不符合我们 2d/3d 直觉的方式与其他一切相去甚远,并且某些向量的细微差异 "further" 可能不符合有用的区别。)