矩陣運算基礎——余弦距離與歐式距離


1、余弦距離

余弦距離,也稱為余弦相似度,是用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小的度量。

向量,是多維空間中有方向的線段,如果兩個向量的方向一致,即夾角接近零,那么這兩個向量就相近。而要確定兩個向量方向是否一致,這就要用到余弦定理計算向量的夾角。

余弦定理描述了三角形中任何一個夾角和三個邊的關系。給定三角形的三條邊,可以使用余弦定理求出三角形各個角的角度。假定三角形的三條邊為a,b和c,對應的三個角為A,B和C,那么角A的余弦為:

clip_image002

如果將三角形的兩邊b和c看成是兩個向量,則上述公式等價於:(注:在三角形中 a = b - c, 將該式帶入余弦定理,便可得出下面結論)

clip_image004

其中分母表示兩個向量b和c的長度,分子表示兩個向量的內積。

舉一個具體的例子,假如新聞X和新聞Y對應向量分別是:

x1, x2, ..., x6400和

y1, y2, ..., y6400

則,它們之間的余弦距離可以用它們之間夾角的余弦值來表示:

clip_image006

當兩條新聞向量夾角余弦等於1時,這兩條新聞完全重復(用這個辦法可以刪除爬蟲所收集網頁中的重復網頁);當夾角的余弦值接近於1時,兩條新聞相似(可以用作文本分類);夾角的余弦越小,兩條新聞越不相關。

clip_image007

 

2、余弦距離和歐氏距離的對比

從上圖可以看出,余弦距離使用兩個向量夾角的余弦值作為衡量兩個個體間差異的大小。相比歐氏距離,余弦距離更加注重兩個向量在方向上的差異。

借助三維坐標系來看下歐氏距離和余弦距離的區別:

clip_image009

從上圖可以看出,歐氏距離衡量的是空間各點的絕對距離,跟各個點所在的位置坐標直接相關;而余弦距離衡量的是空間向量的夾角,更加體現在方向上的差異,而不是位置。如果保持A點位置不變,B點朝原方向遠離坐標軸原點,那么這個時候余弦距離 clip_image011 是保持不變的(因為夾角沒有發生變化),而A、B兩點的距離顯然在發生改變,這就是歐氏距離和余弦距離之間的不同之處。

歐氏距離和余弦距離各自有不同的計算方式和衡量特征,因此它們適用於不同的數據分析模型:

歐氏距離能夠體現個體數值特征的絕對差異,所以更多的用於需要從維度的數值大小中體現差異的分析,如使用用戶行為指標分析用戶價值的相似度或差異。

余弦距離更多的是從方向上區分差異,而對絕對的數值不敏感,更多的用於使用用戶對內容評分來區分興趣的相似度和差異,同時修正了用戶間可能存在的度量標准不統一的問題(因為余弦距離對絕對數值不敏感)。

 

3、調整余弦相似度算法(Adjusted Cosine Similarity)

余弦相似度更多的是從方向上區分差異,而對絕對的數值不敏感,因此沒法衡量每個維度上數值的差異,會導致這樣一種情況:

用戶對內容評分,按5分制,X和Y兩個用戶對兩個內容的評分分別為(1,2)和(4,5),使用余弦相似度得到的結果是0.98,兩者極為相似。但從評分上看X似乎不喜歡2這個 內容,而Y則比較喜歡,余弦相似度對數值的不敏感導致了結果的誤差,需要修正這種不合理性就出現了調整余弦相似度,即所有維度上的數值都減去一個均值,比如X和Y的評分均值都是3,那么調整后為(-2,-1)和(1,2),再用余弦相似度計算,得到-0.8,相似度為負值並且差異不小,但顯然更加符合現實。

那么是否可以在(用戶-商品-行為數值)矩陣的基礎上使用調整余弦相似度計算呢?從算法原理分析,復雜度雖然增加了,但是應該比普通余弦夾角算法要強。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM