常用的相似度度量總結(jié):余弦相似度,點(diǎn)積,L1,L2
相似性度量在機(jī)器學(xué)習(xí)中起著至關(guān)重要的作用。這些度量以數(shù)學(xué)方式量化對(duì)象、數(shù)據(jù)點(diǎn)或向量之間的相似性。理解向量空間中的相似性概念并采用適當(dāng)?shù)亩攘渴墙鉀Q廣泛的現(xiàn)實(shí)世界問題的基礎(chǔ)。本文將介紹幾種常用的用來(lái)計(jì)算兩個(gè)向量在嵌入空間中的接近程度的相似性度量。
余弦相似度
余弦相似度(cos (θ))值范圍從-1(不相似)到+1(非常相似)。從下圖可以看出,點(diǎn)A(1.5, 1.5)和點(diǎn)B(2.0, 1.0)在二維嵌入空間中距離很近。當(dāng)計(jì)算余弦相似度時(shí),得到0.948的值也可以確認(rèn)兩個(gè)向量非常相似。當(dāng)較點(diǎn)A(1.5, 1.5)和點(diǎn)C(-1.0, -0.5)的相似度時(shí),余弦相似度為-0.948,表明兩個(gè)向量不相似。通過觀察也可以看到它們?cè)谇度肟臻g中方向相反。cos (θ)值為0表示兩個(gè)向量彼此垂直,既不相似也不不同。
要計(jì)算兩個(gè)向量之間的余弦相似度,可以簡(jiǎn)單地用兩個(gè)向量的點(diǎn)積除以它們長(zhǎng)度的乘積。余弦相似度主要考慮兩個(gè)向量之間的角度來(lái)確定它們的相似度,并且忽略向量的長(zhǎng)度。
在Python中計(jì)算余弦相似度很簡(jiǎn)單。我們可以將相似值cos(θ)轉(zhuǎn)換為兩個(gè)向量之間的角度(θ),通過取反余弦。
import torch
import torch.nn.functional as F
import math
#Create 3 Vectors
A = torch.tensor([1.5,1.5])
B = torch.tensor([2.0,1.0])
C = torch.tensor([-1.0,-0.5])
# Calculate cosine similarity cos(??):
cos = F.cosine_similarity(A, B, dim=0)
print("Cosine Similarity:", cos)
# Calculate the angle ??:
# acos is the inverse of cos(x)
theta = math.acos(cos)
# Convert radians to degrees
theta_degrees = math.degrees(theta)
print("Angle in radians:", theta)
print("Angle in degrees:", theta_degrees)
點(diǎn)積
點(diǎn)積是一種常用的相似度度量。點(diǎn)積和余弦相似度是密切相關(guān)的概念。點(diǎn)積的取值范圍從負(fù)無(wú)窮到正無(wú)窮,負(fù)值表示方向相反,正值表示方向相同,當(dāng)向量垂直時(shí)為0。點(diǎn)積值越大表示相似性越大。下圖顯示了點(diǎn)P1與剩余點(diǎn)P2到P5之間的點(diǎn)積的計(jì)算。
點(diǎn)積可以從余弦方程推導(dǎo)出來(lái):通過將兩個(gè)向量之間夾角的余弦值乘以兩個(gè)向量的長(zhǎng)度就得到點(diǎn)積,如下圖所示。點(diǎn)積受到向量嵌入長(zhǎng)度的影響,這在選擇相似性度量時(shí)可能是一個(gè)關(guān)鍵的考慮因素
點(diǎn)積是如何影響相似性度量呢?
假設(shè)你正在計(jì)算一組科學(xué)研究論文的相似度。研究論文嵌入向量的長(zhǎng)度與被引用次數(shù)成正比。使用余弦相似度來(lái)計(jì)算研究論文之間的相似度是很常見的。如果使用點(diǎn)積,研究論文之間的相似性是如何變化的?
余弦相似度考慮向量的方向和大小,使其適用于向量的長(zhǎng)度與其相似度不直接相關(guān)的情況。當(dāng)使用點(diǎn)積時(shí)只有向量的大小起作用,方向就不那么重要了。
高被引次數(shù)(較長(zhǎng)的向量)的論文與其他高被引論文的點(diǎn)積相似度得分更高,因?yàn)樗鼈兊牧考?jí)對(duì)結(jié)果的貢獻(xiàn)更大。低被引次數(shù)(較短的向量)的論文與高被引次數(shù)的論文的點(diǎn)積相似度得分較低,因?yàn)樗鼈兊牧考?jí)較小。
曼哈頓(L1)和歐幾里得(L2)距離
曼哈頓距離通過將每個(gè)維度的絕對(duì)差相加來(lái)計(jì)算距離,而歐幾里得距離則計(jì)算點(diǎn)之間的直線距離。
曼哈頓距離適用于涉及網(wǎng)格狀運(yùn)動(dòng)的場(chǎng)景,或者當(dāng)單個(gè)維度具有不同的重要性時(shí)。當(dāng)測(cè)量最短路徑或當(dāng)所有維度對(duì)距離的貢獻(xiàn)相等時(shí),歐幾里得距離是理想的。
在大多數(shù)情況下,對(duì)于同一對(duì)點(diǎn),曼哈頓距離比歐幾里得距離產(chǎn)生更大的值。隨著數(shù)據(jù)維數(shù)的增加,與歐幾里得距離度量相比,曼哈頓距離成為首選。
曼哈頓距離L1
歐氏距離L2
曼哈頓距離是沿著網(wǎng)格線行走的距離,而歐幾里得距離是直線距離。這兩種距離在許多領(lǐng)域都有廣泛的應(yīng)用,例如在機(jī)器學(xué)習(xí)、圖像處理、路徑規(guī)劃等方面。
總結(jié)
這四種距離度量方法各自有不同的應(yīng)用場(chǎng)景和用途,選擇哪種度量方法取決于具體的問題和數(shù)據(jù)類型。曼哈頓距離和歐幾里得距離適用于空間坐標(biāo)的距離測(cè)量。
曼哈頓距離常用于計(jì)算城市街道的距離,也用于特征選擇和聚類等數(shù)據(jù)分析任務(wù)。歐幾里得距離廣泛用于空間中的距離測(cè)量,機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘和圖形處理等領(lǐng)域。
點(diǎn)積距離和余弦相似度通常用于向量或文本數(shù)據(jù)的相似性度量。主要用于向量相似性的度量,如文本挖掘和自然語(yǔ)言處理中的文檔相似性,或信息檢索、推薦系統(tǒng)等領(lǐng)域。