- 动手学推荐系统:基于PyTorch的算法实现(微课视频版)
- 於方仁编著
- 573字
- 2023-08-31 19:28:02
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=1739236998-BJMiCZBeVc3CaowtGjODSX7KfjbH1N3z-0-2fc8bacf5f537c67641e37367de2a3ec)
即两个向量的内积除以L2范数的乘积。
基础知识——范数
范数是用来衡量一个向量大小的物理量,记作Lp或者‖X‖p,定义如下:
![](https://epubservercos.yuewen.com/50C521/26581360101299306/epubprivate/OEBPS/Images/Figure-P19_10575.jpg?sign=1739236998-1MNbz4YhI9NWYMNSId7kLDWwMcRSgRo1-0-7bea696be8fbc780b1926345b1239e40)
其中,p∈R,p≥1。
当p=1时,是L1范数:
![](https://epubservercos.yuewen.com/50C521/26581360101299306/epubprivate/OEBPS/Images/Figure-P19_10577.jpg?sign=1739236998-tafIoJ4PVwfhV0QMm4tWsZL4O88tihjO-0-0a07a7af91ea37e9a60361b2d1b95a52)
即X向量中所有元素绝对值的和。
当p=2时,是L2范数:
![](https://epubservercos.yuewen.com/50C521/26581360101299306/epubprivate/OEBPS/Images/Figure-P20_10582.jpg?sign=1739236998-LYYkydhaQO89j2zn0ELPeXTWZKSk0PbQ-0-4f4074a76892568c44caf92270fab711)
即所有元素平方和再求根。L2范数也被称为欧几里得范数(Euclidean Norm)。因为它表示的是原点与该向量的欧几里得距离。在机器学习中很常用,有时会省略下标2,直接用‖X‖表示,通常也被称为向量的模长。有时也可通过向量与自身转置的点积来计算,记作XTX。
向量间Cos相似度的代码如下:
![](https://epubservercos.yuewen.com/50C521/26581360101299306/epubprivate/OEBPS/Images/Figure-P20_11896.jpg?sign=1739236998-U4607uU8M9bB6JEypEhMAjU9DYlSpHFI-0-780bb999aca6c95cb85c88ecdcc8b8e6)
两个集合间Cos相似度的公式如下:
![](https://epubservercos.yuewen.com/50C521/26581360101299306/epubprivate/OEBPS/Images/Figure-P20_10585.jpg?sign=1739236998-pp732KZwzoOGlNye2Fy1db8H1YEGSfn1-0-efa801df798758ac866f43062302a286)
该公式仅仅是在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=1739236998-7ZcaHMajmZSKSQDNBRy7Q418dKx4CmJN-0-ecc914dd10c2f4afc75264cca0f76e44)