三、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应用相关推荐

  1. JSP学习笔记(四十九):抛弃POI,使用iText生成Word文档

    POI操作excel的确很优秀,操作word的功能却不敢令人恭维.我们可以利用iText生成rtf文档,扩展名使用doc即可. 使用iText生成rtf,除了iText的包外,还需要额外的一个支持rt ...

  2. tensorflow学习笔记(三十二):conv2d_transpose (解卷积)

    tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...

  3. JavaScript学习笔记(十)——学习心得与经验小结

    JavaScript学习笔记(十)--学习心得与经验小结 目前我先列好提纲,利用每晚和周末的闲暇时间,将逐步写完 ^_^ 转载于:https://www.cnblogs.com/mixer/archi ...

  4. 爬虫学习笔记(十二)—— scrapy-redis(一):基本使用、介绍

    文章目录 一.分布式概念和作用 二.Scrapy-redis 2.1.redis的安装与使用 2.2.Redis Desktop Manager下载 2.3.特点和架构 2.4.安装和使用 2.5.r ...

  5. 学习笔记(十五)——MySQL(查询)

    查询方法 下面的查询都是对单表的查询,所以先创建表tb1(下面的tb1均代表此表) create table tb1(id int,name varchar(10),age int,class var ...

  6. OpenCV学习笔记(十六)——CamShift研究 OpenCV学习笔记(十七)——运动分析和物体跟踪Video OpenCV学习笔记(十八)——图像的各种变换(cvtColor*+)imgproc

    OpenCV学习笔记(十六)--CamShift研究 CamShitf算法,即Continuously Apative Mean-Shift算法,基本思想就是对视频图像的多帧进行MeanShift运算 ...

  7. Windows保护模式学习笔记(十四)—— 阶段测试

    Windows保护模式学习笔记(十四)-- 阶段测试 题目一 解题步骤 题目二 解题步骤 题目一 描述:给定一个线性地址,和长度,读取内容 int ReadMemory(OUT BYTE* buffe ...

  8. Windows保护模式学习笔记(十二)—— 控制寄存器

    Windows保护模式学习笔记(十二)-- 控制寄存器 控制寄存器 Cr0寄存器 Cr2寄存器 Cr4寄存器 控制寄存器 描述: 控制寄存器有五个,分别是:Cr0 Cr1 Cr2 Cr3 Cr4 Cr ...

  9. Windows保护模式学习笔记(十)—— TLB

    Windows保护模式学习笔记(十)-- TLB 地址解析 10-10-12分页 2-9-9-12分页 TLB TLB结构 TLB种类 练习1:体验TLB的存在 第一步:运行代码 第二步:设置中断门描 ...

  10. JavaScript学习笔记(十五)

    JavaScript学习笔记(十五) 事件 事件是DOM(文档对象模型)的一部分.事件流就是事件发生顺序,这是IE和其他浏览器在事件支持上的主要差别. 一.事件流 1.冒泡型事件 IE上的解决方案就是 ...

最新文章

  1. 守护进程中创建的对象php,在PHP中生成守护进程(Daemon Process)
  2. 052、overlay如何实现跨主机通信?(2019-03-19 周二)
  3. 线程池默认多少个线程_我需要多少个线程?
  4. Spring Boot和Spring Data REST –通过REST公开存储库
  5. python字符串怎么表示_python中字符串的几种表达方式(用什么方式表示字符串)...
  6. 让这家有12万名员工、1.7万种产品的钢铁厂平滑上云的黑科技是什么?
  7. 带货造假,买完不能换货?李佳琦、汪涵、李雪琴直播被中消协点名后这样回应...
  8. #CSP 201509-1 数列分段(100分)
  9. js处理服务器传递的json文件,获取js 文件传递的参数并使用json2进行json数据转换...
  10. PHP获取真实客户端的真实IP REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR
  11. 固态硬盘故障检测_有哪些好用的检测软件是用于判断固态硬盘故障的?
  12. paip.一千 常用汉字 高频汉字 覆盖率90%
  13. Java入门基础知识点总结(详细篇)
  14. 初中七年级上计算机试题答案,初中信息技术考试试题(含答案).docx
  15. 朗文3000词汇表带音标_朗文少儿英语2A-Unit3知识归纳(单词含音标版
  16. CSDN2018博客之星评选结果预测第二弹
  17. 【C/C++】输入一个整数的二目运算式的字符串,如100+20,332-19,200*2333,44/33二目运算取”加减乘除“中的一种输出运算式的整数结果值
  18. 有什么哪些便宜的云服务器推荐?
  19. 傅里叶级数FS,连续时间傅里叶变换CTFT,离散时间傅里叶变换DTFT,离散傅里叶变换DFT,推导与联系(一)
  20. 计算机末端网络,计算机线缆末端的圆球是什么?

热门文章

  1. 二级list列表python_Python 基本语法(二) —— 列表 (list)
  2. 判断二叉树是否是平衡二叉树(dp tree)
  3. 强化学习(四)---基于模型动态规划问题
  4. 概率统计笔记:贝叶斯推断 Bayesian Inference
  5. MATLAB从入门到精通:MATLAB矩阵操作
  6. 产品运营必须知道的几个概念,什么是用户群体?
  7. 强化学习(十三) 策略梯度(Policy Gradient)
  8. 拉格朗日插值法的MATLAB源程序
  9. 数据挖掘学习笔记之人工神经网络(二)
  10. matlab reshape使用