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.主要概念

Spark学习之路——9.Spark ML

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主要是针对文本处理

Spark学习之路——9.Spark ML

①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)特征选择

Spark学习之路——9.Spark ML

①简介(转载于 https://blog.csdn.net/qq_33876194/article/details/88403394

 

    一个典型的机器学习任务,是通过样本的特征来预测样本所对应的值。如果样本的特征少,我们会考虑增加特征,比如Polynomial Regression就是典型的增加特征的算法。而现实中的情况往往是特征太多了,需要减少一些特征。

    首先“无关特征”(irrelevant feature)。比如,通过空气的湿度,环境的温度,风力和当地人的男女比例来预测明天是否会下雨,其中男女比例就是典型的无关特征。

    其实“多于特征”(redundant feature),比如,通过房屋的面积,卧室的面积,车库的面积,所在城市的消费水平,所在城市的税收水平等特征来预测房价,那么消费水平(或税收水平)就是多余特征。证据表明,税收水平和消费水平存在相关性,我们只需要其中一个特征就足够了,因为另一个能从其中一个推演出来。(若是线性相关,则用线性模型做回归时会出现多重共线性问题,将会导致过拟合)。

    减少特征具有重要的现实意义,不仅减少过拟合、减少特征数量(降维)、提高模型泛化能力,而且还可以使模型获得更好的解释性,增强对特征和特征值之间的理解,加快模型的训练速度,一般的,还会获得更好的性能。问题是,在面对未知领域时,很难有足够的认识去判断特征与目标之间的相关性,特征与特征之间的相关性。这时候就需要用一些数学或工程上的方法来帮助我们更好地进行特征选择。

 

特征选择方法和分类方法一样,也主要分为有监督(Supervised)和无监督(Unsupervised)两种,卡方选择(ChiSqSeclector)则是统计学上常用的一种有监督特征选择方法,它通过对特征和真实标签之间进行卡方检验,来判断该特征和真实标签的关联程度,进而确定是否对其进行选择。

三、Spark应用机器学习算法

Spark学习之路——9.Spark ML

相关内容可以从下面网址进行了解学习。

 

分类、回归

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