格物汇此前发布的《网红——工业大数据处理领域的Apache Spark》提到,在《中国制造2025》的技术路线图中,将工业大数据规划为重要突破点,并在未来十年,以数据为核心构建的智能系统将成为支撑智能制造和工业互联网的核心驱动力,Apache Spark作为新一代轻量级大数据快速处理平台,集成了与大数据相关的各种能力,是理解大数据的首选,Spark有一个专门用来解决海量数据高效挖掘问题的机器学习组件,那就是SparkMLlib组件,今天格物汇就给大家详细介绍一下Spark MLlib。
Spark MLlip天然适合迭代计算
在介绍Spark MLlib组件之前,我们先了解一下机器学习的定义。机器学习在维基百科中的定义如下:
机器学习是人工智能的科学。该领域的主要研究对象是人工智能,特别是如何在实证学习中提高特定算法的性能。
机器学习是对通过经验自动改进的计算机算法的研究。
机器学习使用数据或过去的经验来优化计算机程序的性能。
显然,机器学习的重点之一就是“经验”。对于计算机来说,经验是通过执行多次迭代计算来获得的。 Spark基于内存的计算模型天生擅长迭代计算,多步计算直接在内存中进行。中间完成后,磁盘和网络只会在必要时进行操作,因此Spark是机器学习的理想平台。 Spark官方主页展示了Logistic回归算法在Spark和Hadoop中运行的性能对比,如下图所示。
Spark MLlib 算法和函数
MLlib由一些通用学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,以及底层优化原语和高级管道API。具体来说,主要包括以下内容:
回归
线性回归
广义线性
决策树
随机森林
梯度提升树
生存
等渗
分类
逻辑回归(逻辑回归、二元回归和多酚回归)
决策树
随机森林
梯度提升树
多层感知器
线性支持向量机
一对多
朴素贝叶斯
聚类
K-均值
潜在狄利克雷分布(LDA)
二分K均值
高斯混合模型
协同过滤
特征工程(特征化)
特征工程(特征化)
特征提取
转变
降维
选择
管道
组合管道
构建、评估和调整机器学习管道
坚持
将算法、模型和管道保存到持久存储以供以后使用
从持久存储加载算法、模型和管道
公用事业
线性代数
统计数据
数据处理
其他
综上所述,可以看出Spark在机器学习方面发展得比较快,目前支持主流的统计和机器学习算法。
Spark MLlib API 更改
Spark MLlib 组件自Spark 版本1.2: 起具有两套机器学习API
基于RDD的机器学习APIspark.mllib是Spark原始的机器学习API,在Spark 1.0之前的版本中已经存在。
Spark.ml提供了基于DataFrame的高层API,并引入了PipLine,它可以为用户提供基于DataFrame的机器学习流式API套件。
从Spark 2.0版本开始,spark mllib已进入维护模式,将不再更新。当spark.ml API足够成熟以取代spark.mllib时,它将被弃用。
那么为什么Spark 从基于RDD 的API 切换到基于DataFrame 的API 呢?原因有以下三个:
首先,相比spark.mllib,spark.ml的API更加通用灵活,也更加人性化。 Spark.ml对DataFrame的抽象层次较高,数据与操作之间的耦合度较低;
无论是什么模型,spark.ml都提供了统一的算法操作接口。例如,对于模型训练,会调用fit方法。但是spark.mllib中不同的模型会有不同的trainXXX;
受scikit-learn的Pipeline概念的启发,spark.ml引入了pipeline和sklearn,它可以将许多操作(算法/特征提取/特征转换)以管道的形式串在一起,使工作流程变得更加简单。
如今,工业互联网快速发展,企业往往存储TB级甚至更大的数据。面对海量数据有效快速地进行数据挖掘的困难,Spark提供了MLlib组件,该组件利用了Spark内存计算和适合迭代计算的优势,并提供了用户友好的API,让用户能够轻松快速处理海量数据挖掘问题,加速工业大数据价值的实现。作为TCL集团孵化的创新科技公司,格创东智致力于将大数据、人工智能、云计算等包括Spark在内的前沿技术与制造业经验深度融合,打造行业领先的“制造x”工业互联网平台。未来随着Spark社区在AI领域不断发力,相信Spark MLlib组件的性能会越来越出色。
本文作者:黄欢,格创东智大数据工程师(转载请注明作者和出处)