餘弦距離
原文: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)=∥A∥2∥B∥2A⋅B
歸一化後
∥
A
∥
2
=
1
\left \| A \right \|_{2}=1
∥A∥2=1,
∥
B
∥
2
=
1
\left \| B \right \|_{2}=1
∥B∥2=1,
∥
A
∥
2
∥
B
∥
2
=
1
\left \| A \right \|_{2}\left \| B \right \|_{2} = 1
∥A∥2∥B∥2=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)=1−cos(A,B)=∥A∥2∥B∥2∥A∥2∥B∥2−A⋅B
歐式距離:
∥
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)}
∥A−B∥2=∥A∥2+∥B∥2−2A⋅B=2−2A⋅B=2dist(A,B)
由公式可以看出歸一化後,歐式距離與餘弦距離存在單調性關係。此時兩種距離的值域都為[0,2]。
歐式距離與餘弦距離的對比:
1.歐式距離的數值受到維度的影響,餘弦相似度在高維的情況下也依然保持低維完全相同時相似度為1等性質。
2.歐式距離體現的是距離上的絕對差異,餘弦距離體現的是方向上的相對差異。
不同情況不同選擇:
1.兩個人分別取了藍球(1,0)與紅球(0,1),這兩個向量的歐式距離較小,可是事實是這兩個球是不同的,而餘弦距離為2表示的是完全不同的意思。所以在這種情況下選擇餘弦距離更具合理性
2.兩個人對APP的使用次數與使用時長分別表示為(1,10),(10,100),可知餘弦相似度較小,說明這兩個人的行為時相同的,可是,事實是不同的,兩個人的活躍度有著極大的差異,第二個人的活躍度更高
餘弦距離滿足正定性和對稱性,但是不滿足三角不等式,因此餘弦距離不是一個嚴格定義的距離。
距離的定義:
在一個集合中,如果每一對元素均可唯一確定一個實數,使得三條距離公理(正定性,對稱性,三角不等式)成立,則該實數可以稱為這對元素之間的距離。
相關文章
- 演算法學習筆記(46): 離散餘弦變換(DCT)演算法筆記
- Python 實現影像快速傅立葉變換和離散餘弦變換Python
- 馬氏距離與歐氏距離
- 文字相似度計算之餘弦定理
- 推薦系統01–餘弦相似度
- Python繪製正餘弦函式影像Python函式
- 【Python】距離Python
- JavaScript 元素距離視窗頂部的距離JavaScript
- 曼哈頓距離與切比雪夫距離
- 編輯距離及編輯距離演算法演算法
- JavaScript獲取元素距離文件頂部的距離JavaScript
- 最小距離分類器,互動式選取影像樣本分類資料,進行最小距離分類(實現歐式距離,馬氏距離,計程距離)
- unit原子距離
- Laravel 距離排序Laravel排序
- 馬氏距離
- 【DP】編輯距離
- 距離度量學習
- Spark/Scala實現推薦系統中的相似度演算法(歐幾里得距離、皮爾遜相關係數、餘弦相似度:附實現程式碼)Spark演算法
- 曼哈頓距離與切比雪夫距離的互化
- milvus 使用 l2 歐式距離計算向量的距離,計算出來的距離的最大值是多少?
- 漢明距離(Hamming distance)
- 距離容差來源
- 461. 漢明距離
- 演算法金 | 歐氏距離演算法、餘弦相似度、漢明、曼哈頓、切比雪夫、閔可夫斯基、雅卡爾指數、半正矢、Sørensen-Dice演算法
- 距離-有這麼多類
- 線性dp:編輯距離
- 902.最短編輯距離
- 編輯距離演算法演算法
- LeetCode 461. 漢明距離LeetCode
- LeetCode72編輯距離LeetCode
- LeetCode 834 樹中距離之和LeetCode
- 經緯度距離換算
- 【scipy 基礎】--正交距離迴歸
- opencv距離變換函式distanceTransformOpenCV函式ORM
- 優劣解距離法Topsis模型模型
- 社會敘事與距離感
- leetcode-834. 樹中距離之和LeetCode
- Java LeetCode 72. 編輯距離JavaLeetCode