[Spark]-协同过滤

深入理解Spark ML:基于ALS矩阵分解的协同过滤算法与源码分析 http://blog.youkuaiyun.com/u011239443/article/details/51752904随着互联网的迅猛发展,为了满足人们在繁多的信息中获取自己需要内容的需求,个性化推荐应用而生。协同过滤推荐是其中运用最为成功的技术之一。其中,基于用户的最近邻法根据相似用户的评分来预测当前用户的评分。然而,在用户数量以及用户评分不足的情况下,该方法存在冷启动和数据稀疏的问题。为了解决这两个问题,业界提出了提出了基于项的最近邻法,利用项之间相似性稳定的特点可以离线计算相似性,降低了在线计算量,提高了推 阅读详情

原理

在这里插入图片描述
如图 2(a) 所示,协同过滤算法找到用户可能喜欢的视频的方式很直观,就是利用用户的观看历史,找到跟目标用户 Joe 看过同样视频的相似用户,然后找到这些相似用户喜欢看的其他视频,推荐给目标用户 Joe。

矩阵分解算法则是期望为每一个用户和视频生成一个隐向量,将用户和视频定位到隐向量的表示空间上(如图 2(b) 所示),距离相近的用户和视频表明兴趣特点接近,在推荐过程中,我们就应该把距离相近的视频推荐给目标用户。例如,如果希望为图 2(b) 中的用户 Dave 推荐视频,我们可以找到离 Dave 的用户向量最近的两个视频向量,它们分别是《Ocean’s 11》和《The Lion King》,然后我们可以根据向量距离由近到远的顺序生成 Dave 的推荐列表。

那这个过程的关键就在于如何分解这个共现矩阵了。从形式上看,矩阵分解的过程是直观的,就是把一个 mxn 的共现矩阵,分解成一个 mxk 的用户矩阵和 kxn 的物品矩阵相乘的形式(如图 3)。
在这里插入图片描述
用户隐向量就是用户矩阵相应的行向量,而物品隐向量就是物品矩阵相应的列向量。

如何确定user举证和item矩阵的值?
用梯度下降法求解如下问题即可:
在这里插入图片描述
这个目标函数里面,rui​ 是共现矩阵里面用户 u 对物品 i 的评分,qi​ 是物品向量,pu​ 是用户向量,K 是所有用户评分物品的全体集合。通过目标函数的定义我们可以看到,我们要求的物品向量和用户向量,是希望让物品向量和用户向量之积跟原始的评分之差的平方尽量小。简单来说就是,我们希望用户矩阵和物品矩阵的乘积尽量接近原来的共现矩阵。

问题

如何决定向量维度k的值?

代码

// 建立矩阵分解模型
val als = new ALS()
  .setMaxIter(5)
  .setRegParam(0.01)
  .setUserCol("userIdInt")
  .setItemCol("movieIdInt")
  .setRatingCol("ratingFloat")

//训练模型
val model = als.fit(training)


//得到物品向量和用户向量
model.itemFactors.show(10, truncate = false)
model.userFactors.show(10, truncate = false)
大数据课程K17——Spark的协同过滤法 用特定的计算方法扫描和指定目标相同的已有用户,根据给定的相似度对用户进行相似度计算,选择最高得分的用户并根据其已有的信息作为推荐结果从而反馈给用户。在已有信息中,用户3已经选择了物品1和物品5,用户2比较偏向于选择物品2和物品4,而用户1选择了物品1、物品4以及物品5。那么完全有理由相信用户1和用户3都选择了相同的物品1和物品5,那么将物品3向用户3推荐也是完全合理的。对于不熟悉的用户,在缺少特定用户信息的情况下,根据用户已有的偏好数据去推荐一个未知物品是合理的。品相似的那些物品,并将这些物品推荐给用户。 阅读详情

相关推荐

Spark 2.1.0 入门:协同过滤算法

一、方法简介 ​ 协同过滤是一种基于一组兴趣相同的用户或项目进行的推荐,它根据邻居用户(与目标用户兴趣相似的用户)的偏好信息产生对目标用户的推荐列表。 关于协同过滤的一个经典的例子就是看电影。如果你不知道哪一部电影是自己喜欢的或者评分比较高的,那么通常的做法就是问问周围的朋友,看看最近有什么好的电影推荐。而在问的时候,肯定都习惯于问跟自己口味差不多的朋友,这就是协同过滤的核心思想。因此,协同过...

福州大数据 hadoop学习 593

Spark机器学习之协同过滤算法

Spark机器学习之协同过滤算法 一)、协同过滤 1.1 概念 协同过滤是一种借助"集体计算"的途径。它利用大量已有的用户偏好来估计用户对其未接触过的物品的喜好程度。其内在思想是相似度的定义 1.2 分类 1.在基于用户的方法的中,如果两个用户表现出相似的偏好(即对相同物品的偏好大体相同),那就认为他们的兴趣类似。要对他们中的一个用户推荐一个未知物品, 便可选取若干与其类似的用户并根据他们的喜好计...

xuxu96 1267

Spark—基于物品的协同过滤推荐算法

1、Spark—基于物品的协同过滤推荐算法 1.1  离线计算—物品的相似度矩阵 输入数据格式: 用户ID,物品ID,评分 输出结果格式: 物品ID1,物品ID2,相似度 Spark程序代码如下: //   #0 设置输入输出     val inputpath = "hdfs://192.168.180.10:9000/user/input"     val outputpat

Spark MLlib 机器学习 5691

利用spark ml 进行协同过滤推荐

https://spark.apache.org/docs/latest/ spark环境搭建 Spark runs on Java 8+, Python 2.7+/3.4+ and R 3.1+. For the Scala API, Spark 2.3.1 uses Scala 2.11. You will need to use a compatible Scala version (2...

舟 3058

Spark ML - 协同过滤

http://ihoge.cn/2018/ML1.html 协同过滤算法 ​ 获取spark自带的MovieLens数据集,其中每行包含一个用户、一个电影、一个该用户对该电影的评分以及时间戳。我们使用默认的ALS.train() 方法,即显性反馈(默认implicitPrefs 为false)来构建推荐模型并根据模型对评分预测的均方根误差来对模型进行评估。 导入需要的包: im...

机器学习算法 1081

协同过滤itembase增量计算Spark实现(一)

协同过滤itembase增量计算Spark实现 Controller 1.      数据统计 user counts:=========>8239237 itemCode count:=====>7421567   spark result distinct nums ======>5826484   2.      运行子任务 倒叙   3.      Spark集群

博客内容皆为原创 6360

Spark MLlib协同过滤推荐算法实现

Spark MLlib协同过滤推荐算法实现一、算法概述 一、算法概述

Running_Tiger的博客 7102

spark机器学习之协同过滤

协同过滤是一类基于用户行为数据的推荐算法,它的核心思想是利用用户的历史行为数据(比如评分、购买、点击等)来发现用户之间的相似性或者物品之间的相似性,从而给用户推荐他们可能感兴趣的物品。协同过滤算法通常分为两种类型:基于用户的协同过滤和基于物品的协同过滤。协同过滤算法的优点是不需要关于用户或物品的额外信息,只需要用户的历史行为数据即可。但是,协同过滤算法也存在一些问题,比如冷启动问题(对于新用户或新物品无法进行有效的推荐)、稀疏性问题(用户对物品的行为数据往往是稀疏的)等。:选择适当的模型来进行协同过滤。

JustinMars的博客 408

Spark 基于item和user 的协同过滤实现

mahout已经提供了 item-based cf 算法,但是要想在 mahout 算法上修改item-based cf 相对来说比较繁琐,比如改进相似度或者改进推荐结果计算公式,更加令人头疼的是mahout 修改比较难调试,相比来说 spark 实现起来更加简单方便,同时 spark shell 在调试阶段特别方便。本文使用 spark 编写了 item-based和 user-based 两种协同过虑算法。

mach_learn的专栏 1万+

Ubuntu安装opencv4.5(自己安装过程详细)

1.下载opencv 在opencv官网下载source版,下载链接 http://opencv.org/releases.html。别下载错版本 下载过程就不多说了。 2.安装过程 2.1解压 unzip opencv-4.5.0.zip cd opencv-4.5.0 2.2安装依赖的库 sudo apt-get install cmake sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-

weixin_45629790的博客 1万+

AOI检测总误判?五大常见问题与实战解决方案

通过对图像质量、检测程序、外界干扰、算法优化以及设备维护和校准的全面把控,企业可以有效降低误判率,提升AOI检测的准确性和可靠性,为工业生产提供更有力的质量保障。表现描述:在AOI检测时,元器件字符因印刷颜色深浅、模糊或受到灰尘干扰等差异,再加上元件库参数未根据实际生产优化,会使系统误将合格元件判定为不合格,严重影响生产效益和产品质量。优化元件库:着重检测关键差异字符,如型号编码等关键信息,剔除不必要字符的检测项,减少干扰,专注于关键识别的准确性。检测时,根据物料信息动态更新检测参数,使系统适应物料变化。

ALeader_AOI的博客 3495

使用Spark ALS实现协同过滤

转自:http://blog.javachen.com/2015/06/01/how-to-implement-collaborative-filtering-using-spark-als.html 本文主要记录最近一段时间学习和实现Spark MLlib中的协同过滤的一些总结,希望对大家熟悉Spark ALS算法有所帮助。 更新: 【2016.06.12】Spar

小刀的专栏 6361

从零到一:龙芯杯参赛全攻略(含北理工学长经验PDF、B站培训视频与开源代码合集)

本文详细介绍了龙芯杯全国大学生计算机系统能力大赛的参赛全攻略,包括资源整合、技能树构建、团队协作和避坑指南。提供北理工学长经验PDF、B站培训视频与开源代码合集,帮助参赛者从零基础到站上领奖台。重点解析如何高效获取优质资源、避开新手常见陷阱及构建可落地的学习路径,助力普通学生系统学习CPU设计。

weixin_26802933的博客 542

【Spark】协同过滤

同步于Buracag的博客 协同过滤通常用于推荐系统。这些技术旨在根据user-item关联矩阵的缺失条目。 spark.ml目前支持基于模型的协同过滤,其中users和items由一小组可用于预测缺失条目的潜在因子(latent factors)描述。 spark.ml使用交替最小二乘(ALS)算法来学习这些潜在因素。 spark.ml中的实现具有以下参数: numBlocks,是users和...

buracag_mc的博客 1077

9.9元ESP32-C3开发板实战:手把手教你用VSCode搭建RT-Thread最小系统(附避坑指南)

本文提供了一份详尽的实战指南,教你如何在售价仅9.9元的ESP32-C3开发板上,使用VSCode搭建RT-Thread最小系统。内容涵盖从ESP-IDF环境配置、BSP源码获取、内核补丁应用到编译下载与调试的全流程,并重点分享了版本选择、补丁应用等关键避坑技巧,旨在帮助开发者低成本、高效地启动嵌入式实时操作系统开发。

o4p5q6r7s的博客 226

基于ROS2 Humble与Livox Mid-360的双雷达点云融合实战解析

本文详细解析了基于ROS2 Humble与Livox Mid-360的双雷达点云融合实战方案。从环境搭建、驱动安装、双雷达配置、外参标定、时间同步到点云融合核心实现,全面介绍了技术要点与避坑指南,并提供了工程化部署与性能优化建议,助力开发者高效实现高精度点云合成应用。

ss78901的博客 1093

Spark 协同过滤 in scala

Spark协同过滤原理参考spark协同过滤 spark电影推荐算法with mllib spark协同过滤 berkeley数据集movielen数据集 movielen 使用的数据集1 10,000 movies by 72,000 users. movielen 使用的数据集2 6000 users on 4000 movies步骤1. 上传数据至hdfs使用小数据集 ml-1m

u011243978的专栏 1183

PCL 模型滤波器【2025最新版】

根据给定的模型系数在点云中提取对应于模型的点云数据。博客长期更新,本文最新更新时间为:2025年6月17日。

点云侠的博客 4384

基于Spark-ALS的协同过滤算法推荐

基于Spark-ALS的 协同过滤算法推荐 1.协同过滤介绍 协同过滤是一种根据用户对各种产品的交互与评分来推荐新产品的推荐系统技术。 协同过滤吸引人的地方就在于它只需要输入一系列用户/产品的交互记录,协同过滤算法能够根据这些交互记录知道哪些产品之间比较相似(因为相同的用户与它们发生了交互)以及哪些用户之间比较相似,然后可以作出新的推荐。 交互记录分为“显式”反馈(例如在购物网站上进行评分)和“隐...

weixin_43836363的博客 1473

智慧安防:基于Java+YOLOv8的视频AI识别平台设计与实现

张工,我们的园区智慧安防项目又出问题了!用Python写的YOLOv8 demo,拉3路RTSP流就卡,视频延迟超过5秒,入侵检测误报率太高,一到晚上光线差就全是误报,而且和我们的Java安防平台对接太麻烦,还要搭个消息队列,架构复杂得要死!“别慌,用Java+YOLOv8啊!

2601_94871597的博客 196

完整的 Python 数据分析案例:新能源汽车续航里程预测

随着新能源汽车的普及,续航里程成为消费者关注的重要指标。准确预测新能源汽车的续航里程,有助于车企优化电池管理系统、提升车辆性能,也能帮助消费者合理规划出行。本案例将基于新能源汽车的各项参数,如电池容量、行驶速度、环境温度等,构建续航里程预测模型。通过以上改进,可以提高数据处理的准确性、模型的性能和可视化的效果。

daqsdfas的博客 1588

spark商品协同过滤

思路 首先,介绍一下传统的商品协同过滤思路: 获取一段周期内用户-商品交互历史数据记录; 根据交互历史记录,计算两两商品相似度,得到商品相似度矩阵; 根据用户的历史交互商品列表,从商品相似度矩阵中查询每一个商品的相似商品列表,按照相似度排序(出现多次的得分相加),得到最终推荐结果。 转换为spark的思想去考虑,则实现步骤应如下: 获取一段周期内用户-商品交互历史RDD,(wid, gid) 计算用户交互过的所有商品的两两相似度,得到 ((gid1, gid2), score) 根据用户最近交互的n

Lay_ZRS的博客 2080

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

spark推荐系统和协同过滤

而协同过滤算法则是基于用户的行为数据,通过分析用户与物品的历史关系,找出具有相似行为特征的用户或物品,从而进行推荐。推荐系统是一种信息过滤系统,通过分析用户的行为、偏好和个人信息,将最相关、最有用的信息或商品推荐给用户,以提高用户的满意度和体验。基于用户的协同过滤算法是根据用户的历史行为数据,找出具有相似行为特征的用户,将这些用户喜欢的物品推荐给目标用户。基于物品的协同过滤算法是根据用户的历史行为数据,找出用户之间喜欢的相似物品,将这些相似物品推荐给目标用户。)根据这些物品的相似物品,计算推荐物品的得分。

互联网知识分享 1000

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Spark 机器学习——协同过滤ALS算法

@羲凡——只为了更好的活着 Spark 机器学习——ALS算法 1.什么是ALS算法? ALS是交替最小二乘法(Alternate Least Square),其中LS是大家最熟知的最小二乘法(Least Square),所以ALS和最小二乘法脱不了干系。百度上的解释,(在矩阵分解(matrix factorization)中使用的一种算法。有一个稀疏矩阵,假设这个矩阵是低阶的,可以分解成两个小矩...

@羲凡—只为更好的活着 880

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Spark ML 协同过滤算法

1 什么是协同过滤 协同过滤是利用集体智慧的一个典型方法。要理解什么是协同过滤 (Collaborative Filtering, 简称 CF),首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐, 而我们一般更倾向于从口味比较类似的朋友那里得到推荐。这就是协同过滤的核心思想。 换句话说,就是借鉴和你相关人群的...

yang灬仔 4176

Spark MLlib之协同过滤

什么是协同过滤 协同过滤(Collaborative Filtering, 简称CF),wiki上的定义是:简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐使用者感兴趣的资讯,个人透过合作的机制给予资讯相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选资讯,回应不一定局限于特别感兴趣的,特别不感兴趣资讯的纪录也相当重要。 以上定义太拗口,举个简单的例子:我现在多

qiezikuaichuan的专栏 701
上一篇: [Spark]-LSH局部敏感哈希
下一篇: 机器学习预备知识
Code_LT
博客等级 码龄10年 307粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值