Spark学习之路——9.Spark ML
一、简介
基于RDD的API spark.mllib已进入维护模式。
Spark ML是Spark MLlib的一种新的API,它有下面的优点:
1.面向DataFrame,基于RDD进一步封装,拥有功能更多的API
2.具有Pipeline功能,可以实现复杂的机器学习模型
3.性能得到提升
二、ML Pipeline
一个pipeline 在结构上会包含一个或多个Stage,每一个 Stage 都会完成一个任务,如数据集处理转化,模型训练,参数设置或数据预测等,这样的Stage 在 ML 里按照处理问题类型的不同都有相应 的定义和实现。两个主要的stage为Transformer和Estimator。
1.主要概念
Pipeline通过将多个Transformers和Estimators连接起来组合成一个机器学习工作流程。
(1)DataFrame:数据源,可以容纳多种数据类型。
(2)Transformer:是可以将一个DataFrame变换成另一个DataFrame的算法。例如,一个训练好的模型是一个Transformer,通过transform方法,将原始DataFrame转化为一个包含预测值的DataFrame。
(3)Estimator:是一个算法,接受一个DataFrame,产生一个Transformer。例如,一个学习算法(如PCA,SVM)是一个Estimator,通过fit方法,训练DataFrame并产生模型Transformer。
示例:
http://spark.apache.org/docs/latest/ml-pipeline.html#example-estimator-transformer-and-param
2.流水线式工作
从数据收集开始至 输出我们需要的最终结果,需要多个步骤进行抽象建模,对使用spark机器学习算法的用户来说,流水线式机器 学习比单个步骤独立建模更加高效、易用。
(1)源数据ETL
描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
(2)数据预处理
(3)特征提取
(4)模型的训练和验证
pipeline示例:
http://spark.apache.org/docs/latest/ml-pipeline.html#example-pipeline
3.数据处理
http://spark.apache.org/docs/latest/ml-features.html
(1)特征处理
目的是将数据数字化,处理为可用于算法的向量。
API主要是针对文本处理
①TF-IDF
示例学习:
需要语料库来进行训练,如果一个词出现在所有的语料文件中,其IDF值变为0。
http://lxw1234.com/archives/2016/01/605.htm
②Word2vec
由谷歌发布开源的自然语言处理算法,其目的是把words转换成vectors,从而可以用数学的方法来分析words之间的关系。Spark其该算法进行了封装,并在 mllib 中实现。
Word2vec是一个Estimator,它采用一系列代表文档的词语来训练word2vecmodel。该模型将每 个词语映射到一个固定大小的向量。word2vecmodel使用文档中每个词语的平均数来将文档转换为向 量,然后这个向量可以作为预测的特征。
③CountVectorizer
Countvectorizer 和 Countvectorizermodel 旨在通过计数来将一个文档转换为向量。
(2)特征转换
目的是让它成为有效的特征,因为原始数据中存在很多的脏数据和无用数据。常用的方法是标准化、归一化、特征的离散化等。
特征转换的例子在上面都有,可以去学习一下。
http://spark.apache.org/docs/latest/ml-features.html#feature-transformers
(3)特征选择
①简介(转载于 https://blog.csdn.net/qq_33876194/article/details/88403394)
一个典型的机器学习任务,是通过样本的特征来预测样本所对应的值。如果样本的特征少,我们会考虑增加特征,比如Polynomial Regression就是典型的增加特征的算法。而现实中的情况往往是特征太多了,需要减少一些特征。
首先“无关特征”(irrelevant feature)。比如,通过空气的湿度,环境的温度,风力和当地人的男女比例来预测明天是否会下雨,其中男女比例就是典型的无关特征。
其实“多于特征”(redundant feature),比如,通过房屋的面积,卧室的面积,车库的面积,所在城市的消费水平,所在城市的税收水平等特征来预测房价,那么消费水平(或税收水平)就是多余特征。证据表明,税收水平和消费水平存在相关性,我们只需要其中一个特征就足够了,因为另一个能从其中一个推演出来。(若是线性相关,则用线性模型做回归时会出现多重共线性问题,将会导致过拟合)。
减少特征具有重要的现实意义,不仅减少过拟合、减少特征数量(降维)、提高模型泛化能力,而且还可以使模型获得更好的解释性,增强对特征和特征值之间的理解,加快模型的训练速度,一般的,还会获得更好的性能。问题是,在面对未知领域时,很难有足够的认识去判断特征与目标之间的相关性,特征与特征之间的相关性。这时候就需要用一些数学或工程上的方法来帮助我们更好地进行特征选择。
特征选择方法和分类方法一样,也主要分为有监督(Supervised)和无监督(Unsupervised)两种,卡方选择(ChiSqSeclector)则是统计学上常用的一种有监督特征选择方法,它通过对特征和真实标签之间进行卡方检验,来判断该特征和真实标签的关联程度,进而确定是否对其进行选择。
三、Spark应用机器学习算法
相关内容可以从下面网址进行了解学习。
分类、回归 |
http://spark.apache.org/docs/latest/ml-classification-regression.html |
聚类 |
http://spark.apache.org/docs/latest/ml-clustering.html |
协同过滤 |
http://spark.apache.org/docs/latest/ml-collaborative-filtering.html |
频繁模式挖掘 |
http://spark.apache.org/docs/latest/ml-frequent-pattern-mining.html |
神经网络(多层感知分类器) |
https://www.cnblogs.com/mstk/p/7245832.html |
Spark学习之路——9.Spark ML相关推荐
- Spark学习之路一——Spark基础及环境搭建
Spark学习之路一--Spark基础及环境搭建 文章目录 一. Spark 概述 1.1 概述 1.2 优势特性 1.2.1 运行速度快 1.2.2 容易使用 1.2.3 通用性 1.2.4 运行模 ...
- Spark学习之路——8.Spark MLlib
MLlib的官网文档: http://spark.apache.org/docs/latest/ml-guide.html 本节主要内容: 一.MLlib简述 二.基本数据类型 三.汇总统计 四.实例 ...
- Spark学习之路 (二)Spark2.3 HA集群的分布式安装
<2021年最新版大数据面试题全面开启更新> 欢迎关注github<大数据成神之路> 目录 一.下载Spark安装包 1.从官网下载 2.从微软的镜像站下载 3.从清华的镜像站 ...
- Spark学习之路 (二十二)SparkStreaming的官方文档
讨论QQ:1586558083 目录 一.简介 1.1 概述 1.2 一个小栗子 2.2 初始化StreamingContext 2.3 离散数据流 (DStreams) 2.4 输入DStream和 ...
- Spark学习之路 (五)Spark伪分布式安装
一.JDK的安装 JDK使用root用户安装 1.1 上传安装包并解压 [root@hadoop1 soft]# tar -zxvf jdk-8u73-linux-x64.tar.gz -C /usr ...
- Spark学习之路---Spark核心概念
Spark核心概念简介 一个Spark应用都由驱动器程序发起集群上的各种并发操作,一个驱动器程序一般包含多个执行器节点,驱动器程序通过一个SaprkContext对象访问saprk.RDD(弹性分布式 ...
- Spark学习之路 (二十三)SparkStreaming的官方文档
一.SparkCore.SparkSQL和SparkStreaming的类似之处 二.SparkStreaming的运行流程 2.1 图解说明 2.2 文字解说 1.我们在集群中的其中一台机器上提交我 ...
- Spark学习(一) -- Spark安装及简介
标签(空格分隔): Spark 学习中的知识点:函数式编程.泛型编程.面向对象.并行编程. 任何工具的产生都会涉及这几个问题: 现实问题是什么? 理论模型的提出. 工程实现. 思考: 数据规模达到一台 ...
- Spark高手之路1—Spark简介
文章目录 Spark 概述 1. Spark 是什么 2. Spark与Hadoop比较 2.1 从时间节点上来看 2.2 从功能上来看 3. Spark Or Hadoop 4. Spark 4.1 ...
- Spark学习(四) -- Spark作业提交
标签(空格分隔): Spark 作业提交 先回顾一下WordCount的过程: sc.textFile("README.rd").flatMap(line => line.s ...
最新文章
- Science论文:诺奖经济学家的经典决策模型,被AI挑战
- WIN 7下绑定网关MAC地址
- 制作 ramdisk.img,使用cpio 和 gzip
- NOIP2018 赛前集训总结反思
- java accessablity_java连接access数据库----简单demo
- virtualbox php mac,mac一体机通过Oracle VM VirtualBox装win8.1系统
- win8下cocos2dx3.2移植android平台及代码打包APK
- 微软 MVP 福利大赏
- .NET架构开发应知应会
- python package安装包_安装Python包(第三方库)
- 四川中职计算机专业考的学校,四川中职学校哪家专业
- Python文档自动生成器
- 【转】61条面向对象设计的经验原则
- ❤️1000道《计算机基础知识》汇总上----(建议收藏)❤️
- HDFS中NameNode和DataNode的作用
- 2017年数学建模大赛A题剖析(第一问求解间距思路分析)
- 历史记录---4月6日
- 物权法全文内容有哪些呢-广告外链_网站SEO优化中,关键词内链与外链如何规划?...
- 75个最佳网络安全工具
- 高斯函数的半高全宽(FWHM)与标准差(或者说均方根误差)的关系