Spark MLLib简介
MLlib作为Spark的机器学习库,提供了非常丰富的机器学习算法,比如分类、回归、聚类及推荐算法等。目前,MLlib分为两个代码包:spark.mllib与spark.ml。
spark.mllib
Spark MLlib是Spark的重要组成部分,是最初提供的一个机器学习库。这
个库有一个明显的缺点,就是面对复杂的数据集,需要做多次处理,或者
当需要对新数据结合多个已经训练好的单个模型进行综合计算时,使用
Spark MLlib会使程序结构变得复杂,甚至难以实现。
spark.mllib是基于RDD的原始算法API,目前处于维护状态。该库下包含4
类常见的机器学习算法:分类、回归、聚类、协同过滤。值得注意的是,
基于RDD的API不会再添加新的功能。
spark.ml
Spark1.2版本引入了ML Pipeline,经过多个版本的发展,Spark ML克服
了MLlib处理机器学习问题的一些不足(复杂、流程不清晰),向用户提
供了基于DataFrame API的机器学习库,提升数据处理效率。
与RDD相比,DataFrame提供了更加友好的API。DataFrame的优势,包
括Spark数据源,SQL / DataFrame查询,Tungsten和Catalyst优化以及跨
语言的统一API。
Spark ML API提供了很多数据特征处理函数,如特征选取、特征转换、类
别数值化、正则化、降维等。另外基于DataFrame API的ml库支持构建机
器学习的Pipeline,把机器学习过程一些任务有序地组织在一起,便于运
行和迁移。
比如说,在数据变换上,Spark ML中提供了非常丰富的数据转换算法,
对数据进行规范化、离散化、衍生指标等;在数据规约上,Spark ML提
供的特征选择和降维的方法。
关于大数据学习,Spark MLlib入门,以上就为大家做了简单的介绍了。
大数据学习是一个循序渐进的过程,Spark生态圈也是重要的学习内容,
一个组件一个组件地深入,慢慢来。
Spark中ml和mllib的主要区别和联系如下:
ml和mllib都是Spark中的机器学习库,目前常用的机器学习功能2个库都
能满足需求。
spark官方推荐使用ml, 因为ml功能更全面更灵活,未来会主要支持ml,
mllib很有可能会被废弃(据说可能是在spark3.0中deprecated)。
ml主要操作的是DataFrame, 而mllib操作的是RDD,也就是说二者面向的
数据集不一样。相比于mllib在RDD提供的基础操作,ml在DataFrame上
的抽象级别更高,数据和操作耦合度更低。
DataFrame和RDD什么关系?DataFrame是Dataset的子集,也就是
Dataset[Row], 而DataSet是对RDD的封装,对SQL之类的操作做了很多
优化。
相比于mllib在RDD提供的基础操作,ml在DataFrame上的抽象级别更
高,数据和操作耦合度更低。
ml中的操作可以使用pipeline, 跟sklearn一样,可以把很多操作(算法/特征
提取/特征转换)以管道的形式串起来,然后让数据在这个管道中流动。大
家可以脑补一下Linux管道在做任务组合时有多么方便。
ml中无论是什么模型,都提供了统一的算法操作接口,比如模型训练都是
fit;不像mllib中不同模型会有各种各样的trainXXX。
mllib在spark2.0之后进入维护状态, 这个状态通常只修复BUG不增加新功
能。
以上就是ml和mllib的主要异同点。下面是ml和mllib逻辑回归的例子,可以
对比看一下, 虽然都是模型训练和预测,但是画风很不一样。
|