协同过滤:使用共现矩阵来实现(协同过滤算法步骤)
off999 2024-10-14 12:13 29 浏览 0 评论
一、前言
各位网友大家好。十分感谢网友们的阅读、点赞和关注。有关机器学习算法协同过滤的共现矩阵问题国外的材料也有阐述,文章思想和数据集也借鉴了国外的Mahout之类的文章, 网上的文章我也看过,但是感觉总结的不算直观通俗,这里本文章通过自己的想法图文并茂的给大家展示。看在我花了很大的心思的份上,请大家关注、收藏、点赞啊,有了大家的支持,我才能花更多的心思把国外传过来的算法变得通俗易懂甚至改良,支持我在缩短您学习成本的同时也是在支持科技的发展,在此先表示对网友们的感谢!
二、算法的学习目的和环境
通过此文章了解协同过滤算法如何构建基于物品的同现矩阵;会使用Python进行矩阵运算。实验环境:
1、Python3.6以上版本
2、Python的基本数学库numpy、pandans、matplotlib、sklearn
3、Python的PyCharm开发环境
三、场景描述和共现矩阵的原理
1、场景描述
以前的文章也提到过,尽量使用通俗易懂的场景把抽象的东西变成直观的东西。现有7部科幻电影,电影编号及其电影名称如下:
M001 《星际穿越》
M002 《进入五维空间》
M003 《寻找第二地球》
M004 《VR虚拟世界的女友》
M005 《时间机器》
M006 《机器人女友》
M007 《月球基地》
下面是用户对上述科幻电影的观看记录及其评价行为的数据,数据字段之间使用Tab键分隔,数据的格式为:
用户编号 电影编号 评分(满分5分)
样本数据如下:
U001 M001 5.0
U001 M002 3.0
U001 M003 2.5
U002 M001 2.0
U002 M002 2.5
U002 M003 5.0
U002 M004 2.0
U003 M001 2.0
U003 M004 4.0
U003 M005 4.5
U003 M007 5.0
U004 M001 5.0
U004 M003 3.0
U004 M004 4.5
U004 M006 4.0
U005 M001 4.0
U005 M002 3.0
U005 M003 2.0
U005 M004 4.0
U005 M005 3.5
U005 M006 4.0
现用户U003看了M001、M004、M005、M007,请分析上述数据再为用户U003推荐1部精彩电影。
2、共现矩阵的原理
该原理参考了国外机器学习Mahout实战给读者列举下,大家尽量看,看不懂不要紧,我接下来以实际的图形并茂的例子阐述,然后你回过头来再看这段话估计就迎刃而解了。
基于物品的推荐系统,给出了计算任意一对物品之间相似度的方法。假设我们要计算出每个物品对之间的相似性,并将其结果导入一个巨大的矩阵,这应该是一个方阵,行和列的数目等于数据模型中的物品数。每行(以及每列)表达在一个特定物品和所有其它物品之间的相似性。事实上,把这些行和列看作向量有助于理解。该矩阵还是沿着对角线对称的,因为物品X与 Y之间的相似性与物品Y和X之间的相似性是一样的,所以行X和列Y上的条目也会等于在行Y和列X上的条目,这就是我们要构建的同现矩阵。
同现矩阵不是计算每个物品对之间的相似性,而是计算在某些用户偏好值列表中每个物品对共同出现的次数,以此来填充矩阵。例如,如果有9个用户都为物品X和Y做出了一些偏好,那么X和Y同时出现9次。共现关系与计算相似度很像:两个物品同时出现次数越多,它们越有可能相关或者相似。
四、数据准备
数据上面已经给出了。有的网友说,现在机器学习不是喂大数据吗?这种观点是错误的,在实际项目中,获取样本数据的成本是非常大的,大数据样本也是不现实的,很简单比如你有一火车皮的机器零件需要检验,难道你把整个车皮的零件都作为样本吗?显然不是,这时候我们可以经过抽样来计算总体的数学期望、方差等指标,也可以采用T分布、F分布等手段近似的代替正态分布,满足条件还可以采用强化学习等手段,当然你的集群很牛,都是多核CPU、GPU居多,使用大数据训练模型也未尝不可。
在学习中千万别为了大数据而大数据,典型的数据几十条、几百条足够了。从数据中能清晰看见我们处理的过程这是学习者追求的。
五、协同过滤共现矩阵的实现过程
1、 填充同现矩阵的数据
(1) 计算M001和“M001、M002、M003、M004、M005、M006、M007”同时出现的次数
从样本数据可以看出M001共出现5次;M001和M002同时出现3次;M001和M003同时出现4次,以此类推。
例如 M001和M002同时出现3次, 直观的展现如下示意图所示:
(2) 计算M002和“M001、M002、M003、M004、M005、M006、M007”同时出现的次数
...
(3) 计算M007和“M001、M002、M003、M004、M005、M006、M007”同时出现的次数
运算后的结果如下图所示的方阵:
2、实现矩阵运算
实现上述运算后的矩阵和用户U003矩阵相乘,如下图所示:
乘以下列矩阵:
结果为:
Python实现矩阵相乘的过程:
import numpy as np
A = np.array([[1,2],[3,4],[5,6]])
B = np.array([[1,2,3],[4,5,6]])
print(np.dot(A,B) )
A x B = C ,结果为:
[[ 9 12 15]
[19 26 33]
[29 40 51]]
C 的第1行为 :1x1+1x4 1x2 + 2x5 1x3+2x6
C 的第2行为 :3x1+4x4 3x2 + 4x5 3x3 +4x6
C 的第3行为 :5x1 + 6x4 5x2 +6x5 5x3 + 6x6
3、电影推荐
经过上述计算,除去用户U003看过的电影,第3部没有看过并且权值最高为24.5,所以应该推荐给U003编号为M003的电影《寻找第二地球》 。
由于代码功能很单一,主要是计算用户ID同时出现的个数然后填表和矩阵运算,比较简单,请自行完成。
相关推荐
- 戴尔官网保修查询入口(戴尔售后保质期查询)
-
可以按照以下步骤查询戴尔笔记本电脑的保修期:1.打开戴尔官网:https://www.戴尔.com/zh-cn/售后服务/保修政策.html2.点击页面上方的“服务与支持”按钮,进入戴尔的服务支持...
- 手机号邮箱登录入口(手机号邮箱官网)
-
手机163邮箱登录入口如下:163邮箱官网入口:https://smart.mail.163.com/login.htm点击进入登录或者注册邮箱即可。手机浏览器访问进入官网http://www.123...
- sd卡(sd卡无法读取怎么修复)
-
SD卡是大卡,相机用的;普通的手机内存卡,是小卡,正规的名称是macrosd卡,也就是微型SD卡。可以通过卡套转为普通的SD卡的大小。 其实就是大小不同。但手机上的内存卡,人们经常也俗称为SD...
- windows7蓝牙功能在哪里打开
-
点击搜索框在windows7系统主界面点击开始菜单,点击打开搜索框。输入命令输入services.msc后回车,在列表中找到并右击BluetoothSupportS...点击属性选择进入属性菜单,...
-
- 2010激活密钥(microsoft2010激活密钥)
-
步骤/方式1officeprofessionalplus2010:(office专业版)6QFdx-pYH2G-ppYFd-C7RJM-BBKQ8Bdd3G-xM7FB-Bd2HM-YK63V-VQFdKVYBBJ-TRJpB-QFQ...
-
2025-11-19 04:03 off999
- 联想官方刷新bios工具(联想电脑刷新bios)
-
刷新BIOS需要使用联想的官方网站或授权维修中心来进行操作。以下是一些基本步骤:1.访问联想的官方网站,找到BIOS更新程序并下载。在下载过程中,请确保选择与您计算机型号匹配的版本。2.将下载的B...
-
- 苹果ios14系统下载(苹果ios14.1下载)
-
1方法一步骤/方式一打开Appstore。步骤/方式二在搜索栏点击搜索框。步骤/方式三搜索并点击需要下载的软件。步骤/方式四点击获取。步骤/方式五最后验证ID密码即可。1.在应用商店搜索你要下载的应用名称。2.点击下载按钮,如果要求登...
-
2025-11-19 03:03 off999
- office2010怎么免费永久激活密钥
-
用这个试试,一个KMS激活工具可以激活2010到2019的Office自家的目前用的就是这个microsoft6477.moe/1716.html直接使用这个Microsoftoffice2010...
-
- 类似爱加速的国内ip(类似爱加速的app)
-
推荐“V8盒子”。这一款免费无广告的模拟器,不同于其它软件盒子,而是类似于X8沙箱,满足游戏多开,画中画,悬浮球操作,熄屏后台运行等多功能的沙箱盒子.支持一键root,一键安装xposed框架,能在安卓/苹果手机上运行多个安卓/ios虚拟系...
-
2025-11-19 02:03 off999
- 阿里旺旺手机客户端(阿里旺旺手机app)
-
手机淘宝的旺旺在打开商品后,会看到左下角有个旺旺的图标,点击就可以联系了。 阿里旺旺是将原先的淘宝旺旺与阿里巴巴贸易通整合在一起的一个新品牌。它是淘宝和阿里巴巴为商人量身定做的免费网上商务沟通软件,...
- 最纯净的pe装机工具(pe工具哪个纯净)
-
U盘装系统步骤:1.制作U盘启动盘。这里推荐大白菜U盘启动盘制作工具,在网上一搜便是。2.U盘启动盘做好了,我们还需要一个GHOST文件,可以从网上下载一个ghost版的XP/WIN7/WIN8系统,...
- 装一个erp系统多少钱(wms仓库管理软件)
-
现在主流有客户端ERP和云端ERP两种客户端通常一次买断,价格在万元左右,但是还有隐性费用,你需要支付服务器、数据管理员,此外如果系统需要更新维护,你还需要支付另外一笔不菲的费用。云端ERP:优势...
- cad2014序列号和密钥永久(autocad2014序列号和密钥)
-
1在cad2014中修改标注样式后,需要将其保存2单击“样式管理器”按钮,在弹出的窗口中选择修改后的标注样式,然后单击“设置为当前”按钮,再单击“保存当前样式”按钮,将其保存为新的样式名称3为了...
- qq修改密保手机号(qq修改密保手机号是什么意思)
-
QQ更改绑定的手机号码操作步骤如下:1、打开手机主界面,找到“QQ”软件点击打开。2、输入正确的QQ账户和密码登录到qq主界面。3、点击左上角的头像“图片”,进入到个人中心界面。4、进入到个人中心界面...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
