我分别有来自集合 A 和 B 的 n 和 m 个二进制向量(长度为 1500)。 我需要一个度量来说明所有 n 个向量和 m 个向量的相似程度(距离度量的一种)。 输出应为total_distance_of_n_vectors 和total_distance_of_m_vectors。 如果total_distance_of_n_vectors>total_distance_of_m_vectors,则意味着集合B比集合A有更多的相似向量。
我应该使用哪个指标?我想到了杰卡德的相似性。但我无法将其放在这种情况下。我应该找到每个向量彼此之间的距离来找到总距离还是其他东西?
最佳答案
有两个与您的问题相关的概念,您应该分别考虑。
相似性度量:
无论您的评分机制如何,您都应该找到最适合您的数据的相似性度量。它可以是欧几里得距离(不适合 1500 维空间)、余弦距离(基于点积)或哈密顿距离(假设您的输入特征完全独立,但这种情况很少见)。
距离函数可以进行很多操作,您应该找到一个对您的数据有意义的函数。
评分机制:
您在问题中提到了total_distance_of_vectors,这可能不是您想要的。如果n >> m
,几乎可以肯定,n 个向量的距离总和大于 m 个向量的总距离。
您正在寻找的很可能是集合中成员之间距离的平均值。然后,根据您希望平均值对异常值是否敏感的天气,您可以采用距离平均值或平方距离平均值。
如果您想更深入地挖掘,您还可以获取两组内距离的均值和方差并比较分布。
关于python - n 个二元向量的距离度量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49627823/