數據挖掘——近似最近鄰算法ANN之LSH

數據挖掘——近似最近鄰算法ANN之LSH

簡介

局部敏感哈希(Locality Sensitive Hashing,LSH)主要是爲了處理高維度數據的查詢和匹配等操作。

關於這個算法,綜合多個前輩的總結,總算是能搞懂的,現將我使用到的算法說明總結如下:

【文本相似性計算】minHash和LSH算法

大規模數據的相似度計算:LSH算法

在此基礎上,再總結下LSH算法的大致步驟,並給出一個具體實例(網頁查找)。

LSH算法

必須說明,看到這裏之前,一定要仔細研讀上面給出的兩個鏈接,不然看不明白下面的實例。

LSH之相似網頁查找——Simhash

爲了計算哈希後各向量之間的距離,這裏使用漢明距離。

實例:
在這裏插入圖片描述
上面的圖是這個算法的大致流程圖,下面是具體過程:

在這裏插入圖片描述
假設當前文本文件爲 “美國“51區”僱員稱內部有9架飛機,曾看見灰色外星人”

(1)提取特徵

使用jieba庫函數,將上文本提取出特徵分別爲“美國”、“51區”、“僱員”、“稱”、……,“灰色”、“外星人”等。

(2)Hash

然後使用各種好使(即指儘量減少碰撞又能表達原特徵)的手段將提取出的特徵進行hash,hash後的特徵如上圖的第二列所示。

(3)加權

爲每一個特徵賦予一個權重,這個權重可使用tf-idf統計詞頻(當前文件中該特徵出現的次數/所有文件中該特徵出現的總次數),顯然,這個詞頻越大說明該特徵越重要,相應地權重就越大。這樣給每個hash後的特徵乘上這個權重,得到第三列。

(4)合併

將得到的每個乘以相應權重的特徵累加起來,各個數位各自相加。這樣,得到最右下角的一個對源文件的特徵表達。

(5)降維

對於上步驟中得到的特徵表達,大於0的另其爲1,小於0的另其爲0,這樣得到最終降維結果:[1,0,1,0,1,1]

思考一個問題:如果去掉特徵“灰色”,這樣的話對最後的結果會有影響嗎?

分析下:特徵“灰色”hash並加權後得[4,-4,4,4,4,4],如果去掉該特徵,那麼累加後特徵變爲[30,-22,38,-9,51,9],最後對應到降維的結果依然是[1,0,1,0,1,1]沒變。

所以,只要那些權重很大(很重要)的特徵纔會影響到最後的結果。

其他的近鄰算法先佔個坑,後面再補充:

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