1、余弦距離
余弦距離伤塌,也稱為余弦相似度灯萍,是用向量空間中兩個(gè)向量夾角的余弦值作為衡量兩個(gè)個(gè)體間差異的大小的度量。
向量每聪,是多維空間中有方向的線段旦棉,如果兩個(gè)向量的方向一致,即夾角接近零药薯,那么這兩個(gè)向量就相近绑洛。而要確定兩個(gè)向量方向是否一致,這就要用到余弦定理計(jì)算向量的夾角童本。
余弦定理描述了三角形中任何一個(gè)夾角和三個(gè)邊的關(guān)系真屯。給定三角形的三條邊,可以使用余弦定理求出三角形各個(gè)角的角度巾陕。假定三角形的三條邊為a讨跟,b和c,對應(yīng)的三個(gè)角為A鄙煤,B和C晾匠,那么角A的余弦為:
如果將三角形的兩邊b和c看成是兩個(gè)向量,則上述公式等價(jià)于:
其中分母表示兩個(gè)向量b和c的長度梯刚,分子表示兩個(gè)向量的內(nèi)積凉馆。
舉一個(gè)具體的例子,假如新聞X和新聞Y對應(yīng)向量分別是:
x1, x2, ..., x6400和
y1, y2, ..., y6400
則,它們之間的余弦距離可以用它們之間夾角的余弦值來表示:
當(dāng)兩條新聞向量夾角余弦等于1時(shí)澜共,這兩條新聞完全重復(fù)(用這個(gè)辦法可以刪除爬蟲所收集網(wǎng)頁中的重復(fù)網(wǎng)頁)向叉;當(dāng)夾角的余弦值接近于1時(shí),兩條新聞相似(可以用作文本分類)嗦董;夾角的余弦越小母谎,兩條新聞越不相關(guān)。
2京革、余弦距離和歐氏距離的對比
從上圖可以看出奇唤,余弦距離使用兩個(gè)向量夾角的余弦值作為衡量兩個(gè)個(gè)體間差異的大小。相比歐氏距離匹摇,余弦距離更加注重兩個(gè)向量在方向上的差異咬扇。
借助三維坐標(biāo)系來看下歐氏距離和余弦距離的區(qū)別:
從上圖可以看出,歐氏距離衡量的是空間各點(diǎn)的絕對距離廊勃,跟各個(gè)點(diǎn)所在的位置坐標(biāo)直接相關(guān)懈贺;而余弦距離衡量的是空間向量的夾角,更加體現(xiàn)在方向上的差異坡垫,而不是位置梭灿。如果保持A點(diǎn)位置不變,B點(diǎn)朝原方向遠(yuǎn)離坐標(biāo)軸原點(diǎn)葛虐,那么這個(gè)時(shí)候余弦距離??是保持不變的(因?yàn)閵A角沒有發(fā)生變化)胎源,而A、B兩點(diǎn)的距離顯然在發(fā)生改變屿脐,這就是歐氏距離和余弦距離之間的不同之處涕蚤。
歐氏距離和余弦距離各自有不同的計(jì)算方式和衡量特征,因此它們適用于不同的數(shù)據(jù)分析模型:
歐氏距離能夠體現(xiàn)個(gè)體數(shù)值特征的絕對差異的诵,所以更多的用于需要從維度的數(shù)值大小中體現(xiàn)差異的分析万栅,如使用用戶行為指標(biāo)分析用戶價(jià)值的相似度或差異。
余弦距離更多的是從方向上區(qū)分差異西疤,而對絕對的數(shù)值不敏感烦粒,更多的用于使用用戶對內(nèi)容評分來區(qū)分興趣的相似度和差異,同時(shí)修正了用戶間可能存在的度量標(biāo)準(zhǔn)不統(tǒng)一的問題(因?yàn)橛嘞揖嚯x對絕對數(shù)值不敏感)代赁。
3扰她、杰卡德相似性度量
(1)杰卡德相似系數(shù)
兩個(gè)集合A和B交集元素的個(gè)數(shù)在A、B并集中所占的比例芭碍,稱為這兩個(gè)集合的杰卡德系數(shù)徒役,用符號 J(A,B) 表示。杰卡德相似系數(shù)是衡量兩個(gè)集合相似度的一種指標(biāo)(余弦距離也可以用來衡量兩個(gè)集合的相似度)窖壕。
(2)杰卡德距離
與杰卡德相似系數(shù)相反的概念是杰卡德距離(Jaccard Distance)忧勿,可以用如下公式來表示:
杰卡德距離用兩個(gè)兩個(gè)集合中不同元素占所有元素的比例來衡量兩個(gè)集合的區(qū)分度杉女。
(3)杰卡德相似系數(shù)的應(yīng)用
假設(shè)樣本A和樣本B是兩個(gè)n維向量,而且所有維度的取值都是0或1鸳吸。例如熏挎,A(0,1,1,0)和B(1,0,1,1)。我們將樣本看成一個(gè)集合,1表示集合包含該元素,0表示集合不包含該元素馁启。
p:樣本A與B都是1的維度的個(gè)數(shù)
q:樣本A是1而B是0的維度的個(gè)數(shù)
r:樣本A是0而B是1的維度的個(gè)數(shù)
s:樣本A與B都是0的維度的個(gè)數(shù)
那么樣本A與B的杰卡德相似系數(shù)可以表示為:
此處分母之所以不加s的原因在于:
對于杰卡德相似系數(shù)或杰卡德距離來說,它處理的都是非對稱二元變量廉白。非對稱的意思是指狀態(tài)的兩個(gè)輸出不是同等重要的,例如乖寒,疾病檢查的陽性和陰性結(jié)果。
按照慣例院溺,我們將比較重要的輸出結(jié)果楣嘁,通常也是出現(xiàn)幾率較小的結(jié)果編碼為1(例如HIV陽性),而將另一種結(jié)果編碼為0(例如HIV陰性)珍逸。給定兩個(gè)非對稱二元變量逐虚,兩個(gè)都取1的情況(正匹配)認(rèn)為比兩個(gè)都取0的情況(負(fù)匹配)更有意義。負(fù)匹配的數(shù)量s認(rèn)為是不重要的谆膳,因此在計(jì)算時(shí)忽略叭爱。
(4)杰卡德相似度算法分析
杰卡德相似度算法沒有考慮向量中潛在數(shù)值的大小,而是簡單的處理為0和1漱病,不過买雾,做了這樣的處理之后,杰卡德方法的計(jì)算效率肯定是比較高的杨帽,畢竟只需要做集合操作漓穿。
4、調(diào)整余弦相似度算法(Adjusted Cosine Similarity)
余弦相似度更多的是從方向上區(qū)分差異注盈,而對絕對的數(shù)值不敏感晃危,因此沒法衡量每個(gè)維度上數(shù)值的差異,會導(dǎo)致這樣一種情況:
用戶對內(nèi)容評分老客,按5分制僚饭,X和Y兩個(gè)用戶對兩個(gè)內(nèi)容的評分分別為(1,2)和(4,5),使用余弦相似度得到的結(jié)果是0.98胧砰,兩者極為相似鳍鸵。但從評分上看X似乎不喜歡2這個(gè) 內(nèi)容,而Y則比較喜歡朴则,余弦相似度對數(shù)值的不敏感導(dǎo)致了結(jié)果的誤差权纤,需要修正這種不合理性就出現(xiàn)了調(diào)整余弦相似度钓简,即所有維度上的數(shù)值都減去一個(gè)均值,比如X和Y的評分均值都是3汹想,那么調(diào)整后為(-2外邓,-1)和(1,2),再用余弦相似度計(jì)算古掏,得到-0.8损话,相似度為負(fù)值并且差異不小,但顯然更加符合現(xiàn)實(shí)槽唾。
那么是否可以在(用戶-商品-行為數(shù)值)矩陣的基礎(chǔ)上使用調(diào)整余弦相似度計(jì)算呢丧枪?從算法原理分析,復(fù)雜度雖然增加了庞萍,但是應(yīng)該比普通余弦夾角算法要強(qiáng)拧烦。
參考文獻(xiàn):
[1] 不同相關(guān)性度量方法的線上效果對比與分析 http://blog.sina.com.cn/s/blog_4b59de07010166z9.html
[2] 數(shù)據(jù)挖掘概念與技術(shù) Jiawei Han等