Algorithm 如何在大量的向量中找到几个相似的向量?

Algorithm 如何在大量的向量中找到几个相似的向量?,algorithm,cluster-analysis,data-mining,hierarchical-clustering,Algorithm,Cluster Analysis,Data Mining,Hierarchical Clustering,假设有大量(如十亿)向量(如存储在数据库中)。所有向量都有相同数量的数值(例如,每个向量有100000个整数值)。有一个距离函数,告诉两个向量之间的距离(可能是简单的欧几里德,或更具体的东西)。大多数向量都非常遥远,但可能有几个组(例如,每个组大约1000个向量,但每个组的大小不同)彼此非常接近,甚至相似。哪种算法可以有效地找到这些组 层次聚类(聚合)应该能够找到这样一个数据集中的所有聚类。但我对整个集群不感兴趣。有没有办法限制搜索或使用不同的算法?您能量化“彼此非常接近”的程度吗?如果是这样,

假设有大量(如十亿)向量(如存储在数据库中)。所有向量都有相同数量的数值(例如,每个向量有100000个整数值)。有一个距离函数,告诉两个向量之间的距离(可能是简单的欧几里德,或更具体的东西)。大多数向量都非常遥远,但可能有几个组(例如,每个组大约1000个向量,但每个组的大小不同)彼此非常接近,甚至相似。哪种算法可以有效地找到这些组


层次聚类(聚合)应该能够找到这样一个数据集中的所有聚类。但我对整个集群不感兴趣。有没有办法限制搜索或使用不同的算法?

您能量化“彼此非常接近”的程度吗?如果是这样,那么如果向量的距离小于某个半径,则可以将其放置到簇中。用a来加速这个过程。我可以通过偏离的向量元素的最大数量来量化接近度。如果数据是完美的,则组的向量将(几乎)相同,即在元素比较中(几乎)向量的所有元素都相同(距离约为零)。不在同一组中的向量将有许多偏差(以及更大的距离)。我可以编写一个距离函数,如果超过5%的元素不同,它会有意返回一个高于预配置阈值的距离。