余弦相似度(Cosine Similarity)是一种用于衡量两个向量在方向上的相似程度的指标。它主要用于文本分析、自然语言处理(NLP)、推荐系统等任务中,能够衡量两个向量之间的相似性,而不受向量的长度(模)影响。
1. 余弦相似度的定义
余弦相似度通过计算两个向量之间的夹角的余弦值,来表示它们在向量空间中的相似性。数学上,两个向量的余弦相似度可以表示为:
cos θ = A ⋅ B ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ B ∣ ∣ \cos \theta = \frac{\mathbf{A} \cdot \mathbf{B}}{||\mathbf{A}|| \cdot ||\mathbf{B}||} cosθ=∣∣A∣∣⋅∣∣B∣∣A⋅B
其中:
- A ⋅ B \mathbf{A} \cdot \mathbf{B} A⋅B 表示两个向量的点积。
- ∣ ∣ A ∣ ∣ ||\mathbf{A}|| ∣∣A∣∣ 和 ∣ ∣ B ∣ ∣ ||\mathbf{B}|| ∣∣B∣∣ 分别表示向量 A \mathbf{A} A 和 B \mathbf{B} B 的模(即向量的长度)。
- θ \theta θ 是两个向量之间的夹角。
余弦相似度的值范围在 [ − 1 , 1 ] [-1, 1] [−1,1] 之间:
- 1:表示两个向量的方向完全相同,夹角为0度(最大相似性)。
- 0:表示两个向量正交,夹角为90度(完全不相关)。
- -1:表示两个向量的方向完全相反,夹角为180度(完全不相似甚至是反相似,或者说完全对立,实际情况很少见)。
2. 余弦相似度的计算步骤
假设我们有两个向量 A = ( A 1 , A 2 , … , A n ) \mathbf{A} = (A_1, A_2, \dots, A_n) A=(A1,A2,…,An) 和 B = ( B 1 , B 2 , … , B n ) \mathbf{B} = (B_1, B_2, \dots, B_n) B=(B1,B2,…,Bn),它们的余弦相似度的计算步骤如下:
-
计算点积:
点积(又称内积)是两个向量对应元素的乘积之和。公式为:
A ⋅ B = A 1 × B 1 + A 2 × B 2 + ⋯ + A n × B n \mathbf{A} \cdot \mathbf{B} = A_1 \times B_1 + A_2 \times B_2 + \dots + A_n \times B_n A⋅B=A1×B1+A2×B2+⋯