学习 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 工作流。