基於hash的相似度計算方法,是一種基於概率的高維度資料的維度削減的方法,主要用於大規模資料的壓縮與實時或者快速的計算場景下,基於hash方法的相似度計算經常用於高維度大資料量的情況下,將利用原始資訊不可儲存與計算的問題轉化為對映空間的可儲存計算問題,在海量文字重複性判斷方面,近似文字查詢方面有比較多的應用,google的網頁去重[1],google news的協同過濾[2,3]等都是採用hash方法進行近似相似度的計算,比較常見的應用場景near-duplicate detection、image similarity identification、nearest neighbor search,常用的一些方法包括i-match,shingling、locality-sensitive hashing族等方法,下面針對幾種常見的hash方法進行介紹。
minhash方法是locality-sensitive hashing[4,5]演算法族裡的乙個常用方法,基本的思想是,對於每乙個物件的itemlist,將輸入的item進行hash,這樣相似的item具有很高的相似度被對映到相同的buckets裡面,這樣盡量保證了hash之後兩個物件之間的相似程度和原來是高相似的,而buckets的數量是遠遠小於輸入的item的,因此又達到降低複雜度的目的。
minhash方法用jaccard進行相似度的計算方法,則對於兩個集合和 , 和 的相似性的計算方法為:
當兩個集合越相似,則該值越接近1,否則越接近0。用minhash方法,將乙個集合對映到[0-r-1]之間的值,以相同的概率隨機的抽取乙個[0-r-1[的乙個排列,依次排列查詢第一次出現1的行。
設隨機排列為43201(edcab),對於c1列,第一次出現1的行是r4,所以h(c1) = 3,同理有h(c2)=2, h(c3)=4, h(c4)=3。
通過多次抽取隨機排列得到n個minhash函式h1,h2,…,hn,依此對每一列都計算n個minhash值。對於兩個集合,看看n個值裡面對應相等的比例,即可估計出兩集合的jaccard相似度。可以把每個集合的n個minhash值列為一列,得到乙個n行c列的簽名矩陣。因為n可遠小於r,這樣在壓縮了資料規模的同時,並且仍能近似計算出相似度。
simhash方法是在大文字重複識別常用的乙個方法,該方法主要是通過將物件的原始特徵集合對映為乙個固定長度的簽名,將物件之間的相似度的度量轉化為簽名的漢明距離,通過這樣的方式,極大限度地進行了降低了計算和儲存的消耗。
該方法通過對輸入特徵集合的計算步驟可以描述如下:
將乙個f維的向量v初始化為0;f位的二進位制數s初始化為0;
對每乙個特徵:用傳統的hash演算法對該特徵產生乙個f位的簽名b。對i=1到f:
如果b的第i位為1,則v的第i個元素加上該特徵的權重;
否則,v的第i個元素減去該特徵的權重。
如果v的第i個元素大於0,則s的第i位為1,否則為0;
輸出s作為簽名。
通過上述步驟將輸入的表示物件的特徵集合轉化為該物件的乙個簽名,在完成簽名之後,度量兩個物件的相似度的差異即變成了對量二者的指紋的k位的差異情況。
對於如何快速查詢出某乙個簽名是否與其存在最大差異不超過k個bit的指紋,detecting near-duplicates for web crawling這篇**中進行了介紹。該查詢方法的基本思想是利用空間換時間的方法,該方法的依據是需要查詢的兩個指紋的差異很小,這樣可以通過將原始指紋進行分塊索引,如果兩個指紋的差異很小,則合理的分塊後,根據鴿籠原理,其中存在一定數量的塊是一致的,通過利用相同的塊進行相似的指紋的召回,只需要比對召回的塊中有差異的塊的bit差異,這樣減少了需要比對的數量,節省了比對的時間開銷。
hash方法的相似度計算的主要應用場景,一般是針對大規模資料進行壓縮,在保證效果損失可接受的情況下,節省儲存空間,加快運算速度,針對該方法的應用,在目前的大規模的網際網路處理中,很多相似度的計算都是基於這種近似性的計算,並取得了比較好的效果。
設隨機排列為43201(edcab),對於c1列,第一次出現1的行是r4,所以h(c1) = 3,同理有h(c2)=2, h(c3)=4, h(c4)=3。
通過多次抽取隨機排列得到n個minhash函式h1,h2,…,hn,依此對每一列都計算n個minhash值。對於兩個集合,看看n個值裡面對應相等的比例,即可估計出兩集合的jaccard相似度。可以把每個集合的n個minhash值列為一列,得到乙個n行c列的簽名矩陣。因為n可遠小於r,這樣在壓縮了資料規模的同時,並且仍能近似計算出相似度。
**:
基於相似度的方法
異常 通常是乙個主觀的判斷,需要結合業務背景和環境來具體分析確定。雜訊和異常之間 正常資料和噪 聲之間的邊界都是模糊的。異常值通常具有更高的離群程度分數值,同時也更具有可解釋性。巢狀迴圈 第一層迴圈遍歷每個資料,第二層迴圈進行異常判斷,需要計算當前點與其他點的距離,一旦已識別出多於 個資料點與當前點...
基於Map Reduce的相似度計算
基於map reduce的相似度計算 不久前 6.29 參加了chinahadoop的夏季沙龍,聽了人人的大牛講了基於map reduce的相似度計算的優化,感覺對map reduce程式設計模型的理解又進一步加深了,在這裡把該演算法總結成博文,以期能夠更加透徹的理解該演算法。相似度的計算在文字的分...
相似度計算方法
pearson 相關係數是用協方差除以兩個變數的標準差得到的,雖然協方差能反映兩個隨機變數的相關程度 協方差大於0的時候表示兩者正相關,小於0的時候表示兩者負相關 但其數值上受量綱的影響很大,不能簡單地從協方差的數值大小給出變數相關程度的判斷。為了消除這種量綱的影響,於是就有了相關係數的概念。由上圖...