学习 Spark MLlib(一):概览

Spark MLlib 是基于 Spark 的机器学习组件,包括两个包:

  • ml 基于 DataFrame 的 API
  • mllib 基于 RDD 的 API,处于维护模式

对比其它机器学习库,例如 scikit-learn,Spark MLlib 是一个分布式的机器学习库。

首先,Spark MLlib 可以用于数据预处理和特征工程,生成训练集、验证集合测试集。其次,Spark MLlib 解决了单台机器无法存储和训练模型的问题。

机器学习流程

通常的机器学习流程如下图所示:

ML Pipeline

第一步,数据采集。从数据源获取用于训练的原始数据集。

第二步,数据预处理,包括数据清洗和特征工程。

数据清洗:使用探索式数据分析理解数据的分布、关联等细节,通过剔除异常值填充缺失值等操作,完成数据清洗。

特征工程:将数据集转化为适合于机器学习算法的形式,通常意为数值化特征。

第三步,模型训练。使用训练集训练模型。

第四步,调优。使用验证集测试不同版本的模型,调整模型参数。

第五步,评估。使用测试集评估不同版本的模型,选择最优模型。

Pipeline

Spark MLlib 将机器学习流程抽象为 Pipeline 概念,在 DataFrame API 之上,标准化了机器学习算法 API。

下面是 Pipeline 的主要组件:

  • Transformer 将一个 DataFrame 转换为另一个 DataFrame。

  • Estimator 训练一个 DataFrame 并产生一个 Transformer。

  • Pipeline 将多个 Transformer 和 Estimator 组合在一起构建成一个 ML 工作流。