学习笔记Spark(十)—— Spark MLlib应用(2)—— Spark MLlib应用
三、Spark MLlib应用
3.1、Spark ML线性模型
数据准备
基于Spark ML的线性模型需要DataFrame类型的模型数据,DataFrame需要包含:一列标签列,一列由多个特征合并得到的特征列训练模型
模型应用
模型评估
任务1:
某专门面向年轻人制作肖像的公司计划在国内再开设几家分店,收集了目前已开设的分店的销售数据(Y,万元)及分店所在城市的16岁以下人数(X1,万人)、人均可支配收入(X2,元)
要求:构建线性回归模型,分析销售数据与16岁以下人数(X1,万人)、人均可支配收入(X2,元)的关系
数据 regressiondata.txt:
上传到hdfs:
处理线性回归模型数据:
构建线性回归模型:
预测:
均方误差:
3.2、协同过滤简介
- 协同过滤推荐(Collaborative Filtering recommendation)是一项在信息过滤和信息系统中很受欢迎的技术。与传统的基于内容过滤直接分析内容进行推荐不同,协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度预测。
- 协同过滤一般分为基于用户的协同过滤和基于物品的协同过滤。基于用户的协同过滤是依据用户之间的相似性,将相似性高的用户对于某种物品的喜好进行计算,从而推测指定用户对于该物品的喜好
3.2.1、基于用户的协同过滤
小明和小丽都喜欢A、C,说明小明小丽兴趣比较相似,可把小明喜欢的B推荐给小丽,小丽喜欢的D推荐给小明
3.2.2、基于物品的协同过滤
小明喜欢A、B和C,小丽喜欢A、C和D,小张喜欢B、E和F。观察三人拥有的物品,可以知道拥有A的也拥有C,可知A、C的关联程度很高,即A、C相似度很高。如果此时指定用户已经拥有A,显然应该把C推荐给该用户最合适。
3.2.3、基于ALS的协同过滤
从协同过滤的分类来说,ALS算法属于User-Item CF,也叫做混合CF。它同时考虑了User和Item两个方面。
ALS是交替最小二乘的简称。在机器学习中,ALS特指使用交替最小二乘求解的一个协同过滤算法。它通过观察到的所有用户给产品的打分,来推断每个用户的喜好并向用户推荐适合的产品。
ALS算法不像基于用户或者基于物品的协同过滤算法一样,通过计算相似度来进行评分预测和推荐,而是通过矩阵分解的方法来进行预测用户对物品的评分。
3.3、Spark ML ALS
官网:http://spark.apache.org/docs/latest/ml-features.html#vectorindexer
- 数据准备
需要3个列,用户列、物品列、评分列 - 模型构建
- 模型应用
- 模型评估
任务2:
现有一份数据,记录了用户对电影的评分,如下所示,包括用户id、电影id、评分。
要求:根据用户的电影评分记录,通过协同过滤算法计算用户之间的相似度,为用户进行电影推荐。
数据 sample_movielens_data.txt:
上传到hdfs:
构建ALS算法进行电影推荐:
预测:
均方误差:
给参与用户推荐:
给参与模型构建的商品推荐相似商品:
3.4、在IDEA实现ALS
在IDEA创建Spark工程见我博客:学习笔记Spark(五)—— 配置Spark IDEA开发环境
3.4.1、实现ALS数据处理过程
3.4.2、实现ALS模型构建过程
3.4.3、实现ALS预测与评估过程
3.4.4、实现ALS模型推荐过程
3.4.5、提交ALS电影推荐模型到集群
① 将程序打包成jar包,并上传到linux的/opt
目录下
② spark-submit提交到集群
推荐结果记录:
学习笔记Spark(十)—— Spark MLlib应用(2)—— Spark MLlib应用相关推荐
- JSP学习笔记(四十九):抛弃POI,使用iText生成Word文档
POI操作excel的确很优秀,操作word的功能却不敢令人恭维.我们可以利用iText生成rtf文档,扩展名使用doc即可. 使用iText生成rtf,除了iText的包外,还需要额外的一个支持rt ...
- tensorflow学习笔记(三十二):conv2d_transpose (解卷积)
tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...
- JavaScript学习笔记(十)——学习心得与经验小结
JavaScript学习笔记(十)--学习心得与经验小结 目前我先列好提纲,利用每晚和周末的闲暇时间,将逐步写完 ^_^ 转载于:https://www.cnblogs.com/mixer/archi ...
- 爬虫学习笔记(十二)—— scrapy-redis(一):基本使用、介绍
文章目录 一.分布式概念和作用 二.Scrapy-redis 2.1.redis的安装与使用 2.2.Redis Desktop Manager下载 2.3.特点和架构 2.4.安装和使用 2.5.r ...
- 学习笔记(十五)——MySQL(查询)
查询方法 下面的查询都是对单表的查询,所以先创建表tb1(下面的tb1均代表此表) create table tb1(id int,name varchar(10),age int,class var ...
- OpenCV学习笔记(十六)——CamShift研究 OpenCV学习笔记(十七)——运动分析和物体跟踪Video OpenCV学习笔记(十八)——图像的各种变换(cvtColor*+)imgproc
OpenCV学习笔记(十六)--CamShift研究 CamShitf算法,即Continuously Apative Mean-Shift算法,基本思想就是对视频图像的多帧进行MeanShift运算 ...
- Windows保护模式学习笔记(十四)—— 阶段测试
Windows保护模式学习笔记(十四)-- 阶段测试 题目一 解题步骤 题目二 解题步骤 题目一 描述:给定一个线性地址,和长度,读取内容 int ReadMemory(OUT BYTE* buffe ...
- Windows保护模式学习笔记(十二)—— 控制寄存器
Windows保护模式学习笔记(十二)-- 控制寄存器 控制寄存器 Cr0寄存器 Cr2寄存器 Cr4寄存器 控制寄存器 描述: 控制寄存器有五个,分别是:Cr0 Cr1 Cr2 Cr3 Cr4 Cr ...
- Windows保护模式学习笔记(十)—— TLB
Windows保护模式学习笔记(十)-- TLB 地址解析 10-10-12分页 2-9-9-12分页 TLB TLB结构 TLB种类 练习1:体验TLB的存在 第一步:运行代码 第二步:设置中断门描 ...
- JavaScript学习笔记(十五)
JavaScript学习笔记(十五) 事件 事件是DOM(文档对象模型)的一部分.事件流就是事件发生顺序,这是IE和其他浏览器在事件支持上的主要差别. 一.事件流 1.冒泡型事件 IE上的解决方案就是 ...
最新文章
- 守护进程中创建的对象php,在PHP中生成守护进程(Daemon Process)
- 052、overlay如何实现跨主机通信?(2019-03-19 周二)
- 线程池默认多少个线程_我需要多少个线程?
- Spring Boot和Spring Data REST –通过REST公开存储库
- python字符串怎么表示_python中字符串的几种表达方式(用什么方式表示字符串)...
- 让这家有12万名员工、1.7万种产品的钢铁厂平滑上云的黑科技是什么?
- 带货造假,买完不能换货?李佳琦、汪涵、李雪琴直播被中消协点名后这样回应...
- #CSP 201509-1 数列分段(100分)
- js处理服务器传递的json文件,获取js 文件传递的参数并使用json2进行json数据转换...
- PHP获取真实客户端的真实IP REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR
- 固态硬盘故障检测_有哪些好用的检测软件是用于判断固态硬盘故障的?
- paip.一千 常用汉字 高频汉字 覆盖率90%
- Java入门基础知识点总结(详细篇)
- 初中七年级上计算机试题答案,初中信息技术考试试题(含答案).docx
- 朗文3000词汇表带音标_朗文少儿英语2A-Unit3知识归纳(单词含音标版
- CSDN2018博客之星评选结果预测第二弹
- 【C/C++】输入一个整数的二目运算式的字符串,如100+20,332-19,200*2333,44/33二目运算取”加减乘除“中的一种输出运算式的整数结果值
- 有什么哪些便宜的云服务器推荐?
- 傅里叶级数FS,连续时间傅里叶变换CTFT,离散时间傅里叶变换DTFT,离散傅里叶变换DFT,推导与联系(一)
- 计算机末端网络,计算机线缆末端的圆球是什么?