大数据课程K17——Spark的协同过滤法

2023-11-13

文章作者邮箱: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={

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大数据课程K17——Spark的协同过滤法 的相关文章

  • esp32-S3专题二:内存2之RTC内存、FLASH使用

    承接上文 讲一下esp32上剩下的几个存储空间的用途 目录 一 RTC存储器 一 RTC 快速存储器 二 RTC 慢速存储器 二 Flash 一 NVS 表 二 程序和OTA分区 三 SPIFFS 文件系统 三 总结 一 RTC存储器 es
  • 不安全的加密算法

    不安全的加密算法 SKIPJACK RC4 RSA 1024位以下 des md2 md4 md5 属于经过验证 安全的 公开的加密算法 RSA DSA ECDSA 加入盐值的SHA256 推荐使用的数字签名算法有 DSA ECDSA

随机推荐

  • 值得重点推荐的BI软件有哪些?全在这里了

    在数字化程度越来越高的趋势下 发挥着推动企业数字化转型重要作用的商业智能BI也在不断提升市场份额 也催生出不少的BI软件新星 那么 BI软件有哪些 哪些BI软件更普遍适用于不同行业 针对这些问题 我们做了以下总结 BI软件有哪些 国内比较老
  • goland missing dependency错误

    新建一个项目 里面引用到第三方的包 项目编译没有问题 可是在goland里按住ctrl 鼠标点击打算跳转到第三方包相应的实现时却跳转不了 import的第三方也标红 同时go mod文件该第三方包也是标红的 看这篇文章 出现的问题和我的比较
  • moviepy音视频开发:音频拼接函数concatenate_audioclips介绍

    前往老猿Python博文目录 concatenate audioclips函数用于将多个音频剪辑进行拼接合成一个顺序播放的剪辑 调用语法 concatenate audioclips clips 说明 clips参数用于存放需要顺序拼接的音
  • 【备忘】Linux上传文件,下载文件

    背景小故事 这次在迁移服务器的时候要把ssl文件传到Linux里面 但是我又不想用ide来传 之前看同事演示过 当时没记住 感觉他简单操作就可以了 这次打算学会它 这功能用得不多 平常都不怎么使用 我们也可以用客户端连接服务器进行上传 方法
  • Android 设备 设置adb自动监听tcp 5555端口,重启有效

    Android 设备调试有两种连线方式 有线和无线 有线是通过USB导线连接android设备和电脑端 无线方式是通过连接WIFI 通过TCP的方式 连接设备和电脑端 一般用 5555端口 有线的调节 只需要打开调试模式基本就可以了 无线连
  • VirtualBox 安装32位Windows 7和64位Windows Sever 2008R2 双系统图文教程——利用VHD技术

    VirtualBox 安装32位Windows 7和64位Windows Sever 2008R2 双系统图文教程 利用VHD技术 先说说为什么要装双系统 因为想用一个系统只是用来休闲娱乐上网 聊天 看视频等等 所以这个时候坚决抵制一切数据
  • 【问题解决记录】无法识别的标志“-sdlMode”,在“p2”中

    问题解决记录 无法识别的标志 sdlMode 在 p2 中 参考文章 1 问题解决记录 无法识别的标志 sdlMode 在 p2 中 2 https www cnblogs com dbylk p 5133739 html 3 https
  • 30天自制操作系统第4天harib01a

    30天自制操作系统 第4天 C语言与画面显示的练习 用C语言实现内存写入 harib01a harib01a 准备材料 windows环境 VMware Workstation Visual Studio Code 程序和源代码 https
  • 如何为你的网站添加二级域名?

    一般公司注册的域名支持添加20个二级域名 辅助域名的添加与www的主域名相同 填写二级域名的名称 如bbs 并填写二级域名对应的IP 如果你的域名是www 98yun com bbs 这是一个论坛 你想添加一个bbs 98yun com 这
  • 大数据之——Zookeeper个人讲解

    一 zookeeper的概念 1 ZooKeeper是一个分布式的 开放源码的分布式应用程序协调服务 是Google的Chubby一个开源的实现 是Hadoop和Hbase的重要组件 它是一个为分布式应用提供一致性服务的软件 提供的功能包括
  • 用IDEA编写第一个JAVA程序

    第一步 打开IDEA IDEA下载链接 IntelliJ IDEA The Capable Ergonomic Java IDE by JetBrains 第二步 选择新建一个空项目 第三步 java项目的文件层次是 项目 包 类 创建一个
  • 6.2小车循迹,跟随,摇头测距功能实现

    1 循迹小车 1循迹模块的使用 TCRT5000传感器的红外发射二极管不断发射红外线 当发射出的红外线没有被反射回来或被反射回来但强度不够大时 红外接收管一直处于关断状态 此时模块的输出端为高电平 指示二极管一直处于熄灭状态 被检测物体出现
  • <1> linux与shell的关系

    在正式学习shell命令之前 如果你还对linux与shell的关系不甚了解 请耐心看完这篇简介 本文简要梳理了操作系统 shell的关系和作用 一个完整的计算机 整体结构如下图 我们的计算机由硬件组成 包括CPU 内存 主板 磁盘 各种外
  • 防关联软件技术分析之跨境电商防关联云服务器之超级VPS管理器

    众所周知 亚马逊有一个非常坑爹的规定 那就是同一个人或企业只能运营一个账号 并采用严格的程序对此进行监控 如果发现账户关联 则存在封号的风险 这就意味着 在同一个外网IP环境下操作多个账号是非常危险的 然而 我相信很多卖家手里都会有多个亚马
  • Java IO流

    Java的IO通过java io包下的类和接口来支持 在java io包下主要包括输入流 输出流两种IO流 每种输入 输出流又可分为字节流和字符流两大类 其中字节流以字节为单位来处理输入 输出操作 而字符流则以字符来处理输入 输出操作 1
  • java IO框架分析

    jave io框架 2010 11 10 22 18 34 分类 默认分类 举报 字号 订阅 可从IO的类层次 IO框架的设计模式来论述 总体来说 IO可以分为字节流和字符流 不同在于字符流由字节流包装而来 在IO读入之后经过JVM处理 把
  • 编译语言、解释语言与脚本语言之间的区别

    资料一 1 解释型语言与编译型语言的区别翻译时间的不同 编译型语言在程序执行之前 有一个单独的编译过程 将程序翻译成机器语言 以后执行这个程序的时候 就不用再进行翻译了 解释型语言 是在运行的时候将程序翻译成机器语言 所以运行速度相对于编译
  • 通俗易懂的机器学习——筛选垃圾邮件(贝叶斯分类)

    筛选垃圾邮件 贝叶斯分类 背景及应用 贝叶斯公式 数据集 引入依赖包 数据预处理 全局变量 过滤所有非中文词语 读取邮件 加载邮件 获取概率表 划分训练集和测试集 计算分词的概率表 保存概率表 检查邮件是否为垃圾文件 获取分词对应的概率字典
  • SQL-DataCamp-Joining Data in SQL

    1 Introduction to Joins 1 1 Introduction to INNER JOIN video 1 2 INNER JOIN PostgreSQL was mentioned in the slides but y
  • 大数据课程K17——Spark的协同过滤法

    文章作者邮箱 yugongshiye sina cn 地址 广东惠州 本章节目的 了解Spark的协同过滤概念 一 协同过滤概念 1 概念 协同过滤是一种借助众包智慧的途径 它利用大量已有的用户偏好来估计用户对其未接触过的物品的喜好程度 其