人工智能时代前沿技术社区

首页 > 人工智能 > 热点

大数据机器学习库spark mllib基础及应用案例

spark mllib是机器学习领域中非常著名的一个机器学习库,是Apache Spark中的组件之一,专注于机器学习。MLlib是Spark中的核心机器学习库,由AMPLab实验室的Ml团队开发,其中代码贡献者超过80位,可支持Scala、Python、Java和R语音。

作者:谭盼雨 | 2017-09-25 11:35:40 | 来源:飞马网

近日,飞马网邀请业内资深大数据研发专家董西成为大家在线讲解了大数据机器学习库spark mllib基础及应用案例。

董西成告诉我们,机器学习是最近二十多年兴起的一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动学习的算法。即从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。

机器学习技术是人工智能时代非常重要的技术手段,在多领域都有广泛的运用,比如工业过程控制、信息安全、生物信息学、计算金融学等。目前,机器学习已经有了十分广泛的应用,如数据挖掘、计算机视觉、自然语言处理、生物特征是吧、搜索引擎、医学诊断等。

而spark mllib是机器学习领域中非常著名的一个机器学习库,是Apache Spark中的组件之一,专注于机器学习。MLlib是Spark中的核心机器学习库,由AMPLab实验室的Ml团队开发,其中代码贡献者超过80位,可支持Scala、Python、Java和R语音。

MLlib优势

* Scalability。扩展性好,可以将基于 mllib的机器学习运行在多个机器上,可做线性扩展,这是很多传统机器学习库无法做到的。

* Performance。性能好,可利用并行化多机进行加速,而很多其他的都是单机的。

* User-friendly documentation and APls。友好的文档和API,使用户学起来非常容易。

* Cost of maintenance。由于mllib是非常火的一款开源软件,因此当用户在使用过程中遇到了困惑,可以很容易地在网上找到相关的解答分析。

4.png

图(1)

为了让大家更加清楚mllib的优势所在,董西成用了一张实验图非常形象地为我们做了说明。通过实验从性能方面对比了在大数据领域非常主流的两大机器学习库:MLlib和Mahout。

实验是:我们在6.6亿的用户里做了一个ALS算法(即矩阵分解算法),横轴代表用户数量、纵轴是运行时间。在试验中发现,发现随着用户量的增多,尽管mllib的增加比率要小于Mahout,但是Mahout在数据量达到一定程度的时候,运行速度极慢,甚至已经无法计算出结果。这也是为什么在大数据时代mllib的势头逐渐盖过Mahout的原因。

MLlib构成

作为Spark生态圈里的机器学习库,目前提供了两个算法包:

* Spark.mllib:包含原始API,构建在RDD之上;目前仍在继续更新,且目前包含更多(相比于Spark.ml)的算法。

* Spark.ml:基于Data构建的高级API,具备更优的性能和更好的扩展性,建议优先使用。

5.png

图(2)

紧接着,董老师为我们介绍了Spark mllib里面非常重要的概念:ML Pipeline(机器学习管道),据董老师解释,Pipeline是仿照Python版的机器学习库scikit-learn做的。机器学习管道是由一系列阶段构成,每个阶段是Transformer或Estimator,它们串联到一起安装顺序执行。

数据管道组件构成

* Transformer:算法可以把一个Data转换成另一个Data。

特征转换器(feature transformer):读取输入数据集中的一例(比如text),将产生新的特征列。

学些模型(learning model):将一个有特征的Data转换成一个有预测信息的Data。

* Estimator:是一种极其学习算法,会从输入数据中进行学习,并产生一个训练模型。

6.png

图(3)

7.png

图(4)

对于任意一个Transformer实现,里面都对应的有一个非常重要的方法Transforme,调用这个Transforme,就能把一个Data转化成另外一个新的Data。而所有的Estimator,对应方法是fit,通过调用fit,可以把Data转化成Transforme。

如图4,以上是Transformer和Estimator的实现,分别对应特征提取、特征转换和特征选择。

为了更方便大家理解,董老师为我们介绍了几个Transformer例子:

Ngram

其中Ngram是在特征工程阶段应用比较多的技术,Ngram中“N”代表着数字,如Ngram1、Ngram2、Ngram3......

图片1.png

独热编码

图片2.png

董老师不仅介绍了两个Transformer,而且也介绍了两个Estimator:StringIndexer、IDF。

MLLib机器学习库

4.png

基于Spark MLLib的应用有非常多,董老师以其中的一种为例,为我们做了接受:聚类算法。

常见的聚类算法有很多,而MLLib提供的聚类算法主要有以下四种:

一、K-means

・Input Columns

・Output Columns

・Example

二、Latent Dirichlet allocation(LDA)

三、Bisecting k-means

・Example

四、Gaussian Mixture Model(GMM)

・Input Columns

・Output Columns

・Example

最后,董西成告诉我们,Spark MLLib最经典的应用案例是用户画像和性别预测。随着Spark MLLib的开源与不断发展,相信未来Spark MLLib会被应用到越来越多的领域中。

【责任编辑:谭盼雨】