如何在海量数据中查找最相似的topk样本


大概总结3中方法,不一定对,欢迎探讨

1:还记得KNN算法吧,选择最近的K个样本作为预测输出

其中减少计算量的地方在于使用了KD树,使得查找非常高效

先计算每个特征的方差,降序排序构建二叉树
对当前特征排序,取中位数作为分裂节点,把数据划分成2部分
对左右部分递归处理

搜索最近邻点:沿着路径搜索即可

当维数较大时,直接利用k-d树快速检索的性能急剧下降。
假设数据集的维数为D,一般来说要求数据的规模N满足条件:
N远大于2的D次方,才能达到高效的搜索。


2:使用聚类算法

时间复杂度为O(n*k*t) n为样本数,k为聚类中心数,t为迭代次数

查找相似样本的时候就可以在本簇里面查找或者在相邻的簇里面查找


3:使用hash大法

对特征hash一次

这样相似的样本就会被映射到相邻的位置



你可能感兴趣的:(topk相似)