点积不满足三角不等式。例如:
$$
\vec{A} = (1,0), \vec{B}=(0,1), \vec{C}=(1,0)
$$
那么点积为:
$$
A\cdot C=1,A\cdot B=0,B\cdot C=0
$$
不满足 $A\cdot C\le A\cdot B+B\cdot C$。

扩展一下,余弦相似度的公式为:
$$
\cos(A,B)=\frac{A\cdot B}{\lVert A\rVert _2\lVert B\rVert _2}
$$
对于上面例子,$\lVert X\rVert _2 (X=A,B,C)$ 都是1,所以余弦相似度也不满足三角不等式。

那么,余弦距离呢? 余弦距离的定义为$dist(A,B)=1-cos(A,B)$,对于上面例子,可验证成立。但对于:
$$
\vec{A} = (1,0), \vec{B}=(1,1), \vec{C}=(0,1)
$$
那么点积为:
$$
dist(A,C)=1,dist(A,B)=1-\frac{\sqrt{2}}{2},dist(B,C)=1-\frac{\sqrt{2}}{2}
$$
不满足 $dist(A,C)\le dist(A,B)+dist(B,C)$,所以余弦距离也不满足三角不等式,因此余弦距离不是一个严格定义的距离。

那么为什么要用余弦距离呢?和欧氏距离有什么关系吗?

  • 欧式距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异(范围是0~2)。因此如果比较两个向量在多个维度上的差异,余弦距离很合适。
  • 关系:如果向量归一化,那么余弦距离和欧氏距离存在单调关系(仅此而已)。关系如下:

$$
\lVert A-B \rVert=\sqrt{\lVert A\rVert ^2+\lVert B\rVert ^2-2A\cdot B}=\sqrt{2-2A\cdot B} =\sqrt{2\cdot dist(A,B)}
$$