局部敏感哈希Locality Sensitive Hashing, LSH()
LSH最根本的目的是能高效处理海量 高维数据 的 最近邻 问题。在信息检索,数据挖掘以及推荐系统等应用中,我们经常会遇到的一个问题就是海量的高维数据查找最近邻。不同于我们在数据结构教材中对哈希算法的认识,哈希最开始是为了减少冲突方便快速增删改查,在这里LSH恰恰相反,它利用的正是哈希冲突加速检索,并且效果极其明显。 LSH(局部敏感哈希)函数使得2个相似度很高的数据以较高的概率映射成同一个hash值,而2个相似度很低的数据以极低的概率映射成同一个hash值。 定义 3 : 给定一族哈希函数 H H , H H 是一个从欧式空间 S S 到哈希编码空间 U U 的映射。如果以下两个条件都满足,则称此哈希函数满足 ( r 1 , r 2 , p 1 , p 2 ) ( r 1 , r 2 , p 1 , p 2 ) 性。 如果 d ( O 1 , O 2 ) < r 1 d ( O 1 , O 2 ) < r 1 ,那么 P r [ h ( O 1 ) = h ( O 2 ) ] ≥ p 1 P r [ h ( O 1 ) = h ( O 2 ) ] ≥ p 1 如果 d ( O 1 , O 2 ) > r 2 d ( O 1 , O 2 ) > r 2 ,那么 P r [ h ( O 1 ) = h ( O 2 ) ] ≤ p 2 P r [ h ( O 1 ) = h ( O 2