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

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

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

记录用户电影评分数据

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

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

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

用户ID电影ID评分
11015.0
11023.0
11032.5
21012.0
21022.5
21035.0
21042.0
31015.0
31044.0
31054.5
41014.0
41033.0
41042.0
41054.0
51024.0
51034.0
51041.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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/23061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是数字化转型?

作者: 峡山老曹 数字神化 ”企业如何实现数字化转型“是摆在现代企业面前一个无法回避的问题,数字化转型的重要性不容忽视,它不仅是企业适应数字化时代的必然要求,更是提升竞争力、实现可持续发展的关键。随着科技的飞速发展和市场…

八、C语言:操作符详解

一、移位操作符 1.1左移操作 左边丢弃,右边补0 1.2右移操作 算数右移:右边丢弃,左边补原符号位 逻辑右移:右边丢弃,左边补0 int main() {int a -1;int b a >> 1;printf("b%d\n",b);return 0; } 原码…

【Linux进程篇】Linux进程管理应用——虚假的shell脚本

W...Y的主页 😊 代码仓库分享💕 前言:我们已经了解了进程的工作原理,并且学习了进程创建、进程终止、进程等待以及进程程序替换。为了更好的巩固这些知识,我们可以创建一个简易的shell命令行。 目录 做一个简易的s…

GAT1399协议分析(六)--校时

一、官方消息定义 DeviceIDType :GA/T1400.1,采集设备、 卡口点位、 采集系统、分析系统、视图库、应用平台等设备编码规则 TimeCorrectModeType: dateTime时间格式: TimeZone:时区,GAT1400里面没有找到具体内容&…

卧式搅拌机:一键自动称重轻松搞定

在现代化工业生产中,G效、精准的设备是提高生产效率、降低生产成本。近年来,卧式搅拌机一键自动称重包装机的出现,无疑为众多行业带来了变革。这种集搅拌、称重、包装于一体的智能化设备,以其G效、便捷、精准的特点,迅…

六轴机器手臂运动控制——直流伺服反馈系统设计(比赛项目计划书+设计总结+硬件+源代码+上位机等)

TW的硬件一直很强,这是难得的硬件创新比赛的优秀作品,资料非常完整理。 硬件设计,源码,项目计划书,甚至包含了事后的复盘总结文档。 是不可多得的好资料。 项目系统框架图 1. 硬件系统框架图 (请以方块图形式呈现) …

idea的代码没有提交到仓库怎么撤回到本地?

代码已经提交到变更列表但是还没有push推送到仓库上,可以用这个方法 点击日志-右键要撤回的记录-选择撤销提交 撤销的又回到本地变更 当然你只能撤销自己提交的,别人的你撤销不了

python-题库篇-为什么数组下标从0 开始而不是 1

为什么很多编程语言要把 0 作为第一个下标索引,而不是直观的 1 呢? 这个问题 Dijkstra 已经解答过了,没错,就是你知道的 Dijkstra,Dijkstra 最短路径算法,荷兰语全名是 Edsger Wybe Dijkstra,于…

定制高温隧道炉,如何判断质量好坏

在现代工业生产中,高温隧道炉扮演着不可或缺的角色。对于特定工艺要求,如陶瓷烧制、金属热处理等,定制化的高温隧道炉更是不可或缺。然而,面对市场上琳琅满目的产品,如何判断高温隧道炉的质量好坏成为了企业决策者面临…

js终止递归

终止递归 1. 实现目标:js 编写递归方法 查找指定节点; 2. 需解决问题:找到所需节点后,递归不会终止,直到所有节点遍历完成后才会停止,会消耗性能 3. 解决方案:优化递归方法,在找到…

解决vscode终端不显示conda环境变量名称问题【详细步骤!实测可行!!】

最近在使用Visual Studio Code (VSCode) 时候,发现终端没有正确显示激活的conda环境名称,搜了一下,找到原因,记录一下,如果有人也遇到同样的问题,可以收藏一下。   分别两种情况,一是windows系…

一周学会Django5 Python Web开发 - Django5内置Auth认证系统-用户登录实现

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计57条视频,包括:2024版 Django5 Python we…

JVM学习-内存泄漏

内存泄漏的理解和分类 可达性分析算法来判断对象是否是不再使用的对象,本质都是判断一上对象是否还被引用,对于这种情况下,由于代码的实现不同就会出现很多内存泄漏问题(让JVM误以为此对象还在引用,无法回收,造成内存泄…

旭日X3与英伟达Orin NX通过TCP传输图片

观前提醒:本文主要内容为使用Python在局域网内建立TCP连接并传输图片信息,计算机为一块旭日X3和一块英伟达Orin NX。 一、什么是TCP TCP(传输控制协议)是一种可靠的、面向连接的协议,它确保数据包的顺序传输和完整性…

关于教务排课的那些事

在办学过程中,你是否被如下问题困扰? 1、排课功率低: 为了确保师资资源得到充分利用,教务教师排课要求了解每一个全职和兼职教师,了解每一个人的时刻组织和带班状况,因而在排课的时分需求处理很多的信息&a…

【Java数据结构】二叉树详解(四)

🔒文章目录: 1.❤️❤️前言~🥳🎉🎉🎉 2.给定一个二叉树, 找到该树中两个指定节点的最近公共祖先 2.1第一种思路 2.2第二种思路 3.根据一棵树的前序遍历与中序遍历构造二叉树 4.根据一棵树的中序…

图文型LED显示屏的结构与安装

随着科技的不断进步,LED显示屏已成为商业广告、公共信息显示等领域不可或缺的一部分。图文型LED显示屏以其独特的优势和多样化的应用场景,受到了市场的广泛欢迎。本文将详细介绍图文型LED显示屏的结构特点、工作原理以及安装指南。 1、图文型LED显示屏的…

跨境电商|Facebook Marketplace怎么做?

2016 年,Facebook打造了同名平台 Facebook Marketplace。通过利用 Facebook 现有的庞大客户群,该平台取得了立竿见影的成功,每月访问量将超过 10 亿。对于个人卖家和小企业来说,Facebook Marketplace是一个不错的销货渠道&#xf…

通过ssr-echarts,服务端生成echarts图

ssr-echarts :一个开源项目,它能够服务端渲染 ECharts 图表,并直接生成 PNG 图片返回。该项目提供了多种主题,并且支持 GET 和 POST 请求。如果参数较多,建议使用 POST 方法。用户可以自己部署这个服务。 1. 服务端安装…

Three.js-实现加载图片并旋转

1.实现效果 2. 实现步骤 2.1创建场景 const scene new THREE.Scene(); 2.2添加相机 说明: fov(视场角):视场角决定了相机的视野范围,即相机可以看到的角度范围。较大的视场角表示更广阔的视野,但可能…