Spark机器学习库(MLlib)开发指南(1)

机器学习库(MLlib)开发指南(1)

本文是翻译自官方文档,如有错误,欢迎指正。
原文 https://spark.apache.org/docs/latest/ml-guide.html

MLlib是spark的机器学习库,它的目标是使得实战机器学习变得易于扩展。在较高层次上,它提供了如下的工具

  • 机器学习算法:通常的学习型算法,例如分类 ,回归,聚类以及协同过滤
  • 特征处理:特征提取,转换,降维以及特征选择
  • pipeline:用于构建,评估及调整ML pipeline的工具
  • 持久化:保存及加载算法,模型及pipeline
  • 工具类:线性代数,统计,数据绑定等等
声明:DataFrame-based api是主要api
MLlib RDD-based API 现在处于维护状态
在 Spark 2.0,在 spark.MLlib这个包下的 RDD-based APIs 已经进入维护状态。现在主要的 api 是位于 spark.ml 这从此包下面的 DataFrame-based API

这个声明的说明

  • MLlib将仍然支持位于 spark.MLlib 下面的 RDD-based API,并提供错误修复
  • MLlib将不再添加新的功能为RDD-based API
  • 在Spark 2.x版本中,MLlib 将添加功能到 DataFrames-based API ,为了达到RDD-based API相同的功能
  • 在达到相同的功能后(粗略估计到Spark 2.3),RDD-based API 将被废弃
  • RDD-based API 预计在Spark 3.0时移除

为什么 MLlib要切换到DataFrame-based API

  • DataFrames 提供了比RDD更加用户友好的API,DataFrames的许多好处包括Spark Datasources,SQL / DataFrame查询,Tungsten和Catalyst优化以及跨语言的统一API
  • 基于DataFrame的ML API为ML算法和跨多种语言提供了统一的API。
  • DataFrames有助于实际的ML Pipelines,特别是特征转换。
    有关详细信息,请参阅Pipelines指南

什么是Spark ML

  • Spark ML 不是一个官方的名称,但偶尔用于引用基于MLlib DataFrame的API。这主要是由于基于DataFrame的API使用的org.apache.spark.ml Scala软件包名称以及我们最初用于强调管道概念的“Spark ML Pipelines”术语。

MLlib被弃用

  • 不,MLlib 包含 RDD-based API 和 DataFrame-based API。 RDD-based API 现在进入维护状态,但是MLlib是一个整体,API不会弃用。

依赖
MLlib使用线性代数包Breeze,它依赖数值处理优化包netlib-java。如果在运行时本地库不可用,你将看到一个警告消息,一个纯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版本中的亮点
下面的列表突出显示了在2.2版本的Spark中添加到MLlib的一些新功能和增强功能:

  • 对用户或者物品进行topk推荐的ALS方法,与MLlib(SPARK-19535)中的功能相匹配。
    ml和MLlib(SPARK-11968和SPARK-20587)的性能也得到改善
  • Correlation and ChiSquareTest为DataFrames增加统计函数
  • FPGrowth 算法 或者 frequent pattern mining (SPARK-14503)
  • GLM现在支持完整的Tweedie系列(SPARK-18929)
  • 在dataset中估计缺失值 通过特征变换
  • LinearSVC 实现 svm(SPARK-14709)
  • 逻辑回归现在支持训练过程中系数的约束

迁移指导
MLlib正在积极发展。标记为Experimental / DeveloperApi的API可能会在将来的版本中更改,下面的迁移指南将解释发行版之间的所有更改。

行为变化

  • SPARK-19787:对于ALS.train方法(标记为DeveloperApi),regParam的默认值从1.0变为0.1。请注意,这不影响ALS估算器或模型,也不影响MLlib的ALS类。
  • SPARK-14772:修复了Param.copy方法的Python和Scala API之间的不一致。
  • SPARK-11569:StringIndexer现在处理NULL值的方式与未看到的值相同。以前,无论handleInvalid参数的设置如何,都会抛出异常。
    原文作者:xcrossed
    原文地址: https://www.jianshu.com/p/bdd9b90d186e
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞