餘弦距離

xz1308579340發表於2020-12-23

原文:https://blog.csdn.net/lucky_kai/article/details/89514868
概述: 在機器學習領域中,通常將特徵表示為向量的形式,所以在分析兩個特徵向量之間的相似性時,常用餘弦相似度表示。例如將兩篇文章向量化,餘弦距離可以避免因為文章的長度不同而導致距離偏大,餘弦距離只考慮兩篇文章生成的向量的夾角。
餘弦相似度的取值範圍是[-1,1],相同兩個向量的之間的相似度為1。
餘弦距離的取值範圍是[0,2]。
餘弦相似度的定義公式為 c o s ( A , B ) = A ⋅ B ∥ A ∥ 2 ∥ B ∥ 2 cos(A,B)=\frac{A\cdot B}{\left \| A \right \|_{2}\left \| B \right \|_{2}} cos(A,B)=A2B2AB
歸一化後 ∥ A ∥ 2 = 1 \left \| A \right \|_{2}=1 A2=1, ∥ B ∥ 2 = 1 \left \| B \right \|_{2}=1 B2=1,
∥ A ∥ 2 ∥ B ∥ 2 = 1 \left \| A \right \|_{2}\left \| B \right \|_{2} = 1 A2B2=1
餘弦距離:
d i s t ( A , B ) = 1 − c o s ( A , B ) = ∥ A ∥ 2 ∥ B ∥ 2 − A ⋅ B ∥ A ∥ 2 ∥ B ∥ 2 dist(A,B)= 1-cos(A,B) = \frac{\left \|A \right \|_{2}\left \|B \right \|_{2}-A\cdot B}{\left \| A\left \|_{2} \right \|B \right \|_{2}} dist(A,B)=1cos(A,B)=A2B2A2B2AB
歐式距離:
∥ A − B ∥ 2 = ∥ A ∥ 2 + ∥ B ∥ 2 − 2 A ⋅ B = 2 − 2 A ⋅ B = 2 d i s t ( A , B ) \left \| A-B \right \|^{2} = \left \| A \right \|^{2} + \left \| B \right \|^{2} -2A\cdot B = 2-2A\cdot B =\sqrt[]{2dist(A,B)} AB2=A2+B22AB=22AB=2dist(A,B)

由公式可以看出歸一化後,歐式距離與餘弦距離存在單調性關係。此時兩種距離的值域都為[0,2]。

歐式距離與餘弦距離的對比:
1.歐式距離的數值受到維度的影響,餘弦相似度在高維的情況下也依然保持低維完全相同時相似度為1等性質。
2.歐式距離體現的是距離上的絕對差異,餘弦距離體現的是方向上的相對差異。

不同情況不同選擇:
1.兩個人分別取了藍球(1,0)與紅球(0,1),這兩個向量的歐式距離較小,可是事實是這兩個球是不同的,而餘弦距離為2表示的是完全不同的意思。所以在這種情況下選擇餘弦距離更具合理性

2.兩個人對APP的使用次數與使用時長分別表示為(1,10),(10,100),可知餘弦相似度較小,說明這兩個人的行為時相同的,可是,事實是不同的,兩個人的活躍度有著極大的差異,第二個人的活躍度更高

餘弦距離滿足正定性和對稱性,但是不滿足三角不等式,因此餘弦距離不是一個嚴格定義的距離。

距離的定義:
在一個集合中,如果每一對元素均可唯一確定一個實數,使得三條距離公理(正定性,對稱性,三角不等式)成立,則該實數可以稱為這對元素之間的距離。

相關文章