歐氏距離和余弦相似度的區別是什麼?

時間 2021-05-08 07:47:06

1樓:吾生而有涯

OUTLINE

余弦距離的定義余弦距離的解釋為什麼會有余弦距離歸一化後的向量的余弦距離和歐氏距離等價

歐氏距離不需要多說了,是指的兩個點之間的相對距離。

來看余弦距離:

來自wiki

A和B指的是兩個向量。

其實這個公式就是高中學過的向量公式。

cos值與兩個向量所成角度相關:

如果角度越大(最大180°),此時兩個向量反向,cos值最小,說明兩個向量一點也不相似。

反之,角度為0,兩個向量同向,cos值最大,兩個向量十分相似。

因此我們可以看出,余弦距離指的是兩個向量方向上的差異。而歐氏距離只是相對位置上的差異。

那,為啥會有余弦距離呢?

考慮兩個向量(5,5) 和(10,10):

這兩個向量的歐式距離是5^2+5^2=50,而余弦距離為0,因此兩個向量同向。

這時,歐式距離表示兩者有差異,而余弦距離表示兩者相似。當現實生活中,我們認為這兩個向量相似時,余弦距離就派上用場了。

同時,這也說明了歸一化後的向量的余弦距離和歐氏距離是等價的。

因為兩者角度相同,歸一化後長度也相同,變成了同乙個向量了。

2樓:

總體來說, 歐氏距離體現數值上的絕對差異,而余弦距離體現方向上的差異。

在一些場景中, 其向量模長是經過歸一化的,此時歐氏距離和余弦距離有著單調的關係,即

余弦距離不是嚴格定義的距離,余弦距離滿足正定性和對稱性,但不滿足三角不等式

正定性考慮到 ,因此有 恆成立,因此余弦距離正定性得到滿足。

2. 對稱性

通過以上公式很容易得到,

3. 三角不等式不成立

給出乙個反例

給定A=(1,0), B=(0,1), C=(1,1),則有因此有

3樓:

從資訊檢索的角度來理解以下:

假設有兩篇文件 ,文件向量的每一維度是tf-idf值。為了求的相似度,一種思路是直接對兩個向量在各個維度的上的差異進行累加,比如求每個維度差的平方和,也就是歐式距離,也相當於求兩個文件向量的差向量的大小 。然而如果有兩篇內容相似的文件,一篇很長,一篇很短,那麼由於長文件的詞項頻率tf比短文件大,就會導致得到的偏大,也就不能很好的度量相似度,為了消除長度的負面影響,就對長度進行歸一化處理,計算單位向量之間的距離,然後進行歸一化處理之後,歐式距離其實和余弦存在著等價關係。

所以余弦相似度和歐氏距離的區別就在於,余弦相似度消除了向量長度的影響。

不過有點疑惑,如果僅僅是為了消除長度的影響,直接對tf利用文件長度進行歸一化(比如BM25就是這樣),然後再利用歐式距離來度量,似乎也是可行的。但如果用向量長度來消除文件長度的影響,向量長度還包括了idf的資訊,而idf又是與文件長度無關的,似乎又不應該考慮idf。

4樓:雕欄玉砌

這一段時間再做乙個相關的東西,說一下我的理解。

假設二維空間兩個點,

然後歸一化為單位向量

那麼余弦相似度就是: (分母是1,省略了)

歐式距離就是:

化簡後就是:

很明顯,是乙個單調函式(影象類似於單位元的第一象限部分),也就意味著,兩者在歸一化為單位向量的時候計算相似度結果完全一樣。只不過余弦相似度是值越大月相似,歐式距離是值越小越相似。

二維空間上如此,高維空間上呢?答案是類似的。不寫過程了,我舉個做過的專案的例子。

我用doc2vec 的方式生成文件的向量,向量歸一化後,分別用余弦相似度和歐式距離計算內容相似文章topk,結果完全相同(數量大概在10萬篇),所以我的看法是,這兩個東西完全等價(前提是歸一化)。

但是話說回來,為什麼把余弦相似度轉換為求歐式距離,這麼轉換有什麼好處呢?

根據上述例子,如果我根據余弦相似度計算相似doc時,需要兩兩比較,也就是 的操作。通常這種比較不能全量比較,可以借助於simhash 的思想,減少搜尋空間。但是缺點是存在誤差。

但是轉為求歐式距離呢,就可以上乙個非常屌的資料結構,叫KDTree,至於複雜度降低多少,自己感受。

另外多說一句,KDTree查詢過程中涉及回溯操作,所以對高維度向量並不友好,通常word2vec生成200維向量,用kdtree的效率不會高,這時候應該用BallTree。

實踐過程中的一點小經驗,有錯誤請指正。

5樓:韓佔康

歐式距離是把絕對距離作為衡量標準,是一種靜態表示;餘炫相似度是以目標差異的大小作為衡量標準,是前進趨勢上的差異,反應一種動態變化。一丁給出的例子:兩使用者只對兩件商品評分,向量分別為(3,3)和(5,5),這2個評分在表述上時一樣的,但是分析使用者相似度時,使用歐式距離顯然要比余炫相似度要準確(使用者評分擬合程度),餘炫相似度則更好的區分了使用者的分離狀態(使用者評分層次)。

6樓:王浩然

沒有歸一化的情況下,余弦距離是計算二者(或多者)間內部成分變化趨勢的相似程度,而歐氏距離計算的是二者(或多者)間對應值的相似程度。

參考:歐氏距離和余弦相似度

7樓:李強

歸一化後的空間就可以想象成乙個超球面,歐氏距離就是球面上兩點的直線距離,而向量余弦值等價於那兩點的球面距離。本質是一樣,但沒有歸一化的情況下,余弦距離是計算相似程度,而歐氏距離計算的是相同程度

8樓:藍星星

有沒有cos余弦值與歐式距離合用的,先從絕對距離上度量然後再從夾角上細分。再者歸一化的歐氏距離與cos余弦值是否可以認為是同乙個?期待大家的回覆。。。

9樓:靈魂機器

問大家兩個問題,

1、歸一化後,計算歐氏距離,等價於余弦值啊,證明:兩個向量x,y, 夾角為A,經過歸一化,他們的歐氏距離D=(x-y)^2 = x^2+y^2-2|x||y|cosA = 2-2cosA,也就是說D=2(1-cosA)。

2. 在文字聚類中,一般是用歐氏距離還是余弦值?從stackoverflow這個帖子看,對於稀疏向量(文字向量顯然是稀疏的),一般用cosine比較好 clustering - Euclidean distance is usually not good for sparse data?

10樓:崔岩

簡而言之,需要考慮scaling區別的用Euclidean Distance,否則Cosine Similarity得到的相似度度量更穩定,實際應用場景下後者適用的居多。

11樓:鄒日佳

我覺得你在這裡所提應該是指馬氏距離[1],因為在多元情況下是應該除以協差陣來進行標準化的。

關於馬氏距離與余弦相似度的區別,個人以為這是一種長度與方向的度量所造成的不同。馬氏距離度量的是長度,它只有遠近之分。而余弦相似度是度量方向的,余弦相似度為1,你不可以說這兩個向量一樣,只能說他們是相似的,因為他們是同方向的,就好象(3,3)與(5,5)。

但是馬氏距離度量的是長度,長度為0就可以認為他們是一樣的。

余弦相似度只在[0,1]之間,有準則,而馬氏距離在[0,無窮)之間,無判別準則.余弦相似度為0(即直交)就可以說他們很不相似,就算他們之間距離小,但是他們方向完全不一致。而馬氏距離就需要另找判別準則來定義怎麼算大,怎麼算小。

於是相對應的應用也就出來,如果你所想應用的是對應方向上,例如@劉一丁中的感性認識,這是一種對於使用者思考方向的研究,則應該用余弦相似度。但是若要用來區分價值大小,例如@joegh中的高低價值使用者聚類,則應該用馬氏距離

12樓:劉一丁

從幾何意義上來說,n維向量空間的一條線段作為底邊和原點組成的三角形,其頂角大小是不確定的。也就是說對於兩條空間向量,即使兩點距離一定,他們的夾角余弦值也可以隨意變化。

感性的認識,當兩使用者評分趨勢一致時,但是評分值差距很大,余弦相似度傾向給出更優解。舉個極端的例子,兩使用者只對兩件商品評分,向量分別為(3,3)和(5,5),這兩位使用者的認知其實是一樣的,但是歐式距離給出的解顯然沒有余弦值合理。

in case和provided的區別是什麼?

韓雷的英語課 in case 以免,以防 目的狀語 萬一 條件狀語 速記 以防萬一 provided 如果,假如 if,條件狀語 RobertPenn In case是為壞的情況作打算帶有從負面視角看事情的意味 而provided有如果某事發生便如何的意味多為期許有從正面視角看事情的意思 翻譯奧莉姐...

paradox和fallacy的區別是什麼?

首先瀉藥.我英語不好啊.別邀我答英語題.QAQ 這兩個單詞不算nuances 查個字典就能解決的,解決不了的話看我兩個例子。paradox 悖論。有一艘船,每天拆一根舊木板的同時換上一根新的,七年後,船上的每一根木板都被換了一遍。那麼問題來了,船還是原來的船嗎?這就是乙個悖論。fallacy 謬誤。...

first 和 firstly 的用法區別是什麼?

凱恩德 你好。的確是不好區別,因為好像也沒什麼區別嘛,不過 first 更實用,更常用一些。如果要說它兩的細微差別的話,這就看說話人的態度和語境所需而用了,因為,它兩各自還是各有所指之著重點的,但,在實用上,first 更多替代 firstly。1.first before anyone anyth...