首先,不是的!!!
分析如下:
距离三要素
- 非负性
- 正定性
- 对称性
- 三角不等式
余弦相似度计算公式为
c o s = a ⋅ b ∣ ∣ a ∣ ∣ ∗ ∣ ∣ b ∣ ∣ = x 1 x 2 + y 1 y 2 x 1 2 + y 1 2 ⋅ x 2 2 + y 2 2 cos = \frac{a·b}{||a|| * ||b||} = \frac{x_1x_2+y_1y_2}{\sqrt{x_1^2+y_1^2} · \sqrt{x_2^2+y_2^2}} cos=∣∣a∣∣∗∣∣b∣∣a⋅b=x12+y12⋅x22+y22x1x2+y1y2
余弦距离计算公式为
d i s t = 1 − c o s = ∣ ∣ a ∣ ∣ 2 ∣ ∣ b ∣ ∣ 2 − a b ∣ ∣ a ∣ ∣ 2 ∣ ∣ b ∣ ∣ 2 dist = 1-cos = \frac{||a||_2||b||_2-ab}{||a||_2||b||_2} dist=1−cos=∣∣a∣∣2∣∣b∣∣2∣∣a∣∣2∣∣b∣∣2−ab
1. 非负性 - 距离本身必须是非负的
c o s cos cos取值为[-1, 1], d i s t dist dist取值为[0, 2], d i s t > = 0 dist >= 0 dist>=0恒成立。
2. 正定性 - 如果A与B的距离是零,那么A与B相等
d i s t = 0 = > ∣ ∣ a ∣ ∣ 2 ∣ ∣ b ∣ ∣ 2 = a b = > a = b dist = 0 => ||a||_2||b||_2 = ab => a=b dist=0=>∣∣a∣∣2∣∣b∣∣2=ab=>a=b
3. 对称性 - A点到B点的距离等于B点到A点的距离
d i s t ( a , b ) = ∣ ∣ a ∣ ∣ 2 ∣ ∣ b ∣ ∣ 2 − a b ∣ ∣ a ∣ ∣ 2 ∣ ∣ b ∣ ∣ 2 = ∣ ∣ b ∣ ∣ 2 ∣ ∣ a ∣ ∣ 2 − b a ∣ ∣ b ∣ ∣ 2 ∣ ∣ a ∣ ∣ 2 = d i s t ( b , a ) dist(a,b)=\frac{||a||_2||b||_2-ab}{||a||_2||b||_2} = \frac{||b||_2||a||_2-ba}{||b||_2||a||_2} = dist(b,a) dist(a,b)=∣∣a∣∣2∣∣b∣∣2∣∣a∣∣2∣∣b∣∣2−ab=∣∣b∣∣2∣∣a∣∣2∣∣b∣∣2∣∣a∣∣2−ba=dist(b,a)
三角不等式 - A到B的距离+B到C的距离>=A到C的距离
单位圆⭕️上,欧式距离与余弦距离存在:
e u c = 2 ( 1 − c o s ) = 2 d i s t euc = \sqrt{2(1-cos)} = \sqrt{2dist} euc=2(1−cos)=2dist
可以得到
d i s t = e u c 2 2 dist = \frac{euc^2}{2} dist=2euc2
单位圆上,欧式距离与余弦距离的范围都是[0, 2],欧式距离是合法距离,但余弦距离与欧式距离存在二次关系,自然不满足三角不等式。
例:a、b、c非常近,欧式距离为 δ \delta δ,三点在圆弧上近似在一条直线上(b在a和c之间),所以a与c的欧式距离接近2 δ \delta δ,因此a与b,b与c的余弦距离为 δ 2 2 \frac{\delta ^2}{2} 2δ2,a与c的余弦距离接近 2 δ 2 2\delta^2 2δ2,大于a与b,b与c的余弦距离之和。
欢迎关注微信公众号(算法工程师面试那些事儿),本公众号聚焦于算法工程师面试,期待和大家一起刷leecode,刷机器学习、深度学习面试题等,共勉~