C2LSH沒有用多個hash table,是怎麼解決False Negative的?

LSH函數性質

在一個(r,cr,p1,p2) -sensitive LSH函數上,相距較近的點有更大的碰撞概率(且有概率下界p1 ),相距較遠的點有較小的碰撞概率(有概率上界p2 )。

這樣,通過一個LSH就能過濾掉很多相距較遠的點。但是會存在False Positive(FP),即有些相距較遠的點也可能投影距離很近。

爲減少FP,常會構造一個含有m 個LSH函數複合哈希函數(Compound LSH function)G ,同時一個複合哈希函數對應一個哈希表(hashing table)。哈希函數間進行AND操作,從而排除FP。但這樣做的弊端是會出現False Negative(FN),一些相距較近的點會被錯誤的排除掉。

爲解決這一問題,常構造L 組這樣的複合哈希函數,多個之間採用OR操作。即一個數據點只需要在一個複合哈希函數上成功碰撞即可被作爲候選點。

還有問題:L 個hash table中至少在一個hash table上發生碰撞的概率P=1(1Pc)L=1(1p(s)m)L

但C2LSH裏只有一組複合哈希函數,沒有多組,卻也取得了精度上的概率保證,那麼他有沒有處理False Negative,怎麼處理的?這是本帖關心的主要問題。

博主認爲其原因在於C2LSH改變了候選點評估標準。

在原始LSH框架下,候選點的選取標準是“至少在一個複合哈希函數上發生碰撞”。那麼什麼叫“在一個複合哈希函數上發生碰撞”呢?就是指在該複合哈希函數中的“每一個哈希函數上都發生碰撞”。也就是說,假設一個複合哈希函數裏共有m個哈希函數,某個點只在(m1) 個函數上發生了碰撞,都不能被當做候選點。

C2LSH只採用一個複合哈希函數,但是它改變了候選點評價標準。不再要求候選點必須要在每一個哈希函數上都發生碰撞。而是所有數據點來統計在m個函數上發生碰撞的次數(即Count Collisions,這是C2的由來)。碰撞次數多的點認爲其質量更高。通俗地講,由於兩個點發生碰撞的概率隨兩者之間距離的減小而提升,碰撞概率*哈希函數個數=碰撞次數。碰撞次數大是因爲碰撞概率大,那就說明這個點更近。

換句話說,在C2LSH裏,哪怕碰撞次數排在第一的點,只要其碰撞次數小於m,那麼在原始機制裏是不能被當做候選點的,而是成爲FN。

改變了原來機制中的候選點評價機制,還能用原來的理論保證嗎,容我再去看看再給出答案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章