美文网首页Spark 应用sparkSpark机器学习
Spark机器学习库(MLlib)开发指南(1)

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

作者: xcrossed | 来源:发表于2017-08-27 15:39 被阅读233次
    机器学习库(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参数的设置如何,都会抛出异常。

    相关文章

      网友评论

        本文标题:Spark机器学习库(MLlib)开发指南(1)

        本文链接:https://www.haomeiwen.com/subject/uvnbdxtx.html