百面机器学习 #2 模型评估:03 余弦距离和余弦相似度、欧氏距离

在模型训练过程中,我们也在不断地评估着样本间的距离,如何评估样本距离也是定义优化目标和训练方法的基础。

在分析两个特征向量之间的相似性时,常使用余弦相似度来表示。余弦相似度的取值范围是[−1,1],相同的两个向量之间的相似度为1。

余弦相似度

  • 两个向量夹角的余弦

c o s ( A , B ) = A ⋅ B ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 cos(A,B)=\frac{A\cdot B}{||A||_2 ||B||_2} cos(A,B)=A2B2AB

  • 关注向量之间的角度关系,不关心它们的绝对大小
  • 取值范围是[−1,1]

如果希望得到类似于距离的表示,将1减去余弦相似度即为余弦距离。因此,余弦距离的取值范围为[0,2],相同的两个向量余弦距离为0。

余弦相似度和余弦距离

d i s t c o s ( A , B ) = 1 − c o s ( A , B ) dist_{cos}(A,B)=1-cos(A,B) distcos(A,B)=1cos(A,B)

和欧式距离的比较和关系

总体来说,欧氏距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异。

  • 当一对文本相似度的长度差距很大、但内容相近时,如果使用词频或词向量作为特征,它们在特征空间中的的欧氏距离通常很大;而如果使用余弦相似度的话,它们之间的夹角就可能很小,因而相似度高。

  • 高维情况下,余弦相似度依然保持“相同时为1,正交时为0,相反时为−1”的性质;而欧氏距离的数值则受维度的影响,范围不固定,并且含义也比较模糊。

  • 在一些场景,例如Word2Vec中,其向量的模长是经过归一化的,此时欧氏距离与余弦距离(余弦相似度)有着单调的关系

    由余弦公式知
    c o s ( A , B ) = ∣ ∣ A ∣ ∣ 2 2 + ∣ ∣ B ∣ ∣ 2 2 − ∣ ∣ A − B ∣ ∣ 2 2 2 ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 = 2 − ∣ ∣ A − B ∣ ∣ 2 2 2 cos(A,B)=\frac{||A||_2^2+||B||_2^2-||A-B||_2^2}{2||A||_2||B||_2}=\frac{2-||A-B||_2^2}{2} \\ cos(A,B)=2A2B2A22+B22AB22=22AB22

    ⇒ ∣ ∣ A − B ∣ ∣ 2 = 2 − 2 c o s ( A , B ) = 2 ( 1 − c o s ( A , B ) ) = 2 d i s t c o s ( A , B ) \Rightarrow||A-B||_2= \sqrt{2-2cos(A,B)}= \sqrt{2(1-cos(A,B))}=\sqrt{2dist_{cos}(A,B)} AB2=22cos(A,B) =2(1cos(A,B)) =2distcos(A,B)
    在此场景下,如果选择距离最小(相似度最大)的近邻,那么使用余弦相似度和欧氏距离的结果是相同的。

余弦距离不是一个严格定义的距离

距离的定义:在一个集合中,如果每一对元素均可唯一确定一个实数,使得三条距离公理(正定性,对称性,三角不等式)成立,则该实数可称为这对元素之间的距离。

  • 正定性
    d i s t c o s ( A , B ) = 1 − c o s ( A , B ) = 1 − A ⋅ B ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 = ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 − A ⋅ B ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 = ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 − ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 c o s ( A , B ) ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 ≥ 0 \begin{aligned} dist_{cos}(A,B)&=1-cos(A,B)\\ &=1-\frac{A\cdot B}{||A||_2 ||B||_2}\\ &=\frac{||A||_2 ||B||_2-A\cdot B}{||A||_2 ||B||_2}\\ &=\frac{||A||_2 ||B||_2-||A||_2 ||B||_2cos(A,B)}{||A||_2 ||B||_2}\\ &\ge 0 \end{aligned} distcos(A,B)=1cos(A,B)=1A2B2AB=A2B2A2B2AB=A2B2A2B2A2B2cos(A,B)0
    当且仅当 c o s ( A , B ) = 1 ⇔ d i s t c o s ( A , B ) = 0 ⇔ ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 = A B ⇔ A , B cos(A,B)=1\Leftrightarrow dist_{cos}(A,B)=0\Leftrightarrow ||A||_2 ||B||_2=AB \Leftrightarrow A,B cos(A,B)=1distcos(A,B)=0A2B2=ABA,B 同方向时取等号

  • 对称性
    d i s t c o s ( A , B ) = d i s t c o s ( B , A ) dist_{cos}(A,B)=dist_{cos}(B,A) distcos(A,B)=distcos(B,A)

  • 三角不等式:不成立

    反例:前述归一化模长的3个向量,或者说在单位圆上的向量A,B,C,假设A与B非常近、B与C非常近,其欧氏距离为极小量 u u u;此时A、B、C虽然在圆弧上,但近似在一条直线上,所以A与C的欧氏距离接近于 2 u 2u 2u。因此,根据欧式距离和余弦距离的关系
    d i s t c o s ( A , B ) = 1 2 ∣ ∣ A − B ∣ ∣ 2 2 dist_{cos}(A,B)=\frac{1}{2}||A-B||_2^2 distcos(A,B)=21AB22
    A与B、B与C的余弦距离为 u 2 / 2 u^2/2 u2/2;A与C的余弦距离接近 ( 2 u ) 2 / 2 = 2 u 2 (2u)^2/2=2u^2 (2u)2/2=2u2,大于A与B、B与C的余弦距离之和 u 2 u^2 u2

在机器学习领域,被俗称为距离,却不满足三条距离公理的不仅仅有余弦距有KL距离(Kullback-Leibler Divergence),也叫作相对熵,它常用于计算两个分布之间的差异,但不满足对称性和三角不等式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值