余弦相似度 - 简单易懂的解释

余弦相似度是一种计算两个向量相似程度的方法。它通过测量两个向量之间的夹角来确定它们的相似性。 夹角越小,相似度越高;夹角越大,相似度越低。

什么是向量?

向量是同时具有大小和方向的量。在数学中,我们可以用一组数字来表示向量,比如 (2, 3) 或 (1, 4, 2)。

在日常生活中,向量可以用来表示:

水果特征向量示例

我们可以用向量来表示水果的特征。例如,我们可以用三个数字来描述水果:

苹果

苹果
\(\vec{A} = (1, 1, 1)\)
红色、圆形、甜的

香蕉

香蕉
\(\vec{B} = (2, 2, 1)\)
黄色、弯曲、甜的

柠檬

柠檬
\(\vec{C} = (2, 3, 2)\)
黄色、椭圆形、酸的

现在,我们想知道:哪两种水果更相似?

余弦相似度可视化

计算水果之间的相似度

点击按钮计算相似度

余弦相似度是如何计算的?

1. 余弦相似度公式

\[ \text{相似度} = \cos(\theta) = \frac{\vec{A} \cdot \vec{B}}{|\vec{A}| \times |\vec{B}|} \]

其中:

2. 点积计算

两个向量的点积是将对应位置的数字相乘后相加:

\[ \vec{A} \cdot \vec{B} = A_1 \times B_1 + A_2 \times B_2 + A_3 \times B_3 + \ldots \]

3. 向量长度计算

向量的长度是各个分量平方和的平方根:

\[ |\vec{A}| = \sqrt{A_1^2 + A_2^2 + A_3^2 + \ldots} \]

实际计算示例

计算苹果和香蕉的相似度

步骤 1: 确定向量

苹果 = \(\vec{A} = (1, 1, 1)\)

香蕉 = \(\vec{B} = (2, 2, 1)\)

步骤 2: 计算点积

苹果 · 香蕉 = \(1 \times 2 + 1 \times 2 + 1 \times 1 = 2 + 2 + 1 = 5\)

步骤 3: 计算向量长度

|苹果| = \(\sqrt{1^2 + 1^2 + 1^2} = \sqrt{3} \approx 1.732\)

|香蕉| = \(\sqrt{2^2 + 2^2 + 1^2} = \sqrt{9} = 3\)

步骤 4: 计算余弦相似度

相似度 = \(\frac{\text{点积}}{|\text{苹果}| \times |\text{香蕉}|} = \frac{5}{1.732 \times 3} \approx \frac{5}{5.196} \approx 0.962\)

结果解释: 0.962 非常接近 1,表示苹果和香蕉非常相似。

所有水果之间的相似度比较

水果对比 余弦相似度 相似程度
苹果 vs 香蕉 \(0.962\) 非常相似
苹果 vs 柠檬 \(0.802\) 比较相似
香蕉 vs 柠檬 \(0.926\) 非常相似

余弦相似度的特点

为什么使用余弦相似度?

余弦相似度只关注向量的方向,不关注大小。这在很多应用中非常有用,比如: