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 full Tweedie 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 from 1.0 to 0.1 for ALS.train method (marked DeveloperApi). Note this does not affect the ALS Estimator or Model, nor MLlib’s ALS class.

  • SPARK-14772: Fixed inconsistency between Python and Scala APIs for Param.copy method.

  • SPARK-11569: StringIndexer now handles NULL values in the same way as unseen values. Previously an exception would always be thrown regardless of the setting of the handleInvalid parameter.

上述就是小编为大家分享的Spark2.2 机器学习库MLlib的原理分析是怎样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/220374.html

(0)
上一篇 2022年1月2日
下一篇 2022年1月2日

相关推荐

发表回复

登录后才能评论