【LSH源码分析】p稳定分布LSH算法
上一節,我們分析了LSH算法的通用框架,主要是建立索引結構和查詢近似最近鄰。這一小節,我們從p穩定分布LSH(p-Stable LSH)入手,逐漸深入學習LSH的精髓,進而靈活應用到解決大規模數據的檢索問題上。
對應海明距離的LSH稱為位采樣算法(bit sampling),該算法是比較得到的哈希值的海明距離,但是一般距離都是用歐式距離進行度量的,將歐式距離映射到海明空間再比較其的海明距離比較麻煩。于是,研究者提出了基于p-穩定分布的位置敏感哈希算法,可以直接處理歐式距離,并解決(R,c)-近鄰問題。
p-Stable分布
定義:對于一個實數集R上的分布D,如果存在P>=0,對任何n個實數v1,…,vn和n個滿足D分布的變量X1,…,Xn,隨機變量ΣiviXi和(Σi|vi|p)1/pX有相同的分布,其中X是服從D分布的一個隨機變量,則稱D為 一個p穩定分布。
對任何p∈(0,2]存在穩定分布:
p=1是柯西分布,概率密度函數為c(x)=1/[π(1+x2)];
p=2時是高斯分布,概率密度函數為g(x)=1/(2π)1/2*e-x^2/2。
利用p-stable分布可以有效的近似高維特征向量,并在保證度量距離的同時,對高維特征向量進行降維,其關鍵思想是,產生一個d維的隨機向量a,隨機向量a中的每一維隨機的、獨立的從p-stable分布中產生。對于一個d維的特征向量v,如定義,隨機變量a·v具有和(Σi|vi|p)1/pX一樣的分布,因此可以用a·v表示向量v來估算||v||p 。
p-Stable分布LSH中的哈希函數
p-Stable分布的LSH利用p-Stable的思想,使用它對每一個特征向量v賦予一個哈希值。該哈希函數是局部敏感的,因此如果v1和v2距離很近,它們的哈希值將相同,并被哈希到同一個桶中的概率會很大。
根據p-Stable分布,兩個向量v1和v2的映射距離a·v1-a·v2和||v1-v2||pX 的分布是一樣的。
a·v將特征向量v映射到實數集R,如果將實軸以寬度w等分,并對每一段進行標號,則a·v落到那個區間,就將此區間標號作為哈希值賦給它,這種方法構造的哈希函數對于兩個向量之間的距離具有局部保護作用。
哈希函數格式定義如下:
ha,b(v):Rd->N,映射一個d維特征向量v到一個整數集。哈希函數中又兩個隨機變量a和b,其中a為一個d維向量,每一維是一個獨立選自滿足p-Stable的隨機變量,b為[0,w]范圍內的隨機數,對于一個固定的a,b,則哈希函數ha,b(v)為
特征向量碰撞概率
隨機選取一個哈希函數ha,b(v),則特征向量v1和v2落在同一桶中的概率該如何計算呢?
首先定義c=||v1-v2||p,fp(t)為p-Stable分布的概率密度函數的絕對值,那么特征向量v1和v2映射到一個隨機向量a上的距離是|a·v1-a·v2|<w,即|(v1-v2)·a|<w,根據p-Stable分布的特性,||v1-v2||pX=|cX|<w,其中隨機變量X滿足p-Stable分布。
可得其碰撞概率p(c):
根據該式,可以得出兩個特征向量的沖突碰撞概率隨著距離c的增加而減小。
p-Stable分布LSH的相似性搜索算法
經過哈希函數哈希之后,g(v)=(h1(v),...,hk(v)),但將(h1(v),...,hk(v))直接存入哈希表,即占用內存,又不便于查找,為解決此問題,現定義另外兩個哈希函數:
由于每一個哈希桶(Hash Buckets)gi被映射成Zk,函數h1是普通哈希策略的哈希函數,函數h2用來確定鏈表中的哈希桶。
(1)要在一個鏈表中存儲一個哈希桶gi(v)=(x1,...,xk)時,實際上存的僅僅是h2(x1,...,xk)構造的指紋,而不是存儲向量(x1,...,xk),因此一個哈希桶gi(v)=(x1,...,xk)在鏈表中的相關信息僅有標識(identifier)指紋h2(x1,...,xk)和桶中的原始數據點。
(2)利用哈希函數h2,而不是存儲gi(v)=(x1,...,xk)的值有兩個原因:首先,用h2(x1,...,xk)構造的指紋可以大大減少哈希桶的存儲空間;其次,利用指紋值可以更快的檢索哈希表中哈希桶。通過選取一個足夠大的值以很大的概率來保證任意在一個鏈表的兩個不同的哈希桶有不同的h2指紋值。
不足與缺陷
LSH方法存在兩方面的不足:首先是典型的基于概率模型生成索引編碼的結果并不穩定。雖然編碼位數增加,但是查詢準確率的提高確十分緩慢;其次是需要大量的存儲空間,不適合于大規模數據的索引。E2LSH方法的目標是保證查詢結果的準確率和查全率,并不關注索引結構需要的存儲空間的大小。E2LSH使用多個索引空間以及多次哈希表查詢,生成的索引文件的大小是原始數據大小的數十倍甚至數百倍。
參考資料:
1、王旭樂.基于內容的圖像檢索系統中高維索引技術的研究[D].華中科技大學.2008
2、M.Datar,N.Immorlica,P.Indyk,and V.Mirrokni,“Locality-SensitiveHashing Scheme Based on p-Stable Distributions,”Proc.Symp. ComputationalGeometry, 2004.
3、A.Andoni,“Nearest Neighbor Search:The Old, theNew, and the Impossible”PhD dissertation,MIT,2009.
4、A.Andoni,P.Indyk.E2lsh:Exact Euclidean locality-sensitive hashing.http://web.mit.edu/andoni/www/LSH/.2004.
文/JasonDing(簡書作者)
原文鏈接:http://www.jianshu.com/p/f8091d5f68b0
總結
以上是生活随笔為你收集整理的【LSH源码分析】p稳定分布LSH算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UISegmentedControl的所
- 下一篇: K-means Algorithm 聚类