【算法无用系列】电影推荐——余弦相似度计算用户相似度原理

【算法无用系列】通过余弦相似度计算电影、用户相似度

    话不多说,本文通过电影推荐系统中,基于余弦相似度算法计算出用户相似和电影相似原理。希望可以帮助一些代码不懂的同学一些思路。

记录用户电影评分数据

    一般情况来说,会根据用户的行为,记录当前用户对于某个电影的评分,简单的计算公式为

  1. 浏览 +1
  2. 点赞 +2
  3. 评论 +3
  4. 收藏 +5

    等等,当然这个累加的评分可以自行在代码中配置。最后我们会得出这样的一个用户电影评分关系表,如下所示,记录了用户和电影的评分。

用户ID 电影ID 评分
1 101 5.0
1 102 3.0
1 103 2.5
2 101 2.0
2 102 2.5
2 103 5.0
2 104 2.0
3 101 5.0
3 104 4.0
3 105 4.5
4 101 4.0
4 103 3.0
4 104 2.0
4 105 4.0
5 102 4.0
5 103 4.0
5 104 1.0

转换矩阵

电影ID  101  102  103  104  105
用户ID                            
1       5.0  3.0  2.5  0.0  0.0
2       2.0  2.5  5.0  2.0  0.0
3       5.0  0.0  0.0  4.0  4.5
4       4.0  0.0  3.0  2.0  4.0
5       0.0  4.0  4.0  1.0  0.0

在这里插入图片描述

    对于二维表的数据转换为这样的一个矩阵。那么如何判断两个用户的相似程度如何呢?

在这里插入图片描述

    横着看这几个电影的评分,如果这些分数都特别相似,那就可以证明两个用户的兴趣爱好类似,越相似,那么相似度越高。

在这里插入图片描述

    竖着看也是一样,如果两列数值越相似,那么就可以认为两个电影越相似(当前这仅仅是测试,在真实的场景中,这样的单一维度来计算电影相似度是不够的)。

    或者这样的一个多维度矩阵无法和我们在高中学到的二维坐标系XY轴绑定起来。那么我可以把维度减少一下。如下,变成了高中时常见的XY轴二维坐标。

电影ID  101  102   
用户ID                            
1       5.0  3.0  
2       2.0  2.5  

在这里插入图片描述

    如上图所示,形成两个向量,两个向量的夹角越小,则证明两个 越相似。

在这里插入图片描述

    当前,以上数据只是为了更好理解计算公式,真实情况下,维度会更多,如下就是一个5个维度,不过我们可以继续套用公式。

电影ID  101  102  103  104  105
用户ID                            
1       5.0  3.0  2.5  0.0  0.0
2       2.0  2.5  5.0  2.0  0.0
3       5.0  0.0  0.0  4.0  4.5
4       4.0  0.0  3.0  2.0  4.0
5       0.0  4.0  4.0  1.0  0.0

在这里插入图片描述

相关推荐

  1. 数据的相似计算

    2024-06-06 11:04:09       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 11:04:09       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 11:04:09       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 11:04:09       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 11:04:09       20 阅读

热门阅读

  1. 大模型日报2024-06-05

    2024-06-06 11:04:09       9 阅读
  2. QT中如何对引入的第三方库进行翻译

    2024-06-06 11:04:09       9 阅读
  3. MATLAB误差估计扩展卡尔博斯方法的目录大纲

    2024-06-06 11:04:09       9 阅读
  4. Spring Kafka 之 @KafkaListener 注解详解

    2024-06-06 11:04:09       9 阅读
  5. 泛微OA调用发送消息接口 .Net C#示例

    2024-06-06 11:04:09       8 阅读
  6. .NET Redis限制接口请求频率 滑动窗口算法

    2024-06-06 11:04:09       8 阅读
  7. electron-vite打包成安装包配置

    2024-06-06 11:04:09       8 阅读
  8. 爬山算法的详细介绍

    2024-06-06 11:04:09       7 阅读
  9. Android12.0 SIM卡语言自适应

    2024-06-06 11:04:09       8 阅读
  10. web 预览显示本地图片、音频

    2024-06-06 11:04:09       7 阅读