Scikit learn 计算高维数据相似性的最有效方法

Scikit learn 计算高维数据相似性的最有效方法,scikit-learn,data-mining,similarity,nearest-neighbor,Scikit Learn,Data Mining,Similarity,Nearest Neighbor,我有一个很大的用户兴趣列表(>10k)。每个列表都相当长,包含一些用户兴趣,例如[足球]、[拳击]、[电影]…,并且因用户而异。所以数据是非常高维的 现在,我想计算每个列表之间的成对相似性。实际上,具体地说,对于某个列表,我想得到n个最相似的列表,其中n是任意的。我正在使用scikit实现这一点,到目前为止,我只是对列表进行矢量化,并计算每个列表之间的余弦相似性。可以理解,这似乎相当缓慢,并不能很好地扩展到大型但稀疏的数据集。使用kd树或Ball树之类的东西会更好吗?对于稀疏的数据和余弦,最有效

我有一个很大的用户兴趣列表(>10k)。每个列表都相当长,包含一些用户兴趣,例如[足球]、[拳击]、[电影]…,并且因用户而异。所以数据是非常高维的


现在,我想计算每个列表之间的成对相似性。实际上,具体地说,对于某个列表,我想得到n个最相似的列表,其中n是任意的。我正在使用scikit实现这一点,到目前为止,我只是对列表进行矢量化,并计算每个列表之间的余弦相似性。可以理解,这似乎相当缓慢,并不能很好地扩展到大型但稀疏的数据集。使用kd树或Ball树之类的东西会更好吗?

对于稀疏的数据和余弦,最有效的方法是倒排索引


想象一下一个文本搜索引擎。它正是您所需要的。

要么这样,要么在kd树变得有用的较小空间上进行随机投影+1.