什么是余弦相似度?
余弦相似度通过测量两个向量之间的夹角(而非它们的长度)来衡量两者的相似程度。其取值范围在 −1 到 1 之间:1 表示两向量方向完全一致,0 表示两向量正交(互不相关),−1 则表示两向量方向完全相反。它在文本挖掘、推荐系统、信息检索和机器学习等领域应用广泛,常用于比较文档、词向量(embedding)或特征向量之间的相似性。
如何使用本计算器
请将向量 A 和向量 B 的各个分量以逗号分隔的数字形式输入。两个向量的维度数量必须一致(若维度不同,计算器会按较短向量的长度进行计算)。点击「计算」后,即可看到余弦相似度、点积、每个向量的模长,以及两向量之间的夹角(以度为单位)。
公式详解
余弦相似度等于两个向量的点积除以它们欧几里得范数(模长)的乘积:
$$\cos\theta = \frac{\vec{A} \cdot \vec{B}}{\lVert \vec{A} \rVert \, \lVert \vec{B} \rVert} = \frac{\sum_{i=1}^{n} A_i B_i}{\sqrt{\sum_{i=1}^{n} A_i^{2}} \; \sqrt{\sum_{i=1}^{n} B_i^{2}}}$$
点积 \(\vec{A} \cdot \vec{B}\) 是对应元素逐项相乘后求和的结果。模长 \(\lVert \vec{A} \rVert\) 则是各分量平方和的平方根。除以模长可对结果进行归一化处理,使其只取决于向量的方向,而与向量的长度无关。
实例演算
设 A = [1, 2, 3],B = [4, 5, 6]。点积为 \(1\cdot4 + 2\cdot5 + 3\cdot6 = 4 + 10 + 18 = 32\)。向量 A 的模长为 \(\sqrt{1+4+9} = \sqrt{14} \approx 3.7417\),向量 B 的模长为 \(\sqrt{16+25+36} = \sqrt{77} \approx 8.7750\)。因此 $$\cos\theta = \frac{32}{3.7417 \times 8.7750} \approx \frac{32}{32.8329} \approx 0.9746$$ 对应的夹角约为 \(12.93°\)。
常见问题
计算结果可以是负数吗? 可以。当两个向量的方向大致相反时,余弦相似度为负值;当方向完全相反时,结果为 −1。
如果两个向量的长度不同怎么办? 计算器只会比较重叠的维度(即较短向量的长度)。为获得有意义的结果,建议使用维度相同的向量。
它与欧几里得距离有何区别? 余弦相似度忽略向量的大小,只关注其方向。因此,即使一个向量比另一个长得多,只要两者方向一致,它们就被视为完全相似。