![动手学推荐系统:基于PyTorch的算法实现(微课视频版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/826/47216826/b_47216826.jpg)
上QQ阅读APP看书,第一时间看更新
2.2.3 Cos相似度
Cos相似度即两个向量在空间里的夹角余弦值。夹角余弦值越接近于1代表夹角越接近0°,即在空间中的方向越相近。反之,余弦值越接近于0代表夹角接近90°,即在空间中越接近正交。如果接近于-1则代表完全反方向的向量。Cos相似度的取值范围为[-1,1]。
Cos相似度的公式如下:
![](https://epubservercos.yuewen.com/50C521/26581360101299306/epubprivate/OEBPS/Images/Figure-P19_10573.jpg?sign=1739609640-DeT3xk7Z5Zr0BiGMnELdTjZ8ih72PbL0-0-1c6762da585b3fec104711fd1779212b)
即两个向量的内积除以L2范数的乘积。
基础知识——范数
范数是用来衡量一个向量大小的物理量,记作Lp或者‖X‖p,定义如下:
![](https://epubservercos.yuewen.com/50C521/26581360101299306/epubprivate/OEBPS/Images/Figure-P19_10575.jpg?sign=1739609640-H2wNq17vx5def4ba1O9g3SLpy7S411cf-0-160c9451c848c64e7fe9261bf1b57879)
其中,p∈R,p≥1。
当p=1时,是L1范数:
![](https://epubservercos.yuewen.com/50C521/26581360101299306/epubprivate/OEBPS/Images/Figure-P19_10577.jpg?sign=1739609640-OqgAdC1D3Uia7Q2kYNO3gQyhUxKwgMl2-0-0981930816af9086bfad0c819c5cba17)
即X向量中所有元素绝对值的和。
当p=2时,是L2范数:
![](https://epubservercos.yuewen.com/50C521/26581360101299306/epubprivate/OEBPS/Images/Figure-P20_10582.jpg?sign=1739609640-edeK4BP14MQ13sa43gGfDUlDAZ4YFtqW-0-0475c8c493a3acdcced24c7eb571b082)
即所有元素平方和再求根。L2范数也被称为欧几里得范数(Euclidean Norm)。因为它表示的是原点与该向量的欧几里得距离。在机器学习中很常用,有时会省略下标2,直接用‖X‖表示,通常也被称为向量的模长。有时也可通过向量与自身转置的点积来计算,记作XTX。
向量间Cos相似度的代码如下:
![](https://epubservercos.yuewen.com/50C521/26581360101299306/epubprivate/OEBPS/Images/Figure-P20_11896.jpg?sign=1739609640-643aovxCi89nD0R3RBStf2WCAdHUc4FV-0-0fb98d269ce593daff753c99860f65a6)
两个集合间Cos相似度的公式如下:
![](https://epubservercos.yuewen.com/50C521/26581360101299306/epubprivate/OEBPS/Images/Figure-P20_10585.jpg?sign=1739609640-jLNbyxfFVWYVQzSuu3OYsSOnHc2neMYD-0-89ff9350dbbfcd41915925a61dc0a4fc)
该公式仅仅是在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),代码如下:
![](https://epubservercos.yuewen.com/50C521/26581360101299306/epubprivate/OEBPS/Images/Figure-P20_11897.jpg?sign=1739609640-mHllCSMdMoDgBkvMWImPyBKwYfPN78ol-0-fb8addbbf9006666f209135636794810)