1、余弦距離
余弦距離,也稱為余弦相似度,是用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小的度量。
向量,是多維空間中有方向的線段,如果兩個向量的方向一致,即夾角接近零,那麼這兩個向量就相近。而要確定兩個向量方向是否一致,這就要用到餘弦定理計算向量的夾角。
餘弦定理描述了三角形中任何乙個夾角和三個邊的關係。給定三角形的三條邊,可以使用餘弦定理求出三角形各個角的角度。假定三角形的三條邊為a,b和c,對應的三個角為a,b和c,那麼角a的余弦為:
如果將三角形的兩邊b和c看成是兩個向量,則上述公式等價於:
其中分母表示兩個向量b和c的長度,分子表示兩個向量的內積。
舉乙個具體的例子,假如新聞x和新聞y對應向量分別是:
x1, x2, …, x6400和
y1, y2, …, y6400
則,它們之間的余弦距離可以用它們之間夾角的余弦值來表示:
當兩條新聞向量夾角余弦等於1時,這兩條新聞完全重複(用這個辦法可以刪除爬蟲所收集網頁中的重複網頁);當夾角的余弦值接近於1時,兩條新聞相似(可以用作文字分類);夾角的余弦越小,兩條新聞越不相關。
2、余弦距離和歐氏距離的對比
從上圖可以看出,余弦距離使用兩個向量夾角的余弦值作為衡量兩個個體間差異的大小。相比歐氏距離,余弦距離更加注重兩個向量在方向上的差異。
借助三維座標系來看下歐氏距離和余弦距離的區別:
從上圖可以看出,歐氏距離衡量的是空間各點的絕對距離,跟各個點所在的位置座標直接相關;而余弦距離衡量的是空間向量的夾角,更加體現在方向上的差異,而不是位置。如果保持a點位置不變,b點朝原方向遠離座標軸原點,那麼這個時候余弦距離 clip_image011 是保持不變的(因為夾角沒有發生變化),而a、b兩點的距離顯然在發生改變,這就是歐氏距離和余弦距離之間的不同之處。
歐氏距離和余弦距離各自有不同的計算方式和衡量特徵,因此它們適用於不同的資料分析模型:
歐氏距離能夠體現個體數值特徵的絕對差異,所以更多的用於需要從維度的數值大小中體現差異的分析,如使用使用者行為指標分析使用者價值的相似度或差異。
余弦距離更多的是從方向上區分差異,而對絕對的數值不敏感,更多的用於使用使用者對內容評分來區分興趣的相似度和差異,同時修正了使用者間可能存在的度量標準不統一的問題(因為余弦距離對絕對數值不敏感)。
3、傑卡德相似性度量
(1)傑卡德相似係數
兩個集合a和b交集元素的個數在a、b並集中所佔的比例,稱為這兩個集合的傑卡德係數,用符號 j(a,b) 表示。傑卡德相似係數是衡量兩個集合相似度的一種指標(余弦距離也可以用來衡量兩個集合的相似度)。
(2)傑卡德距離
與傑卡德相似係數相反的概念是傑卡德距離(jaccard distance),可以用如下公式來表示:
傑卡德距離用兩個兩個集合中不同元素佔所有元素的比例來衡量兩個集合的區分度。
(3)傑卡德相似係數的應用
假設樣本a和樣本b是兩個n維向量,而且所有維度的取值都是0或1。例如,a(0,1,1,0)和b(1,0,1,1)。我們將樣本看成乙個集合,1表示集合包含該元素,0表示集合不包含該元素。
p:樣本a與b都是1的維度的個數
q:樣本a是1而b是0的維度的個數
r:樣本a是0而b是1的維度的個數
s:樣本a與b都是0的維度的個數
那麼樣本a與b的傑卡德相似係數可以表示為:
此處分母之所以不加s的原因在於:
對於傑卡德相似係數或傑卡德距離來說,它處理的都是非對稱二元變數。非對稱的意思是指狀態的兩個輸出不是同等重要的,例如,疾病檢查的陽性和陰性結果。
按照慣例,我們將比較重要的輸出結果,通常也是出現機率較小的結果編碼為1(例如hiv陽性),而將另一種結果編碼為0(例如hiv陰性)。給定兩個非對稱二元變數,兩個都取1的情況(正匹配)認為比兩個都取0的情況(負匹配)更有意義。負匹配的數量s認為是不重要的,因此在計算時忽略。
(4)傑卡德相似度演算法分析
傑卡德相似度演算法沒有考慮向量中潛在數值的大小,而是簡單的處理為0和1,不過,做了這樣的處理之後,傑卡德方法的計算效率肯定是比較高的,畢竟只需要做集合操作。
4、調整余弦相似度演算法(adjusted cosine similarity)
余弦相似度更多的是從方向上區分差異,而對絕對的數值不敏感,因此沒法衡量每個維度上數值的差異,會導致這樣一種情況:
使用者對內容評分,按5分制,x和y兩個使用者對兩個內容的評分分別為(1,2)和(4,5),使用余弦相似度得到的結果是0.98,兩者極為相似。但從評分上看x似乎不喜歡2這個 內容,而y則比較喜歡,余弦相似度對數值的不敏感導致了結果的誤差,需要修正這種不合理性就出現了調整余弦相似度,即所有維度上的數值都減去乙個均值,比如x和y的評分均值都是3,那麼調整後為(-2,-1)和(1,2),再用余弦相似度計算,得到-0.8,相似度為負值並且差異不小,但顯然更加符合現實。
那麼是否可以在(使用者-商品-行為數值)矩陣的基礎上使用調整余弦相似度計算呢?從演算法原理分析,複雜度雖然增加了,但是應該比普通余弦夾角演算法要強。
[1] 不同相關性度量方法的線上效果對比與分析
[2] 資料探勘概念與技術 jiawei han等
余弦距離 歐氏距離和傑卡德相似性度量的對比分析
余弦距離,也稱為余弦相似度,是用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小的度量。向量,是多維空間中有方向的線段,如果兩個向量的方向一致,即夾角接近零,那麼這兩個向量就相近。而要確定兩個向量方向是否一致,這就要用到餘弦定理計算向量的夾角。餘弦定理描述了三角形中任何乙個夾角和三個邊的關...
余弦距離 歐氏距離和傑卡德相似性度量的對比分析
文章出處 余弦距離,也稱為余弦相似度,是用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小的度量。向量,是多維空間中有方向的線段,如果兩個向量的方向一致,即夾角接近零,那麼這兩個向量就相近。而要確定兩個向量方向是否一致,這就要用到餘弦定理計算向量的夾角。餘弦定理描述了三角形中任何乙個夾角和...
余弦距離 歐式距離和傑卡德相似性對比解析
余弦距離,也稱為余弦相似度,是用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小的度量。向量,是多維空間中有方向的線段,如果兩個向量的方向一致,即夾角接近零,那麼這兩個向量就相近。而要確定兩個向量方向是否一致,這就要用到餘弦定理計算向量的夾角。餘弦定理描述了三角形中任何乙個夾角和三個邊的關...