Spark2.2 机器学习库MLlib的原理分析是怎样的
这期内容当中小编将会给大家带来有关Spark2.2 机器学习库MLlib的原理分析是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
机器学习库(MLlib)
MLlib是Spark的机器学习(ML)库。机器学习具有可扩展性和易用性。提供高级API,它提供了以下工具:
ML算法:常见的学习算法,如分类、回归、聚类和协同过滤
特征化:特征提取、变换、降维和选择
管道:用于构建、评估和调优ML管道的工具
持久性:保存和加载算法、模型和管道
实用程序:线性代数,统计学,数据处理等。
声明:基于DataFrame的API是主要API
基于MLlib RDD的API现在处于维护模式。
从Spark 2.0开始,在spark.mllib
程序包已进入维护模式。Spark的主要机器学习API现在是DataFrame-based API spark.ml
。
有什么影响 ?
MLlib将支持基于RDD的API
spark.mllib
以及错误修复。MLlib不会为基于RDD的API添加新功能 。
在Spark 2.x版本中,MLlib将为基于DataFrames的API添加功能,以实现与基于RDD的API的功能奇偶校验。
在达到功能奇偶校验(粗略估计Spark 2.3)之后,将弃用基于RDD的API。
The RDD-based API is expected to be removed in Spark 3.0.
预计将在Spark 3.0中删除基于RDD的API。
为什么MLlib会切换到基于DataFrame的API?
DataFrames提供比RDD更加用户友好的API。DataFrame的许多优势包括Spark Datasources, SQL/DataFrame queries,Tungsten和Catalyst优化以及跨语言的统一API。
基于DataFrame的MLlib API跨ML算法和多种语言提供统一的API。
DataFrames有助于的ML Pipelines,特别是特征变换。有关详细信息,请参阅Pipelines guide。
什么是"Spark ML"?
"Spark ML"不是官方名称,但偶尔用于指代基于MLlib DataFrame的API。这主要是由于
org.apache.spark.ml
基于DataFrame的API使用的Scala包名称,以及我们最初用来强调管道概念的"Spark ML Pipelines"术语。
MLlib已被弃用吗?
不,MLlib包括基于RDD的API和基于DataFrame的API。基于RDD的API现在处于维护模式。但是API和MLlib都没有被弃用。
依赖
MLlib使用线性代数包Breeze,它依赖于 netlib-java进行优化的数值处理。如果本机库1在运行时不可用,您将看到一条警告消息,而将改用纯JVM实现。
由于运行时专有二进制文件的许可问题,我们netlib-java
默认情况下不包含本机代理。要配置netlib-java
/ Breeze以使用系统优化的二进制文件,请包含 com.github.fommil.netlib:all:1.1.2
(或构建Spark with -Pnetlib-lgpl
)作为项目的依赖项,并阅读netlib-java文档以获取平台的其他安装说明。
要在Python中使用MLlib,您将需要额外的NumPy版本以及1.4或更高版本。
2.2中的亮点
下面的列表重点介绍了Spark 2.2版本中添加到MLlib的一些新特性和增强功能:
所有用户或项目的top-k推荐的ALS方法,与mllib(SPARK-19535)中的功能相匹配。ml和mllib (SPARK-11968 and SPARK-20587)的性能也有所提高
用
DataFrames 统计 相关性 和 ChiSquareTest
(SPARK-19636 and SPARK-19635)FPGrowth
频繁模式挖掘算法 (SPARK-14503)GLM
now supports the fullTweedie
family (SPARK-18929)Imputer
用于填充数据集中缺失值的特征转换器 (SPARK-13568)LinearSVC
线性支持向量机分类 (SPARK-14709)Logistic回归现在支持在训练期间对系数的约束 (SPARK-20047)
迁移指南
MLlib正在积极开发中。标记为Experimental/DeveloperApi的api在将来的版本中可能会发生变化,下面的迁移指南将解释版本之间的所有变化。
从2.1到2.2
突破性变化
没有突破性的变化。
反对和改变行为
反对
没有人反对。
Changes of behavior
SPARK-19787: Default value of
regParam
changed from1.0
to0.1
forALS.train
method (markedDeveloperApi
). Note this does not affect theALS
Estimator or Model, nor MLlib'sALS
class.SPARK-14772: Fixed inconsistency between Python and Scala APIs for
Param.copy
method.SPARK-11569:
StringIndexer
now handlesNULL
values in the same way as unseen values. Previously an exception would always be thrown regardless of the setting of thehandleInvalid
parameter.
上述就是小编为大家分享的Spark2.2 机器学习库MLlib的原理分析是怎样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。