最小雜湊函式

2022-03-19 17:23:03 字數 1159 閱讀 3306

最小雜湊(minhash),簡單來說就是從使用者喜歡的所有商品中隨機抽出n個商品,對於抽出的這n個商品都相同的幾個使用者,認為是興趣相似的使用者,屬於同一類。例如使用者a喜歡商品,使用者b喜歡商品,使用者c喜歡商品,在每個使用者喜歡的商品列表中都隨機抽出2個商品,使用者a抽出的商品是,使用者b抽出的商品是,使用者c抽出的商品是,因為使用者a和使用者b抽出的兩個商品都是,所以認為使用者a和使用者b是興趣相同的使用者,屬於同一類。使用者c抽出的商品與使用者a和使用者b商品抽出商品不完全相同,所以使用者c和使用者a、使用者b不是同一類使用者。

這裡叫做最小雜湊,是指在抽取商品時用的方法是最小雜湊的方法。先對每個商品計算乙個雜湊值(可以認為是乙個函式,輸入是商品,返回乙個數值),把雜湊值最小的作為抽出來的商品。如果要同時抽出多個商品,那就使用多個雜湊函式計算得到多個雜湊值。還是上面的例子,要抽出兩個商品,就準備兩個雜湊函式h1和h2(就理解為函式,雜湊可以認為是名稱,該函式盡量保證不同的值計算得到不同的結果),分別對每個商品求出乙個值。如對於使用者a,使用h1函式計算得到三個值h1(a),h1(b),h1(c),比較它們的大小,如果其中最小的是h1(b),則先記錄下來,在用h2函式同樣計算得到三個值,取其中的最小值,例如是h2(c),那麼,我們認為「h1(b)_h2(c)」代表使用者a屬於這樣的乙個群組。如果使用者b使用h1函式和h2函式分別計算出的最小值也是h1(b)和h2(c),就認為使用者b也屬於「h1(b)_h2(c)」群組,則使用者a和使用者b是一組的,即興趣相似的。

在應用中,會使用多個雜湊函式,如2n個hash函式,這樣對於乙個使用者,會被分到n個組中(如上所述,兩個雜湊函式算出來的值組成乙個組號,2n個雜湊函式,能組成n個組)。

最小雜湊在這裡屬於乙個聚類演算法,根據使用者及其喜歡的商品來對使用者進行聚類,將存在相同喜歡商品的使用者聚成一類。

最小雜湊聚類演算法的優點是:

(1)       計算比較簡單,比起兩兩使用者間的比較,效率提高較大

(2)       能夠很快的找出有相同商品的使用者

(3)       能簡單地對使用者進行聚類

最小雜湊聚類演算法的缺點是:

(1)       hash函式具有一定的偶然性,很可能會有遺漏。

(2)       使用的雜湊函式較多時,分組數就會隨之變多,資料量會隨著雜湊函式的個數線性增長。

最小雜湊對形如「使用者,商品」的資料進行計算,得到多個使用者組成的群組,起到乙個聚類的作用。當然,也可以是「物品,屬性」這樣的資料,來對物品進行聚類。

雜湊函式(雜湊函式,Hash Function)

說明 雜湊的概念屬於查詢,它不以關鍵字的比較為基本操作,採用直接定址技術。在理想情況下,查詢的期望時間為o 1 簡單的說,hash函式就是把任意長的輸入字串變化成固定長的輸出字串的一種函式。輸出字串的長度稱為hash函式的位數。下圖 於維基百科 雜湊函式把訊息或資料壓縮成摘要,使得資料量變小,將資料...

雜湊函式 雜湊函式 演算法

常用字串雜湊函式有bkdrhash,aphash,djbhash,jshash,rshash,sdbmhash,pjwhash,elfhash等等。c 實現 include define m 249997 define m1 1000003 define m2 10000019 大素數 using ...

什麼是雜湊演算法 雜湊函式 雜湊函式?

舉個例子,比如這裡有一萬首歌,給你一首新的歌x,要求你確認這首歌是否在那一萬首歌之內。無疑,將一萬首歌乙個乙個比對非常慢。但如果存在一種方式,能將一萬首歌的每首資料濃縮到乙個數字 稱為雜湊碼 中,於是得到一萬個數字,那麼用同樣的演算法計算新的歌x的編碼,看看歌x的編碼是否在之前那一萬個數字中,就能知...