
上QQ阅读APP看书,第一时间看更新
2.2.3 Cos相似度
Cos相似度即两个向量在空间里的夹角余弦值。夹角余弦值越接近于1代表夹角越接近0°,即在空间中的方向越相近。反之,余弦值越接近于0代表夹角接近90°,即在空间中越接近正交。如果接近于-1则代表完全反方向的向量。Cos相似度的取值范围为[-1,1]。
Cos相似度的公式如下:

即两个向量的内积除以L2范数的乘积。
基础知识——范数
范数是用来衡量一个向量大小的物理量,记作Lp或者‖X‖p,定义如下:

其中,p∈R,p≥1。
当p=1时,是L1范数:

即X向量中所有元素绝对值的和。
当p=2时,是L2范数:

即所有元素平方和再求根。L2范数也被称为欧几里得范数(Euclidean Norm)。因为它表示的是原点与该向量的欧几里得距离。在机器学习中很常用,有时会省略下标2,直接用‖X‖表示,通常也被称为向量的模长。有时也可通过向量与自身转置的点积来计算,记作XTX。
向量间Cos相似度的代码如下:

两个集合间Cos相似度的公式如下:

该公式仅仅是在Cos原版式子的基础上做了几步简单的变化,因为可以把集合视作1与0的向量。例如:N(x)={1,2,3,5},N(y)={1,4,5,6},则x的向量可表示为[1,1,1,0,1,0],y的向量可表示为[1,0,0,1,1,1]。x与y向量的点乘是元素值同时为1的对应位置的和,也是两个集合的交集,而x向量的模长,也是向量中为1的数量开根号,而为1的数量是本身集合的长度。如此便得到了公式(2-7),代码如下:
