这期内容当中小编将会给大家带来有关Spark2.2 机器学习库MLlib的原理分析是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
机器学习库(MLlib)
MLlib是Spark的机器学习(ML)库。机器学习具有可扩展性和易用性。提供高级API,它提供了以下工具:
ML算法:常见的学习算法,如分类、回归、聚类和协同过滤
声明:基于DataFrame的API是主要API
基于MLlib RDD的API现在处于维护模式。
从Spark 2.0开始,在spark.mllib
程序包已进入维护模式。Spark的主要机器学习API现在是DataFrame-based API spark.ml
。
有什么影响 ?
在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)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的原理分析是怎样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程之家行业资讯频道。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。