余弦于相似度cos similarity

  1. Motivation
    在计算两个特征之间的相似程度的时候经常会用到余弦相似度公式,这个公式以前在高中学过,不高好像已经基本还给老师了,今天再这里补充一下。在NLP中经常需要对特征表征之后的高维向量之间计算相似度,有向量a\mathrm a和向量b\mathrm ba=(x1,x2,...,xn)\mathrm a=(x_1,x_2,...,x_n),b=(x1,x2,...,xn)\mathrm b=(x'_1,x'_2,...,x'_n),则向量a\mathrm ab\mathrm b之间的余弦相似度为
    cos<a,b>=abab=x1x1+x2x2+,...,+xnxnx1²+x2²+,...,+xn²x1²+x2²+,...,+xn²=uTvu2v2cos<\mathrm a,\mathrm b>=\frac{\mathrm a·\mathrm b}{|\mathrm a||\mathrm b|}=\frac{x_1x'_1+x_2x'_2+,...,+x_nx_n'}{\sqrt{x_1²+x_2²+,...,+x_n²}\sqrt{x'_1²+x'_2²+,...,+x'_n²}}=\frac{u^Tv}{||u||_2||v||_2}

2.Derivation proof
首先需要该公式来之于两向量的数量积公式ab=abcos<a,b>\mathrm a·\mathrm b=|\mathrm a||\mathrm b|cos<\mathrm a,\mathrm b>该公式的推导如下:
余弦于相似度cos similarity
在图片中有c=ab\mathrm c = \mathrm a - \mathrm b,(注:为了表示的方便我们在二维的平面上表示向量,实际上特征的维度一般可以达到几百甚至几千维)由余弦定理可以得到如下公式
c²=a²+b²2abcos<a,b>c²=\mathrm a²+\mathrm b²-2|\mathrm a||\mathrm b|cos<\mathrm a,\mathrm b>①
c=ab\mathrm c = \mathrm a - \mathrm b带入到公式①中化简之后便可以得到数量积公式。
ab=abcos<a,b> \mathrm a·\mathrm b=|\mathrm a||\mathrm b|cos<\mathrm a,\mathrm b>
补充:
关于余弦定理的几何证明方法如下:
余弦于相似度cos similarity

如图所示,在△ABC中,BC=a,AC=b,AB=c,
作AD⊥BC于D,则AD=c*sinB,DC=a-BD=a-c*cosB
在Rt△ACD中,
b²=AD²+DC²=(c*sinB)²+(a-c*cosB)²
=c²sin²B+a²-2ac*cosB+c²cos²B
=c²(sin²B+cos²B)+a²-2ac*cosB
=c²+a²-2ac*cosB