【问题标题】:Is there a way to find the n most distant vectors in an array?有没有办法在数组中找到 n 个最远的向量?
【发布时间】:2019-02-07 17:57:45
【问题描述】:

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

我曾尝试使用 hdbscan 进行聚类(在使用 UMAP 降低维度之后)以在其自然关节处划分向量空间,但它确实效果不佳。

所以现在我想知道是否有办法对空间的“遥远区域”(n 个彼此相距最远的向量)进行采样。

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

非常感谢!

【问题讨论】:

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


    【解决方案1】:

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

    如果文档存在“自然关节”和聚类,则某些聚类算法应该能够找到 N 个聚类,那么每个聚类的质心与其他聚类质心之间的 NxN 距离的数量越少,可能会识别出那些“最远的” “簇。

    注意任何向量,您可以使用Doc2Vec doc-vectors most_similar()topn 值为0/false-ish 以获得与所有的(未排序的)相似性> 其他模型文档向量。然后,您可以在该集合中找到最不相似的向量。如果您的数据集足够小,可以对文档向量的“全部”(或一些大样本)执行此操作,那么可能出现在“底部 N”中的其他文档最不相似,最多其他向量,将是最“遥远”的。

    这种“遥远”的想法是否实际显示在数据中或有用,尚不清楚。 (在高维空间中,一切都可能以与我们的 2d/3d 直觉不匹配的方式与其他一切“相距甚远”,并且某些向量中的微小差异稍微“更远”可能不对应于有用的区别。)

    【讨论】:

    • 非常感谢 gojomo,这很有帮助。如果您不介意,我有几个后续问题。我的模型有大约 15,000 个文档,分别有 40 和 90 个维度。 1. 您认为在 Doc2Vec 模型中查找文档集群的最佳方式是什么? (a)首先执行一些降维是否更好(如果是,umap 是否比 t-sne 更好?),(b)哪种聚类算法效果最好?当我使用 t-sne 或 umap 降低维度时,我会得到一大堆没有明确界限的文档。
    • 2.除了聚类之外,对语料库中讨论的主题进行抽样的最佳方法是什么?我的特定语料库包含对主观体验的描述,我想绘制这些体验的“状态空间”,即了解语料库中描述的主观体验的多样性。为此,我想知道是否可以获得 n 个均匀划分空间的向量,并获得与这些向量中的每一个最相似的词向量。我应该这样做吗,如果是这样,我可以用 gensim 来做吗?非常感谢您的帮助!
    • 我只用Doc2Vec 向量完成了有监督分类和已知标签,而不是无监督聚类,所以不能推荐任何特定的聚类方法。许多人应该工作,然后查看哪些文档在其他集群中具有邻居可能会提供信息。您可能希望避免将任何集群折叠到单个质心,因为它可能会隐藏高维度关系的某些“形状”。在低维投影中看到“大块”可能是特定投影/聚类的限制 - 聚类可能仍然以其他方式有用,或者可以通过调整步骤来改进。
    • 非常感谢 gojomo!我最终在没有降维的向量上使用球形 kmeans 聚类(使用余弦距离)。它实际上工作得很好,所以谢谢你!我会听从你关于质心的建议。
    猜你喜欢
    • 1970-01-01
    • 2010-11-05
    • 2011-10-11
    • 2021-03-24
    • 2018-09-16
    • 1970-01-01
    • 2020-07-26
    • 2012-06-05
    • 1970-01-01
    相关资源
    最近更新 更多