一、余弦距離
簡單來說,余弦相似度,就是計算兩個向量間的夾角的余弦值。余弦距離就是用1減去這個獲得的余弦相似度。余弦距離取值范圍由上面的余弦距離可以知道,余弦距離的取值范圍為[0,2] ,這就滿足了非負性的性質。
二、歐式距離
歐式距離之前提過了,就是常用的距離計算公式:
三、兩者之間的關系
當向量的模長是經過歸一化的,此時歐氏距離與余弦距離有着單調的關系:
在此場景下,如果選擇距離最小(相似度最大)的近鄰,那么使用余弦相似度和歐氏距離的結果是相同的。
四、什么時候用余弦距離什么時候用歐式距離呢?
總體來說,歐氏距離體現數值上的絕對差異,而余弦距離體現方向上的相對差異。
1)例如,統計兩部劇的用戶觀看行為,用戶A的觀看向量為(0,1),用戶B為(1,0);此時二者的余弦距很大,而歐氏距離很小;我們分析兩個用戶對於不同視頻的偏好,更關注相對差異,顯然應當使用余弦距離。
2)而當我們分析用戶活躍度,以登陸次數(單位:次)和平均觀看時長(單:分鍾)作為特征時,余弦距離會認為(1,10)、(10,100)兩個用戶距離很近;但顯然這兩個用戶活躍度是有着極大差異的,此時我們更關注數值絕對差異,應當使用歐氏距離。
總結:在日常使用中需要注意區分,余弦距離雖然不是一個嚴格意義上的距離度量公式,但是形容兩個特征向量之間的關系還是有很大用處的。比如人臉識別,推薦系統等。