日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在大数据中如何寻找相似的文档(shingle, minhash, LSH)(二)

發(fā)布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在大数据中如何寻找相似的文档(shingle, minhash, LSH)(二) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
接上篇譯文; 1.盡管我們利用minhashing技術(shù)將大數(shù)據(jù)量的文檔壓縮到小數(shù)據(jù)量的signatures,并且能夠保證文檔對之間的相似度大致不變。但是由于文檔對的數(shù)目可能非常的大,我們?nèi)匀徊荒芎苡行У恼业阶钕嗨频奈臋n對。 如果我們的目標(biāo)是計算每一對文檔對之間的相似度,那么我們就沒有更好的辦法了,或者可以用并行的方法減少運行的時間規(guī)模;但是如果我們的目的僅僅是找到的最相似的文檔對或者相似度在某種程度之上的文檔對,這時候我們就可以采用LSH技術(shù)(locality-sensitive hashing or near-neighbor search)。 2. ? ?應(yīng)用于尋找相似文檔的LSH技術(shù) 一般來說,我們這樣應(yīng)用LSH技術(shù):將所有的items(要比較的東西)進(jìn)行多次的hash,從而能夠?qū)⒖赡芟嗨频奈臋nhash到同一個bucket中;然后我們會只考慮那些hash到同一個bucket中的items,認(rèn)為他們組成的item對才有可能是我們要找的item對。 ?這其中就會產(chǎn)生兩個概念,一個是 false positives: 就是指那些本來不相似的item對卻被hash到一個bucket中;另一個是false negatives: 指那些本來相似的items對卻沒有被hash到同一個bucket中。 如何具體使用lsh技術(shù)呢? ?一個比較有效的hashing方法是將signature matrix(由所有文檔的signature組成,每一列存儲一個文檔的signature)分為b個bands,每個band包含r行(相當(dāng)于將每個文檔的b*r 個signatures分成b組); 對于每一個band用一個hash函數(shù)(輸入是每個文檔的r個signature,相當(dāng)于將一列考慮為hash的輸入),將每一列的signature hash到一些大數(shù)量的bucket中。(我們可以對不同的band使用相同的hash函數(shù),但是不同的band的bucket要放在不同的位置,從而保證不同band中相同的列不會被hash到同樣的bucket中。) 3. 對lsh的banding技術(shù)的分析 將設(shè)我們有b bands而且每個band有r行。并且假設(shè)一個特定的文檔對的jaccard距離是s。 ?從前文的minhash技術(shù)的分析(沒有翻譯 o(╯□╰)o)中可以知道該文檔對的任何一行的signature相同的概率是s。 ?然后我們就可以計算著文檔對成為一個候選的文檔對(被hash到同一個bucket中)的概率,過程如下: 在一個特定的band中,該文檔對的所有的signature都相等的概率是 s^r; ?那么不相等的概率就是 1-s^r; 所有的band中,該文檔對的signature都不相等的概率是 (1-s^r)^b; ?該文檔對至少會在一個band中相等的概率就是 1-(1-s^r)^b. 分析: 將b r看作一個常量,可以看出該概率是s的函數(shù)而且是一個典型的S型曲線. 該曲線橫軸是 文檔對的相似度; 縱軸為該文檔對被放到一個bucket中成為候選文檔對的概率;兩者之間的關(guān)系是一條我們非常熟知s型曲線,對于s型曲線,中間有一段非常陡峭的上升部分,可以將這個部分的橫軸看作相似度的閾值,高于這個相似度的一般以接近于1的概率(具體的概率可以通過前邊的分析計算出來)被分到同一個bucket中,而低于這個相似度閾值的則以接近于0的概率被分到同一個bucket中;而且這個閾值是b,r的函數(shù):s=(1/b)^(1/r)。 ? 這種函數(shù)的s型特性就滿足了我們對于LSH技術(shù)的要求,即將相似的文檔hash到同一bucket中,而將不相似的文檔hash到不同的bucket中,至于具體的false positive 和false negatives 與具體的b和r取值有關(guān)。(這種方法會產(chǎn)生一定的false positives 和 false negatives)
4. ? ? 最后我們總結(jié)下如何在大數(shù)據(jù)量的文檔對中找到相似的文檔對 1) 針對文檔特性選取合適的k值,對每一個文檔進(jìn)行k-shingle,并對shingle結(jié)果映射為整數(shù)。 2) 對每個文檔的shingle標(biāo)簽進(jìn)行排序。? 3) ?利用前文所述算法,計算每個文檔的signature(signature的長度n的選擇是一個需要tradeoff的量) 4) 選取合適的閾值t, 用來決定相似度多高的文檔對會被放到同一個bucket中作為候選對;然后選取bands:b以及rows:r,使得b*r=n,而且 t ≈ (1/b)^(1/r)。 如果希望false negatives盡量的低,可以選取b r使得t盡量小;如果追求速度,那就是的t盡量大。 5) 利用LSH技術(shù)計算出候選文檔對; 并對文檔對的最初的signatures進(jìn)行檢測,確保其相似度確實在t之上。 6) 最后回到文檔對最原始的字符狀態(tài),進(jìn)行檢測文檔對是否確實相似。

總結(jié)

以上是生活随笔為你收集整理的在大数据中如何寻找相似的文档(shingle, minhash, LSH)(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。