什么是余弦相似度?
余弦相似度用来衡量两个向量指向方向的接近程度,本质上就是这两个向量夹角的余弦值。它的取值范围从 −1(方向完全相反)经过 0(互相垂直)一直到 1(方向完全相同)。由于它只取决于方向,而与向量长度无关,因此在机器学习、文本挖掘和推荐系统中被广泛用于比较文档、词向量(embedding)和特征向量之间的相似性。
如何使用本计算器
分别填入向量 A 和向量 B 的 x、y 以及(可选的)z 分量。如果只需处理二维向量,把 z 字段留空或填 0 即可。计算器会返回余弦相似度,并同时给出点积、每个向量的模长,以及两向量之间的夹角(角度与弧度两种单位)。
计算公式详解
点积是各对应分量乘积之和:
$$\vec{a}\cdot\vec{b} = a_x b_x + a_y b_y + a_z b_z$$向量的模长则是各分量平方和的平方根:
$$\lVert\vec{a}\rVert = \sqrt{a_x^{2} + a_y^{2} + a_z^{2}}$$用点积除以两个模长的乘积,可以把结果归一化到 −1 到 1 之间,得到夹角 \(\theta\) 的余弦值。再对其取反余弦(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^\circ\)。
常见问题
余弦相似度为 0 代表什么?说明两个向量正交(互相垂直),夹角为 \(90^\circ\),方向上没有任何相似性。
结果可能是负数吗?会的。负值表示两个向量大体指向相反方向;−1 则表示它们方向完全相反(反平行)。
它和欧氏距离有什么区别?余弦相似度忽略向量长度,只比较方向;而欧氏距离衡量的是两个向量端点之间的直线距离。