什麼是餘弦相似度?
餘弦相似度用來衡量兩個向量「方向」上有多接近。它就是兩向量夾角的餘弦值,範圍從 −1(方向完全相反)、經過 0(互相垂直),到 1(方向完全一致)。由於它只看方向、不受向量長度影響,因此在機器學習、文字探勘與推薦系統中被廣泛運用,常用來比較文件、嵌入向量(embeddings)與特徵向量之間的相似程度。
計算器使用說明
分別輸入向量 A 與向量 B 的 x、y 以及(選填的)z 分量。如果只想在二維空間中計算,將 z 欄位留空或填 0 即可。計算器會回傳餘弦相似度,並一併顯示點積、各向量的長度,以及兩向量之間的夾角(同時提供角度與弧度兩種單位)。
公式解析
點積是各對應分量乘積的總和:
$$\vec{A}\cdot\vec{B} = \text{A}_x\,\text{B}_x + \text{A}_y\,\text{B}_y + \text{A}_z\,\text{B}_z$$向量的長度(模)則是各分量平方和再開根號:
$$\lVert\vec{A}\rVert = \sqrt{\text{A}_x^{2} + \text{A}_y^{2} + \text{A}_z^{2}}$$將點積除以兩向量長度的乘積,即可把結果歸一化到 −1 到 1 的範圍,得到夾角 \(\theta\) 的餘弦值:
$$\cos\theta = \frac{\vec{A}\cdot\vec{B}}{\lVert\vec{A}\rVert\,\lVert\vec{B}\rVert}$$再取反餘弦(arccos),就能還原出夾角本身。
實際範例
假設 A = (1, 2, 3)、B = (4, 5, 6)。點積為
$$1\cdot 4 + 2\cdot 5 + 3\cdot 6 = 4 + 10 + 18 = 32$$兩向量長度分別為
$$\lVert A\rVert = \sqrt{1+4+9} = \sqrt{14} \approx 3.7417$$$$\lVert B\rVert = \sqrt{16+25+36} = \sqrt{77} \approx 8.7750$$因此
$$\cos\theta = \frac{32}{3.7417 \times 8.7750} \approx 0.9746$$對應的夾角約為 12.93°。
常見問題
餘弦相似度為 0 代表什麼?表示兩向量互相正交(垂直),夾角為 90°,方向上完全沒有相似性。
結果可以是負數嗎?可以。負值代表兩向量的方向大致相反;若為 −1,則表示兩者完全反向(反平行)。
它和歐氏距離有什麼不同?餘弦相似度忽略向量長度,只比較方向;而歐氏距離量測的是兩個向量端點之間的直線距離。