![动手学推荐系统:基于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=1739516269-TFqi3XwtFQRpaxeVy4YyE81YQzZKxQYr-0-7b912722f90e4fcb0e0842007e70324a)
即两个向量的内积除以L2范数的乘积。
基础知识——范数
范数是用来衡量一个向量大小的物理量,记作Lp或者‖X‖p,定义如下:
![](https://epubservercos.yuewen.com/50C521/26581360101299306/epubprivate/OEBPS/Images/Figure-P19_10575.jpg?sign=1739516269-VbyAJj9nHTe0hMmZY9hgdbl4jPvJnUe3-0-fefe779bd7ae6a6c98f3d565a05d773c)
其中,p∈R,p≥1。
当p=1时,是L1范数:
![](https://epubservercos.yuewen.com/50C521/26581360101299306/epubprivate/OEBPS/Images/Figure-P19_10577.jpg?sign=1739516269-d8SxDg2DIM1Agr6LvOtvZLEGQzMNTsIt-0-080d274cf0c6e84b8f2157030f0f51b7)
即X向量中所有元素绝对值的和。
当p=2时,是L2范数:
![](https://epubservercos.yuewen.com/50C521/26581360101299306/epubprivate/OEBPS/Images/Figure-P20_10582.jpg?sign=1739516269-uOSGZLIVx5J4zgYWNuvX0GKGOIVYyHFe-0-6360894660e2d212ee35deb208d62975)
即所有元素平方和再求根。L2范数也被称为欧几里得范数(Euclidean Norm)。因为它表示的是原点与该向量的欧几里得距离。在机器学习中很常用,有时会省略下标2,直接用‖X‖表示,通常也被称为向量的模长。有时也可通过向量与自身转置的点积来计算,记作XTX。
向量间Cos相似度的代码如下:
![](https://epubservercos.yuewen.com/50C521/26581360101299306/epubprivate/OEBPS/Images/Figure-P20_11896.jpg?sign=1739516269-M46CjDnkXRBXFI0Za6oCUNUH0rHNvvQx-0-b83622e82b088c60daf76bd1a3af8354)
两个集合间Cos相似度的公式如下:
![](https://epubservercos.yuewen.com/50C521/26581360101299306/epubprivate/OEBPS/Images/Figure-P20_10585.jpg?sign=1739516269-63uShWwWP3nJUiftWdocTLTDyR6WL1Xt-0-cbe4cf574ad9135b56b6f5c23a41840e)
该公式仅仅是在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=1739516269-6W0ooYoICry8q5XaX1apY0RxV0ykz2GH-0-11787a96cd18c701b00fa9e3bfdb664a)