Apache Spark 3.0 机器学习库(MLlib)指南

学习地址:https://spark.apache.org/docs/latest/ml-guide.html 

学习目录

MLlib:主要指南

  • 基本统计
  • 数据源
  • 流水线
  • 提取,转换和选择特征
  • 分类与回归
  • 聚类
  • 协同过滤
  • 频繁模式挖掘
  • 模型选择和调整
  • 进阶主题

MLlib:基于RDD的API指南

  • 资料类型
  • 基本统计
  • 分类与回归
  • 协同过滤
  • 聚类
  • 降维
  • 特征提取和转换
  • 频繁模式挖掘
  • 评估指标
  • PMML模型导出
  • 优化(开发人员)

 

机器学习库(MLlib)指南

MLlib是Spark的机器学习(ML)库。其目标是使实用的机器学习可扩展且容易。在较高级别,它提供了以下工具:

  • ML算法:常见的学习算法,例如分类,回归,聚类和协作过滤
  • 特征化:特征提取,变换,降维和选择
  • 管道:用于构建,评估和调整ML管道的工具
  • 持久性:保存和加载算法,模型和管道
  • 实用程序:线性代数,统计信息,数据处理等

声明:基于DataFrame的API是主要API

基于MLlib RDD的API现在处于维护模式。

从Spark 2.0开始,软件包中基于RDD的API spark.mllib已进入维护模式。现在,用于Spark的主要机器学习API是软件包中基于DataFrame的API spark.ml

这意味着什么?

  • MLlib仍将spark.mllib通过错误修复来支持基于RDD的API 。
  • MLlib不会向基于RDD的API添加新功能。
  • 在Spark 2.x发行版中,MLlib将向基于DataFrames的API添加功能,以与基于RDD的API达到功能奇偶。

为什么MLlib切换到基于DataFrame的API?

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

什么是“ 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 -Pnetlib-lgpl)作为项目的依赖项,并阅读netlib-java文档以获取平台的其他安装说明。

最受欢迎的本机BLAS(例如Intel MKLOpenBLAS)可以在单个操作中使用多个线程,这可能与Spark的执行模型冲突。

将这些BLAS实现配置为使用单个线程进行操作实际上可以提高性能(请参阅SPARK-21305)。通常,最好将此配置与每个Spark任务配置为使用的内核数匹配,默认情况下为1,通常保留为1。

请参考以下资源,以了解如何配置这些BLAS实现使用的线程数:Intel MKLIntel oneMKLOpenBLAS。请注意,如果未在系统中正确配置nativeBLAS,则将使用java实现(f2jBLAS)作为后备选项。

要在Python中使用MLlib,您将需要NumPy 1.4版或更高版本。

3.0中的亮点

以下列表突出显示了3.0 Spark版本中添加到MLlib的一些新功能和增强功能:

  • 多列支持已添加到BinarizerSPARK-23578),StringIndexerSPARK-11215),StopWordsRemoverSPARK-29808)和PySpark QuantileDiscretizerSPARK-22796)。
  • 添加了基于树的特征转换(SPARK-13​​677)。
  • 添加了两个新的评估器MultilabelClassificationEvaluatorSPARK-16692)和RankingEvaluatorSPARK-28045)。
  • DecisionTreeClassifier/RegressorSPARK-19591),RandomForestClassifier/RegressorSPARK-9478),GBTClassifier/RegressorSPARK-9612), MulticlassClassificationEvaluatorSPARK-24101),RegressionEvaluatorSPARK-24102),BinaryClassificationEvaluatorSPARK-24103),BisectingKMeansSPARK-30351),KMeansSPARK -29967)和GaussianMixtureSPARK-30102)。
  • PowerIterationClustering添加了R API (SPARK-19827)。
  • 添加了Spark ML侦听器,用于跟踪ML管道状态(SPARK-23674)。
  • 适合验证集已添加到Python的Gradient Boosted Trees(SPARK-24333)中。
  • RobustScaler添加了变压器(SPARK-28399)。
  • Factorization Machines添加了分类器和回归器(SPARK-29224)。
  • 添加了高斯朴素贝叶斯分类器(SPARK-16872)和互补朴素贝叶斯分类器(SPARK-29942)。
  • Scala和Python(SPARK-28958)之间的ML函数奇偶校验。
  • predictRaw在所有分类模型中公开。predictProbability在除LinearSVCModel (SPARK-30358)之外的所有分类模型中公开。

迁移指南

现在,迁移指南已存档在此页面上

  1. 要了解有关系统优化的本机的好处和背景的更多信息,您可能希望观看Sam Halliday的ScalaX关于Scala中的高性能线性代数的演讲。 

MLlib:基于RDD的API

本页记录了MLlib指南中有关基于RDD的API(spark.mllib程序包)的各个部分。请参阅基于DataFrame的API(程序包)的MLlib主指南,该指南spark.ml现在是MLlib的主要API。

  • 资料类型
  • 基本统计
    • 摘要统计
    • 相关性
    • 分层抽样
    • 假设检验
    • 流重要性测试
    • 随机数据生成
  • 分类与回归
    • 线性模型(SVM,逻辑回归,线性回归)
    • 朴素的贝叶斯
    • 决策树
    • 树木合奏(随机森林和梯度生长的树木)
    • 等渗回归
  • 协同过滤
    • 交替最小二乘法(ALS)
  • 聚类
    • k均值
    • 高斯混合
    • 功率迭代聚类(PIC)
    • 潜在狄利克雷分配(LDA)
    • 均等k均值
    • 流式均值
  • 降维
    • 奇异值分解(SVD)
    • 主成分分析(PCA)
  • 特征提取和转换
  • 频繁模式挖掘
    • FP增长
    • 关联规则
    • 前缀跨度
  • 评估指标
  • PMML模型导出
  • 优化(开发人员)
    • 随机梯度下降
    • 有限内存BFGS(L-BFGS)

 

你可能感兴趣的:(Spark)