機(jī)器學(xué)習(xí)中常用的相似性度量算法

??在目前的自然語言處理、數(shù)據(jù)挖掘以及機(jī)器學(xué)習(xí)中,相似性度量算法是一種比較常用的算法,是文本計(jì)算的基礎(chǔ)。相似性度量有助于幫助開發(fā)者發(fā)現(xiàn)數(shù)據(jù)關(guān)聯(lián)性,其核心點(diǎn)在于兩個(gè)方面:1.數(shù)據(jù)的特征表示。2. 集合之間的表示方法。

1. Jaccard相似系數(shù)

??Jaccard index, 又稱為Jaccard相似系數(shù)(Jaccard similarity coefficient),也稱之為雅可比相似度系數(shù),用于比較有限樣本集之間的相似性與差異性。Jaccard系數(shù)值越大,樣本相似度越高。

狹義的Jaccard相似系數(shù)

??狹義的Jaccard相似系數(shù)是通過兩組樣本直接的交集與總集之間的比值來度量,公式如下:


Jaccard相似系數(shù).png

??當(dāng)集合A,B都為空時(shí),J(A,B)定義為1。根據(jù)上述公式,當(dāng)集合A和集合B兩者之間的交集越大時(shí),表明兩者之間的相似程度越高。特別的,當(dāng)集合A和集合B相同時(shí),J(A,B)為1。因此:

                        J(A,B)∈[0,1]
廣義的Jaccard相似系數(shù)

??廣義的Jaccard相似系數(shù)也稱作Tanimoto系數(shù),一般用EJ表示,公式如下:


廣義Jaccard系數(shù).png

??上述公式中的AB分別表示兩個(gè)向量,與俠義的Jaccrad中的元素為二值數(shù)據(jù)不同,廣義Jaccard可以使元素不僅是0或1,實(shí)質(zhì)是狹義Jaccard系數(shù)的擴(kuò)展。

2. 基于MinHash的相似性算法

??Minhash是一種基于Jaccard相關(guān)系數(shù)的快速對(duì)兩個(gè)幾個(gè)進(jìn)行相似性分析的方法。該算法起初主要用于在搜索引擎中的重復(fù)網(wǎng)頁檢測(cè),現(xiàn)在也大量應(yīng)用于解決大規(guī)模聚類問題。
??在采用Jaccard系數(shù)進(jìn)行相似度計(jì)算時(shí),需要計(jì)算兩個(gè)集合的交集和并集,在海量維度場景下,計(jì)算的時(shí)間和空間復(fù)雜度都非常巨大。而Minhash在Jaccard的基礎(chǔ)上可以起到很好的降維效果。
??采用Minhash可以起到很好的減少計(jì)算復(fù)雜度的作用,其基本原理為:對(duì)于兩個(gè)集合A,B,在集合A和集合B的并集中選取元素的概率等于Jaccard系數(shù)。例如對(duì)于集合A={a, b, c},集合B={b,c,d},集合A和B的合集為{a,b,c,d},集合A和B的交集為{b,c},集合A和集合B的Jaccard系數(shù)為:0.5,而從交集{b,c}中挑選任何一個(gè)元素的概率也為:0.5,即與Jaccard系數(shù)相等。
??關(guān)于MinHash,先定義幾個(gè)符號(hào)術(shù)語:
??h(x): 把x映射成一個(gè)整數(shù)的哈希函數(shù)。
??hmin(S):集合S中的元素經(jīng)過h(x)哈希后,具有最小哈希值的元素。
??那么對(duì)集合A、B,hmin(A) = hmin(B)成立的條件是A ∪ B 中具有最小哈希值的元素也在 A ∩ B中。這里有一個(gè)假設(shè),h(x)是一個(gè)良好的哈希函數(shù),它具有很好的均勻性,能夠把不同元素映射成不同的整數(shù)。所以有,Pr[hmin(A) = hmin(B)] = J(A,B),即集合A和B的相似度為集合A、B經(jīng)過hash后最小哈希值相等的概率。
??基于以上結(jié)論,我們便可以根據(jù)MinHash來計(jì)算兩個(gè)集合的相似度了。一般有兩種方法:
??1:使用多個(gè)hash函數(shù)
??為了計(jì)算集合A、B具有最小哈希值的概率,我們可以選擇一定數(shù)量的hash函數(shù),比如K個(gè)。然后用這K個(gè)hash函數(shù)分別對(duì)集合A、B求哈希值,對(duì)每個(gè)集合都得到K個(gè)最小值。比如Min(A)k={a1,a2,...,ak},Min(B)k={b1,b2,...,bk}。那么,集合A、B的相似度為|Min(A)k ∩ Min(B)k| / |Min(A)k ∪ Min(B)k|,即Min(A)k和Min(B)k中相同元素個(gè)數(shù)與總的元素個(gè)數(shù)的比例。
??2:使用單個(gè)hash函數(shù)
??第一種方法有一個(gè)很明顯的缺陷,那就是計(jì)算復(fù)雜度高。使用單個(gè)hash函數(shù)是怎么解決這個(gè)問題的呢?請(qǐng)看:前面我們定義過 hmin(S)為集合S中具有最小哈希值的一個(gè)元素,那么我們也可以定義hmink(S)為集合S中具有最小哈希值的K個(gè)元素。這樣一來我們就只需要對(duì)每個(gè)集合求一次哈希,然后取最小的K個(gè)元素。計(jì)算兩個(gè)集合A、B的相似度,就是集合A中最小的K個(gè)元素與集合B中最小的K個(gè)元素的交集個(gè)數(shù)與并集個(gè)數(shù)的比例。

3. 余弦相似度

??雖然MinHash減小了計(jì)算復(fù)雜度,但是實(shí)質(zhì)上,Jaccard的理論基礎(chǔ)支持還不夠,因?yàn)閮H僅依靠內(nèi)部屬性是否出現(xiàn)去判定兩者是否相似并不夠精準(zhǔn)。因此,產(chǎn)生了余弦相似度,它將屬性是否出現(xiàn)變更為屬性在樣本中的權(quán)重。余弦相似度是基于向量空間模型的算法,其關(guān)鍵字向量依賴于TF-IDF算法或者其他關(guān)鍵字提取算法。余弦相似度是通過計(jì)算兩個(gè)向量的夾角余弦值來評(píng)估他們的相似度。余弦相似度將向量根據(jù)坐標(biāo)值,繪制到向量空間中,如最常見的二維空間。
余弦相似度的計(jì)算公式如下:


余弦相似度.png

??余弦值的范圍在[-1,1]之間,值越趨近于1,代表兩個(gè)向量的方向越接近;越趨近于-1,他們的方向越相反;接近于0,表示兩個(gè)向量近乎于正交。
??最常見的應(yīng)用就是計(jì)算文本相似度。將兩個(gè)文本根據(jù)他們?cè)~,建立兩個(gè)向量,計(jì)算這兩個(gè)向量的余弦值,就可以知道兩個(gè)文本在統(tǒng)計(jì)學(xué)方法中他們的相似度情況。實(shí)踐證明,這是一個(gè)非常有效的方法。

4.基于SimHsh的相似性算法

??SimHash是一種局部敏感的哈希算法那,可以理解為指紋碼,此類指紋碼不同于其他哈希算法對(duì)應(yīng)的指紋碼,指紋碼雖然幾乎唯一,但是SimHash可以使得相似的文本具有相似的哈希值。通過計(jì)算漢明距離,表達(dá)兩個(gè)文本之間的相似度。這是SIMHash最重要的特征。
??前面我們介紹了基于Jaccard相似系數(shù)、改進(jìn)的MinHash,以及余弦相似度來度量樣本間的相似性。正常情況下,余弦相似度是一種比較可取的方式,但是在現(xiàn)實(shí)中,采用余弦相似度面臨的問題也越來越突出:
(1)余弦相似度兩兩計(jì)算的方式,效果雖然明顯,但是計(jì)算復(fù)雜度較高。
(2)通過關(guān)鍵詞的特征向量表達(dá)文本的特征,不易于存儲(chǔ)。
(3)在文本單詞較少時(shí),可能會(huì)因?yàn)橐粌蓚€(gè)關(guān)鍵詞波動(dòng)較大。
而SimHash可以很好的解決上述問題。

SimHash計(jì)算過程
  1. 分詞與權(quán)重計(jì)算。將詞語進(jìn)行分詞處理,并計(jì)算每個(gè)分詞在文本中的權(quán)重。當(dāng)所需處理的文本長度過長時(shí),只需要按照權(quán)重由高到低篩選出前K個(gè)詞語即可,不需要將每個(gè)詞都納入計(jì)算。
  2. 哈希二進(jìn)制計(jì)算。對(duì)詞語進(jìn)行二進(jìn)制轉(zhuǎn)換,轉(zhuǎn)換的結(jié)果可以是一個(gè)32位或64位的二進(jìn)制值。
  3. 詞語加權(quán)。在步驟1中已經(jīng)得到每個(gè)詞語在文中的權(quán)重,這些權(quán)重需要表現(xiàn)在其二進(jìn)制內(nèi)容中,將權(quán)重與詞語的二進(jìn)制值進(jìn)行按位乘法,不同點(diǎn)在于,遇到二進(jìn)制值為0時(shí)乘以權(quán)重的負(fù)數(shù),遇到二進(jìn)制值為1時(shí)乘以權(quán)重的即可。
  4. 合并累計(jì)。對(duì)文本中的詞語進(jìn)行加權(quán)計(jì)算之后,最終每個(gè)詞語都會(huì)產(chǎn)生加權(quán)值,這些值內(nèi)容代表著該詞語在每個(gè)二進(jìn)制位上的特征。若需計(jì)算文本的全局特征,只需將文本詞語的加權(quán)值進(jìn)行合并累計(jì),該過程即可理解為將加權(quán)值按照每一位進(jìn)行求和。
  5. 降維輸出。步驟四的累加結(jié)果中,實(shí)質(zhì)上已經(jīng)產(chǎn)生了文本的特征碼,但是在絕對(duì)多數(shù)情況下,該特征碼不僅較長,而且內(nèi)容也會(huì)各式各樣,會(huì)給特征比較帶來困難,因此,需要將特征碼進(jìn)行降維輸出。降維的目的是降低特征碼的復(fù)雜度,約定位值小于0的為-1,大于等于0的為1,該值即為SimHash。
    ??SimHash目前主要用于重復(fù)信息的過濾,通過比較兩個(gè)文本的漢明距離來判定兩個(gè)文本的相似度。與余弦相似度相比,SimHash可以大大復(fù)雜文本的計(jì)算復(fù)雜度。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評(píng)論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,556評(píng)論 3 418
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,463評(píng)論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,778評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,218評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,436評(píng)論 0 288
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,969評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,795評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,993評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,229評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評(píng)論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,687評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,990評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容