- Motivation
在计算两个特征之间的相似程度的时候经常会用到余弦相似度公式,这个公式以前在高中学过,不高好像已经基本还给老师了,今天再这里补充一下。在NLP中经常需要对特征表征之后的高维向量之间计算相似度,有向量a和向量b,a=(x1,x2,...,xn),b=(x1′,x2′,...,xn′),则向量a和b之间的余弦相似度为
cos<a,b>=∣a∣∣b∣a⋅b=x1²+x2²+,...,+xn²x1′²+x2′²+,...,+xn′²x1x1′+x2x2′+,...,+xnxn′=∣∣u∣∣2∣∣v∣∣2uTv
2.Derivation proof
首先需要该公式来之于两向量的数量积公式a⋅b=∣a∣∣b∣cos<a,b>该公式的推导如下:

在图片中有c=a−b,(注:为了表示的方便我们在二维的平面上表示向量,实际上特征的维度一般可以达到几百甚至几千维)由余弦定理可以得到如下公式
c²=a²+b²−2∣a∣∣b∣cos<a,b>①
把c=a−b带入到公式①中化简之后便可以得到数量积公式。
a⋅b=∣a∣∣b∣cos<a,b>
补充:
关于余弦定理的几何证明方法如下:

如图所示,在△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