大数据课程K17——Spark的协同过滤法
文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州
▲ 本章节目的
⚪ 了解Spark的协同过滤概念;
一、协同过滤概念
1. 概念
协同过滤是一种借助众包智慧的途径。它利用大量已有的用户偏好来估计用户对其未接触过的物品的喜好程度。其内在思想是相似度的定义。
1. 基于用户的协同过滤概念
在基于用户的方法的中,如果两个用户表现出相似的偏好(即对相同物品的偏好大体相同),
那就认为他们的兴趣类似。要对他们中的一个用户推荐一个未知物品,便可选取若干与其类似的
用户并根据他们的喜好计算出对各个物品的综合得分,再以得分来推荐物品。其整体的逻辑是,
如果其他用户也偏好某些物品,那这些物品很可能值得推荐。
2. 基于物品的协同过滤概念
同样也可以借助基于物品的方法来做推荐。这种方法通常根据现有用户对物品的偏好或是评
级情况,来计算物品之间的某种相似度。这时,相似用户评级相同的那些物品会被认为更相近。
一旦有了物品之间的相似度,便可用用户接触过的物品来表示这个用户,然后找出和这些已知物
品相似的那些物品,并将这些物品推荐给用户。同样,与已有物品相似的物品被用来生成一个综
合得分,而该得分用于评估未知物品的相似度。
2. 协同过滤的推荐方法
1. 基于用户的推荐
对于基于用户相似性的推荐,用简单的一个词表述,那就是“志趣相投”。事实也是如此。
比如说你想去看一个电影,但是不知道这个电影是否符合你的口味,那怎么办呢?从网上找介绍和看预告短片固然是一个好办法,但是对于电影能否真实符合您的偏好却不能提供更加详细准确的信息。这时最好的办法可能就是这样:
小王:哥们,我想去看看这个电影,你不是看了吗,怎么样?
小张:不怎地,陪女朋友去看的,她看得津津有味,我看了一小半就玩手机去了。小王:那最近有什么好看的电影吗?
小张:你去看《雷霆XX》吧,我看了不错,估计你也喜欢。
小王:好的。
这是一段日常生活中经常发生的对话,也是基于用户的协同过滤算法的基础。
小王和小张是好哥们。作为好哥们,其也应具有相同的爱好。那么在此基础上相互推荐自己喜爱的东西给对方那必然是合乎情理,有理由相信被推荐者也能够较好地享受到被推荐物品所带来的快乐和满足感。
下图展示了基于用户的协同过滤算法的表现形式。

从图上可以看到,想向用户3推荐一个商品,那么如何选择这个商品是一个很大的问题。在已有信息中,用户3已经选择了物品1和物品5,用户2比较偏向于选择物品2和物品4,而用户1选择了物品1、物品4以及物品5。
根据读者的理性思维,不用更多地分析可以看到,用户1和用户3在选择偏好上更加相似。那么完全有理由相信用户1和用户3都选择了相同的物品1和物品5,那么将物品3向用户3推荐也是完全合理的。
这个就是基于用户的协同过滤算法做的推荐。用特定的计算方法扫描和指定目标相同的已有用户,根据给定的相似度对用户进行相似度计算,选择最高得分的用户并根据其已有的信息作为推荐结果从而反馈给用户。这种推荐算法在计算结果上较为简单易懂,具有很高的实践应用价值。
2. 基于物品的推荐
在基于物品的推荐算法中,同样可以使用一个词来形容整个算法的原理。那就是“物以类聚”。
这次小张想给他女朋友买个礼物。
小张:马上情人节快到了,我想给我女朋友买个礼物,但是不知道买什么,上次买了个赛车模型的差点被她骂死。
小王:哦?那你真是的,也不买点她喜欢的东西。她平时喜欢什么啊?
小张:她平时比较喜欢看动画片,特别是《机器猫》,没事就看几集。
小王:那我建议你给她买套机器猫的模型套装,绝对能让她喜欢。
小张:好主意,我试试。
从对话中可以感受到,小张想给自己的女朋友买个礼物从而向小王咨询。
对于不熟悉的用户,在缺少特定用户信息的情况下,根据用户已有的偏好数据去推荐一个未知物品是合理的。这就是基于物品的推荐算法。
二、案例—用户和电影推荐
1. 简化版代码
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import scala.collection.mutable.Map
object Driver1{
def main(args:Array[String]):Unit={
相关文章:
大数据课程K17——Spark的协同过滤法
文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Spark的协同过滤概念; 一、协同过滤概念 1. 概念 协同过滤是一种借助众包智慧的途径。它利用大量已有的用户偏好来估计用户对其未接触过的物品的喜好程度。其内在思想是相似度的定义…...
【力扣】1588. 所有奇数长度子数组的和 <前缀和>
【力扣】1588. 所有奇数长度子数组的和 给你一个正整数数组 arr ,请你计算所有可能的奇数长度子数组的和。子数组 定义为原数组中的一个连续子序列。请你返回 arr 中 所有奇数长度子数组的和 。 示例 1: 输入:arr [1,4,2,5,3] 输出&#x…...
socket,tcp,http三者之间的原理和区别
目录 1、TCP/IP连接 2、HTTP连接 3、SOCKET原理 4、SOCKET连接与TCP/IP连接 5、Socket连接与HTTP连接 socket,tcp,http三者之间的区别和原理 http、TCP/IP协议与socket之间的区别 下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置…...
【FPGA零基础学习之旅#11】数码管动态扫描
🎉欢迎来到FPGA专栏~数码管动态扫描 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大家能指正…...
JavaExcel:自动生成数据表并插入数据
故事背景 出于好奇,当下扫描excel读取数据进数据库 or 导出数据库数据组成excel的功能层出不穷,代码也是前篇一律,poi或者easy excel两种SDK的二次利用带来了各种封装方法。 那么为何不能直接扫描excel后根据列的属性名与行数据的属性建立S…...
哪吒汽车“三头六臂”之「浩智电驱」
撰文 / 翟悦 编审 / 吴晰 8月21日,在哪吒汽车科技日上,哪吒汽车发布“浩智战略2025”以及浩智技术品牌2.0。根据公开信息,主编梳理了以下几点:◎浩智滑板底盘支持400V/800V双平台◎浩智电驱包括180kW 400V电驱系统和250kW 800…...
补码的反码加1为什么是原码?
搞了半个小时,终于弄懂了。 168421原码10011反码01100补码01101 学到这里了,我们肯定知道,原码补码 0,在这里也就是 19 13 32,溢出来的一位正好舍去了; 所以说,对啊,只要保证…...
光刻机是怎么做出来的
文章目录 一、光刻机的基本原理二、光刻机的制造过程三、光刻机的制造要求四、光刻机的发展趋势 光刻机是半导体工艺制造中非常重要的设备之一,它是用来制作微细结构的关键工具之一。相信大家都知道,半导体工艺中最小的制造单位是晶体管,而制…...
CocosCreator3.8研究笔记(二)windows环境 VS Code 编辑器的配置
一、设置文件显示和搜索过滤步骤 为了提高搜索效率以及文件列表中隐藏不需要显示的文件, VS Code 需要设置排除目录用于过滤。 比如 cocoscreator 中,编辑器运行时会自动生成一些目录:build、temp、library, 所以应该在搜索中排除…...
Rust--流程控制
循环/判断 ref: 流程控制 - Rust语言圣经(Rust Course) 判断 if condition true {// A... } else {// B... }if 语句块是表达式,所以可以为变量赋值,当然要注意的是保证返回的类型相同: fn main() {let condition true;let number if c…...
mate60的麒麟9000s和麒麟9000是一款CPU吗
答案:不是 论证: 1.在核心方便9000是1个高频A77,3个低频A77,4个A55组成的。9000S是2个高频A34核心,6个定制A78AE核心和4个A510核心并搭载超线程技术(详见新华网新华网地址) 2.GPU截然不同&am…...
查漏补缺 - JS三 WebAPI
目录 BOMhistory DOM操作DOM1,dom.children 和 dom.childNodes 区别2,dom.remove()3,其他常用 API DOM 属性1,标准属性2,自定义属性 DOM 内容DOM样式DOM事件 JavaScript 包括 EcmaScript 和 WebAPI EcmaScript 包括 语…...
如何熟练使用vector?
🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 …...
gitlab-rake gitlab:backup:create 执行报错 Errno::ENOSPC: No space left on device
gitlab仓库备份执行 gitlab-rake gitlab:backup:create报错如下: 问题分析:存储备份的空间满 解决方法: 方法1:清理存放路径,删除不需要文件,释放空间。 方法2:创建一个根目录的挂载点&#x…...
【Nginx】负载均衡当其中一台服务器宕机之后
搭建一个简单的负载均衡,然后关闭其中一台再来访问,会发现我们的浏览器卡住一直转圈圈,过了很久才会显示结果。由此我们可以得出结论Nginx负载的时候如果其中一台服务挂掉了,它会把请求转发到另一个可以提供服务的机器,…...
每日一题 2511. 最多可以摧毁的敌人城堡数目
难度:简单 翻译:寻找距离最远的 1 和 -1 的组合,要求它们之间只有0 class Solution:def captureForts(self, forts: List[int]) -> int:res, t 0, -1for i, fort in enumerate(forts):if fort -1 or fort 1:if t > 0 and fort ! f…...
NLP(六十七)BERT模型训练后动态量化(PTDQ)
本文将会介绍BERT模型训练后动态量化(Post Training Dynamic Quantization,PTDQ)。 量化 在深度学习中,量化(Quantization)指的是使用更少的bit来存储原本以浮点数存储的tensor,以及使用更少的…...
机器学习和数据挖掘04-PowerTransformer与 MinMaxScaler
概念 PowerTransformer(幂变换器) PowerTransformer 是用于对数据进行幂变换(也称为Box-Cox变换)的预处理工具。幂变换可以使数据更接近正态分布,这有助于某些机器学习算法的性能提升。它支持两种常用的幂变换&#x…...
1.15 自实现GetProcAddress
在正常情况下,要想使用GetProcAddress函数,需要首先调用LoadLibraryA函数获取到kernel32.dll动态链接库的内存地址,接着在调用GetProcAddress函数时传入模块基址以及模块中函数名即可动态获取到特定函数的内存地址,但在有时这个函…...
总结ADX指标交易的好处
股神巴菲特从一个穷小子变成世界富豪,而闻名世界。anzo capital昂首资本以为这辈子再也不会和巴菲特产生任何交集,直到我看了巴菲特的发家史,才发现原来我们都使用过ADX指标盈利过,下面anzo capital昂首资本就总结一下使用ADX指…...
用ESP32和VS1053模块DIY网络收音机:从硬件接线到Arduino代码调试全流程
用ESP32和VS1053打造智能网络收音机:从元器件选型到音频流调试实战 在物联网和智能硬件蓬勃发展的今天,ESP32凭借其出色的无线连接能力和丰富的外设接口,成为DIY音频项目的理想选择。本文将手把手带你完成一个功能完整的网络收音机项目&#…...
面向生产的Chatgpt5.4:系统集成、架构模式与成本优化深度拆解
对于计划将顶级AI能力深度集成至自身产品与工作流的团队而言,理解Gemini 3.1 Pro的系统级特性、集成模式与全生命周期成本至关重要。国内开发者可通过RskAi(www.rsk.cn)等聚合平台,以零成本、国内直访的方式完成前期技术验证与原型…...
【菜鸟飞】Conda环境管理与vscode无缝协作实战指南
1. Conda环境管理入门:从零搭建Python工作区 第一次接触Conda时,我被它强大的环境隔离能力惊艳到了。想象你正在装修房子,Conda就像给你的每个项目分配了独立的房间——在这个房间里,你可以随意摆放家具(安装依赖包&am…...
Linux系统auditd审计服务实战:从零配置到规则优化(附常用命令大全)
Linux系统auditd审计服务实战:从零配置到规则优化(附常用命令大全) 当服务器遭遇入侵时,大多数管理员的第一反应往往是查看历史命令记录。但现实情况是,黑客通常会第一时间清空.bash_history文件。这时,一个…...
从‘米勒平台’到‘零电压开关’:深入浅出聊聊MOS管栅极驱动的那些门道与进阶玩法
从‘米勒平台’到‘零电压开关’:深入浅出聊聊MOS管栅极驱动的那些门道与进阶玩法 在功率电子领域,MOS管的开关过程就像一场精密的芭蕾舞表演,而栅极驱动则是那位看不见的编舞师。当您第一次在示波器上观察到那个神秘的"米勒平台"时…...
nbiot-arduino库:Quectel BC95/BC68模组快速接入指南
1. 项目概述nbiot-arduino是一个面向嵌入式开发者的轻量级 Arduino 库,专为驱动 Quectel 公司推出的 NB-IoT(Narrowband IoT)通信模组而设计。该库并非通用 AT 指令封装器,而是聚焦于 NB-IoT 物联网场景下的典型交互范式——以低功…...
Raspotify多用户环境配置终极指南:在家庭网络中共享Spotify音乐服务
Raspotify多用户环境配置终极指南:在家庭网络中共享Spotify音乐服务 【免费下载链接】raspotify A Spotify Connect client that mostly Just Works™ 项目地址: https://gitcode.com/gh_mirrors/ra/raspotify 想要在家庭网络中打造一个完美的音乐共享系统吗…...
如何在树莓派上搭建Spotify Connect客户端:Raspotify完整安装配置指南
如何在树莓派上搭建Spotify Connect客户端:Raspotify完整安装配置指南 【免费下载链接】raspotify A Spotify Connect client that mostly Just Works™ 项目地址: https://gitcode.com/gh_mirrors/ra/raspotify 想要将你的树莓派变成专业的Spotify Connect音…...
2026年企业AI HR选型实用手册
导读:这份2026年企业AI HR选型实用手册由eRoad易路出品,核心围绕AI技术与人力资源管理的深度融合,提出以“搭子”方法论打造企业落地AI HR的最短路径,展现了从技术应用到产业落地的HR智能化进化方向。关注公众号:【互联…...
Python异步爬虫实战:aiohttp并发采集与验证码异步处理完整教程
前言 爬虫效率是每个数据工程师都关心的问题。当你需要采集上万个页面时,同步请求一个一个排队等待的方式实在太慢了。 Python的asyncio aiohttp组合可以让你的爬虫速度提升10-50倍,而且代码改动并不大。 本文将从零开始讲解异步爬虫的原理和实战&am…...
