动手学推荐系统:基于PyTorch的算法实现(微课视频版)
上QQ阅读APP看书,第一时间看更新

2.2.3 Cos相似度

Cos相似度即两个向量在空间里的夹角余弦值。夹角余弦值越接近于1代表夹角越接近0°,即在空间中的方向越相近。反之,余弦值越接近于0代表夹角接近90°,即在空间中越接近正交。如果接近于-1则代表完全反方向的向量。Cos相似度的取值范围为[-1,1]。

Cos相似度的公式如下:

即两个向量的内积除以L2范数的乘积。

基础知识——范数

范数是用来衡量一个向量大小的物理量,记作Lp或者‖Xp,定义如下:

其中,pRp≥1。

p=1时,是L1范数:

X向量中所有元素绝对值的和。

p=2时,是L2范数:

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

向量间Cos相似度的代码如下:

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

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