目的:解决NN
1.定义
S:顶点域
D:定点间的距离(采用某种距离度量)
意思就是,如果点p和点q的距离小于某个阈值,那么它们被哈希到一个桶中的概率至少是p1;如果距离大于某个值,那么它们不会被哈希到同一个桶的概率最大是p2。也就是说距离越近越容易被哈希到同一个桶中。
下面这个事哈希函数:
a:根据p-stable分布得到的一个d维随机向量;
b:[0 , W] 的任意一个值;
h(v)将一个d维向量v映射为一个整数;
2.LSH Indexing过程
(1). 定义函数族G={g: S --> UM},其中g(v) = (h1(v),h2(v),h3(v)....hM(v))。每个hj都是从上面那个式子来的。
(2). 从G中选取L个函数,这样对向量v哈希后就会得到L个hash table,每个table包含M个哈希值。
LSH将点q的hash桶做为候选集,然后对候选集排序找到top K.
缺点:可能需要大量hash table来提高NN准确率。