在《機器學習---文本特征提取之詞袋模型(Machine Learning Text Feature Extraction Bag of Words)》一文中,我們通過計算文本特征向量之間的歐氏距離,了解到各個文本之間的相似程度。當然,還有其他很多相似度度量方式,比如說余弦相似度。
在《皮爾遜相關系數與余弦相似度(Pearson Correlation Coefficient & Cosine Similarity)》一文中簡要地介紹了余弦相似度。因此這里,我們比較一下歐氏距離和余弦相似度之間的區別。
首先來說一下歐氏距離(Euclidean Distance):
n維空間里兩個向量X(x1,x2,…,xn)與Y(y1,y2,…,yn)之間的歐氏距離計算公式是:
再來說一下余弦相似度(Cosine Similarity):
n維空間里兩個向量x(x1,x2,…,xn)與y(y1,y2,…,yn)之間的余弦相似度計算公式是:
用向量形式表示為:
相同之處:
在機器學習中都可以用來計算相似程度。歐氏距離是最常見的距離度量,而余弦相似度則是最常見的相似度度量。很多其他的距離度量和相似度度量都是基於這兩者的變形和衍生。
區別:
借助三維坐標系來看下歐氏距離和余弦相似度的區別。(下圖摘自:https://blog.csdn.net/lin00jian/article/details/51209715)
從圖上可以看出歐式距離衡量的是空間中各點之間的絕對距離,和點所在的位置坐標(即個體各維度的特征數值)直接相關,距離越小,兩向量之間越相似;而余弦相似度衡量的是空間中兩向量之間的夾角,體現的是方向上的差異,夾角越小(余弦相似度越大),兩向量之間越相似。如果保持A點的位置不變,B點朝原方向延伸,那么這個時候余弦相似度cosθ是保持不變的,因為夾角不變,而A、B兩點間的距離顯然在發生改變,這就是歐氏距離和余弦相似度的不同之處。
適用場景:
歐氏距離能夠體現個體數值特征的絕對差異,所以更多的用於需要從維度的數值大小中體現差異的分析,比如使用用戶行為作為指標分析用戶價值的相似情況(比較不同用戶的消費能力),這屬於價值度量;而余弦相似度對絕對數值不敏感,更多的用於使用用戶對內容的評分來分析用戶興趣的相似程度(用戶是否喜歡某商品),這屬於定性度量。
需要注意的是,歐氏距離和余弦相似度都需要保證各維度處於相同的刻度級別(量綱),所以一般需要對數據先進行標准化處理,否則很可能會引起偏差。比如用戶對內容評分,假設為5分制,對用戶甲來說評分3分以上就是自己喜歡的,而對於用戶乙,評分4分以上才是自己喜歡的,這樣就無法很好地衡量兩個用戶評分之間的相似程度。如果將評分數值減去平均值,那么就可以很好地解決問題。此時,就相當於用皮爾遜相關系數來度量相似程度。

