文章目录
余弦相似度余弦相似度和余弦距离和欧式距离的比较和关系余弦距离不是一个严格定义的距离在模型训练过程中,我们也在不断地评估着样本间的距离,如何评估样本距离也是定义优化目标和训练方法的基础。
在分析两个特征向量之间的相似性时,常使用余弦相似度来表示。余弦相似度的取值范围是[−1,1],相同的两个向量之间的相似度为1。
余弦相似度
两个向量夹角的余弦cos(A,B)=A⋅B∣∣A∣∣2∣∣B∣∣2cos(A,B)=\frac{A\cdot B}{||A||_2 ||B||_2} cos(A,B)=∣∣A∣∣2∣∣B∣∣2A⋅B
关注向量之间的角度关系,不关心它们的绝对大小取值范围是[−1,1]
如果希望得到类似于距离的表示,将1减去余弦相似度即为余弦距离。因此,余弦距离的取值范围为[0,2],相同的两个向量余弦距离为0。
余弦相似度和余弦距离
distcos(A,B)=1−cos(A,B)dist_{cos}(A,B)=1-cos(A,B) distcos(A,B)=1−cos(A,B)
和欧式距离的比较和关系
总体来说,欧氏距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异。
当一对文本相似度的长度差距很大、但内容相近时,如果使用词频或词向量作为特征,它们在特征空间中的的欧氏距离通常很大;而如果使用余弦相似度的话,它们之间的夹角就可能很小,因而相似度高。
高维情况下,余弦相似度依然保持“相同时为1,正交时为0,相反时为−1”的性质;而欧氏距离的数值则受维度的影响,范围不固定,并且含义也比较模糊。
在一些场景,例如Word2Vec中,其向量的模长是经过归一化的,此时欧氏距离与余弦距离(余弦相似度)有着单调的关系
由余弦公式知
cos(A,B)=∣∣A∣∣22+∣∣B∣∣22−∣∣A−B∣∣222∣∣A∣∣2∣∣B∣∣2=2−∣∣A−B∣∣222cos(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−2cos(A,B)=2(1−cos(A,B))=2distcos(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)
在此场景下,如果选择距离最小(相似度最大)的近邻,那么使用余弦相似度和欧氏距离的结果是相同的。
余弦距离不是一个严格定义的距离
距离的定义:在一个集合中,如果每一对元素均可唯一确定一个实数,使得三条距离公理(正定性,对称性,三角不等式)成立,则该实数可称为这对元素之间的距离。
正定性
distcos(A,B)=1−cos(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∣∣2cos(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
当且仅当cos(A,B)=1⇔distcos(A,B)=0⇔∣∣A∣∣2∣∣B∣∣2=AB⇔A,Bcos(A,B)=1\Leftrightarrow dist_{cos}(A,B)=0\Leftrightarrow ||A||_2 ||B||_2=AB \Leftrightarrow A,Bcos(A,B)=1⇔distcos(A,B)=0⇔∣∣A∣∣2∣∣B∣∣2=AB⇔A,B 同方向时取等号
对称性
distcos(A,B)=distcos(B,A)dist_{cos}(A,B)=dist_{cos}(B,A) distcos(A,B)=distcos(B,A)
三角不等式:不成立
反例:前述归一化模长的3个向量,或者说在单位圆上的向量A,B,C,假设A与B非常近、B与C非常近,其欧氏距离为极小量uuu;此时A、B、C虽然在圆弧上,但近似在一条直线上,所以A与C的欧氏距离接近于2u2u2u。因此,根据欧式距离和余弦距离的关系
distcos(A,B)=12∣∣A−B∣∣22dist_{cos}(A,B)=\frac{1}{2}||A-B||_2^2 distcos(A,B)=21∣∣A−B∣∣22
A与B、B与C的余弦距离为u2/2u^2/2u2/2;A与C的余弦距离接近(2u)2/2=2u2(2u)^2/2=2u^2(2u)2/2=2u2,大于A与B、B与C的余弦距离之和u2u^2u2。
在机器学习领域,被俗称为距离,却不满足三条距离公理的不仅仅有余弦距有KL距离(Kullback-Leibler Divergence),也叫作相对熵,它常用于计算两个分布之间的差异,但不满足对称性和三角不等式。