一、余弦相似度的定义
余弦相似度算法:一个向量空间中两个向量夹角间的余弦值作为衡量两个个体之间差异的大小,余弦值接近1,夹角趋于0,表明两个向量越相似,余弦值接近于0,夹角趋于90度,表明两个向量越不相似。
二、余弦相似度的公式
回顾一下函数的概念,我们就会发现 是三个变量的函数。对于同样一个角,如果三角形边长都比较长,那么 的动态范围很大;如果边长很短, 的动态范围就很小。为了消除边长的影响,我们将 除以夹角的两个边的长度和,写成
可以证明,这样计算出的的动态范围就在 和 之间。如果,那么夹角最大,就是180°;如果,就是90°;如果,就是0°角。事实上就等于夹角的余弦函数值。这样一来,我们就从勾股定理出发,建立了角度判定因子和具体角度之间的关系,这种关系就是余弦定理。通常余弦定理用下面的公式来表述:
或者
有了余弦定理后, 我们会发现勾股定理其实是余弦定理在直角情况下的特例。当然,换一个角度来看,余弦定理是勾股定理的扩展。
有了余弦定理,我们就能够通过三角形的三条边的边长,计算它的任意一个内角。对于两个向量来讲,如果我们把它们的起点放到原点,那么原点和这两个向量终点构成一个三角形。
由两个已知的向量和,利用余弦定理计算它们的夹角θ
这个三角形的三条边显然是确定的,由此我们可以用余弦定理公式算出两个向量的夹角θ。
值得一提的是,恰好等于a和b两个向量的点积<a,b>的两倍,我们将它带入余弦定理公式就能得到
这个公式被看做余弦定理的另一种表述方式,它的推导过程也是比较好理解的
由于 c²=(a-b)²=(b-a)²
所以 (a-b)²=b²+a²-2||a||.||b|| cosC
a²-2ab+b²=b²+a²-2||a||.||b|| cosC
-2ab=-2 ||a||.||b|| cosC
<a,b>=||a||.||b||cosC
表示向量的点积,其中向量范数$
对于多维向量和的点积,通常使用下面的公式计算: