协同过滤:使用共现矩阵来实现(协同过滤算法步骤)
off999 2024-10-14 12:13 34 浏览 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同时出现的个数然后填表和矩阵运算,比较简单,请自行完成。
相关推荐
- 音频编辑转换器(音频编辑转换器怎么用)
-
高转低音频转换器接法是指将一种信号转换成另一种信号的装置。信号是信息存在的形式或载体。在自动化仪表设备和自动控制系统中,常将一种信号转换成另一种与标准量或参考量比较后的信号,以便将两类仪表联接起来,因...
- 安卓游戏中心下载安装(安卓游戏中心app)
-
格来云游戏、Nibiru游戏城、快游戏、蟋蟀游戏大厅、石头游戏。以上app资源丰富,且支持外设连接,更新及时。1、格来云游戏:格来云游戏是动视云科技开发的APP,格来云不依赖玩家的电脑性能和储存,连...
- 正当防卫3手游下载(正当防卫三正版下载)
-
通过QQ浏览器,或者应用商店下载即可。华为手机上下载《正当防卫4》(JustCause4)的方法如下:方法一:使用华为应用市场(华为AppGallery)1.打开华为应用市场。2.在搜索框中输...
- 可以免费下载所有歌曲的网站
-
一、http://51Ape.Com一个免费提供无损音乐下载的网站,专注于Ape音乐、Flac音乐以及Wav等各类高品质无损音乐的免费下载,是目前国内比较好的免费音乐下载网站。二、91听歌网提供无损音...
- 龙珠斗士z手游版下载(龙珠斗士z手游版下载ios)
-
召唤神龙,实现愿望。龙珠z斗士中只要集齐七颗龙珠就可以召唤出神龙,来实现自己的愿望。在漫画动画各类手游中都是这样首先进入游戏主界面,点击“斗士”按钮进入选角界面,在选角界面中选择你要使用的角色并确认...
- 可以手动插人物的游戏手游(可以手动插人物的游戏手游app)
-
在手游对局中,左上角有一个开关,可切换手动开火和自动开火,切换到自动开火后,准星描到敌方人物即会自动开火。当然,并不是所有模式中都有自动开火开关,是特定的一些模式有该开关,比如挑战模式、刀战模式等。另...
- 手机铃声最好听的歌(手机铃声最好听的歌曲有哪些)
-
Everythingisnotwhatitseems超喜欢这首的,绝对不会撞见跟你铃声一样的Push艾薇儿的新歌,很好听,也很适合做铃声Foreverandalways钢琴版副歌部分很好听布兰妮的3也...
- 千千静听官网(十大免费音乐网站)
-
千千静听起源于2002年,千千静听是一款完全免费的音乐播放软件,集播放、音效、转换、歌词等众多功能于一身。其小巧精致、操作简捷、功能强大的特点,深得用户喜爱,被网友评为中国十大优秀软件之一,并且成为目...
- 成品ppt网站国外(免费生成ppt的网站)
-
免费ppt成品怎么下载?不确定您要下载哪类的ppt。如果想要下载初中语文课件的话,免费成品ppt可以通过无忧无虑中学语文网下载,上面按照年级,教材版本分门别类的课件资源,教案参考,还有相应的练习题,甚...
- 免费的连连看游戏大全(连连看游戏app推荐)
-
在4399小游戏里,点击儿童小游戏,里面就有不及时的连连看。《连连看》只要将相同的两张牌用三根以内的直线连在一起消除即可。连连看,又称对对卡,是指图案配对的一种益智游戏,有多种形式,如卡片游戏、电子...
- 图片文字提取免费工具(图片文字提取免费工具在线)
-
1.打开手机,进入图库,点击打开一张图片。2.点击【分享】图标进入页面。3.点击【提取文字】。注意,只有手机已安装WPS才会出现此图标。第一种方法需要用到我们的聊天神器:QQ,进入任一聊天框并给...
-
- 一键群发500微信群软件(有没有微信一键群发5000人的软件)
-
1/8进入设置打开微信进入个人页面后,点击【设置】。2/8进入通用点击【通用】。3/8进入辅助功能点击【辅助功能】。4/8进入群发助手点击【群发助手】。5/8开始群发点击【开始群发】。6/8新建群发点击下方【新建群发】。7/8选择好友在这里...
-
2026-01-23 06:43 off999
- 万能驱动离线安装包(万能驱动离线版win10)
-
一、驱动人生()1、驱动人生为了针对用户的离线使用需求,专门推出了离线版的软件,能够在没有网络的情况下使用。2、通过内置的网卡驱动程序,帮助用户优先安装网卡驱动,进而可以连接网络并继续在网上下载安装驱...
- 中国象棋天天象棋(中国象棋天天象棋手机版)
-
天天象棋中的专区对局就是ai区,也就是软件区,专门给引擎下棋的,以前3.0版本里有,我玩过,没啥特别的,一开始匹配的都是新手,因为那个模式有独立的段位机制,后面更新之后就给禁掉了,跟ai对局没意思,还...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
win7系统还原步骤图解(win7还原电脑系统的步骤)
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
linux软件(linux软件图标)
-
失业程序员复习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)
