Spark机器学习库(MLlib)指南之1:简介
本帖最后由 xzc0202 于 2017-9-15 09:16 编辑问题向导:
(1)Spark机器学习库是什么,目标是什么?
(2)MLlib具体提供哪些功能?
(3)MLlib为什么要改用基于DataFrame的API?
static/image/hrline/4.gif
1.Spark机器学习库(MLlib)指南
MLlib是Spark机器学习库,它的目标是使机器学习算法可扩展和易于使用。它提供如下工具:
[*]机器学习(ML)算法:常用的学习算法,如分类、回归、聚类和协同过滤
[*]特征:特征提取、转化、降维,及选择
[*]管道:构造工具、评估工具和调整机器学习管理
[*]存储:保存和加载算法、模型及管道
[*]实用工具:线性代数,统计,数据处理等。
1.1.声明:基于DataFrame的API为首选API
基于RDD的API目前处于维护模式.
spark2.0开始,基于RDD的API已经进入的维护模式.目前spark首选的机器学习API为DataFrame的API.
具体含义是什么?
[*]MLlib还会支持和维护spark.mllib包中的RDD API.
[*]但是不再往RDD API中添加新的功能.
[*]在Spark2.0以后的版本中,将继续向DataFrames的API添加新功能以缩小与RDD的API差异。
[*]当两种接口之间达到特征相同时(初步估计为Spark2.3),基于RDD的API将被废弃。
[*]RDD的API将在Spark3.0中被移除
为什么MLlib转向DataFrame API?
[*]DataFrame比RDD提供更加友好的API。使用DataFrame有诸多好处,包括Spark数据源,SQL/DataFrame查询,Tungsten/Catalyst优化器及各编程语言统一的API.
[*]基于DataFrame的MLlib库为多种机器学习算法与编程语言提供统一的API。
[*]DataFrames有助于实现机器学习管道,特别是特征转换。详见管道指南。
Spark ML是什么?
[*]"Spark ML"不是一个正式的名称,但偶尔指基于DataFrame API的MLlib库。主要的原因是DataFrame API使用org.apache.spark.ml作为包名,同时前期使用“park ML Pipelines”来强调管道的概念.
哪种方式API更好?
[*]MLlib包含RDD API和DataFrame API,虽然RDD API目前为维护模式,但二者目前都在使用。
1.2.依赖
MLlib使用线性代数包Breeze,Breeze使用etlib-java来优化数值问题。如果运行时本地包不可用,你将看到一个警告提示信息,然后使用纯虚拟机进行处理。
考虑到运行二进制问题时的证书许可问题,我们默认不使用netlib-java的本地代理。安装netlib-java/Breeze来使用系统二进优化,请阅读netlib-java官方文档来获得安装说明。
基于Python语言使用MLlib,需要安装NumPy1.4及以上版本。
1.3.Spark2.2版本亮点
下面着重介绍spark2.2版本中MLlib库的一些新功能和优化
[*]交替最小二乘法(ALS)应用于推荐用户或者项目的功能(SPARK-19535)
[*]ML和mllib的性能调优(SPARK-11968 and SPARK-20587)
[*]基于data-frame API的相关分析和卡方检验 (SPARK-19636 and SPARK-19635)
[*]频繁模式挖掘中的FPGrowth算法 (SPARK-14503)
[*]广义线性模型(GLM)支持Tweedie分布 (SPARK-18929)
[*]补全数据集中的特征转换的缺失值 (SPARK-13568)
[*]LinearSVC:支持向量聚类算法 (SPARK-14709)
[*]逻辑回归算法现在已支持模型训练时系数约束(SPARK-20047)
1.4.迁移指南
MLlib目前处于频繁开发中,目前试验性的API可以会在将来的版本发生变化。迁移指南会详细说明版本间的变化。
1.4.1.从2.1版本到2.2版本
不兼容性更改
没有不兼容性更改
不推荐内容
没有不推荐内容
更改内容:
[*]SPARK-19787: ALS.train方法的regParam默认值由1.0改为0.1。注:此修改不影响ALS的估计、模型或者类。
[*]SPARK-14772: 修正Param.copy方法在Python和Scala API的不一致。
[*]SPARK-11569: StringIndexer对于NULL值将作为"默认"值(unseen values)处理,此前对于无效值都是抛出异常。
1.4.2 spark之前版本
较早的迁移指南已归档到这里.
想学习更多性能优化知识,可以观看Sam Halliday的"High Performance Linear Algebra".
英文链接:http://spark.apache.org/docs/latest/ml-guide.html
感谢分享
页:
[1]