在模型训练过程中,我们也在不断地评估着样本间的距离,如何评估样本距离也是定义优化目标和训练方法的基础。
在分析两个特征向量之间的相似性时,常使用余弦相似度来表示。余弦相似度的取值范围是[−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)=∣∣A∣∣2∣∣B∣∣2A⋅B
- 关注向量之间的角度关系,不关心它们的绝对大小
- 取值范围是[−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)=1−cos(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)=2∣∣A∣∣2∣∣B∣∣2∣∣A∣∣22+∣∣B∣∣22−∣∣A−B∣∣22=22−∣∣A−B∣∣22⇒ ∣ ∣ 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)} ⇒∣∣A−B∣∣2=2−2cos(A,B)=2(1−cos(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)=1−cos(A,B)=1−∣∣A∣∣2∣∣B∣∣2A⋅B=∣∣A∣∣2∣∣B∣∣2∣∣A∣∣2∣∣B∣∣2−A⋅B=∣∣A∣∣2∣∣B∣∣2∣∣A∣∣2∣∣B∣∣2−∣∣A∣∣2∣∣B∣∣2cos(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)=1⇔distcos(A,B)=0⇔∣∣A∣∣2∣∣B∣∣2=AB⇔A,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)=21∣∣A−B∣∣22
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),也叫作相对熵,它常用于计算两个分布之间的差异,但不满足对称性和三角不等式。