《Spark 官方文档》机器学习库(MLlib)指南

spark-2.0.2

机器学习库(MLlib)指南

MLlib是Spark机器学习(ML)库。旨在简化机器学习的工程实践工做,并方便扩展到更大规模。MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时还包括底层的优化原语和高层的管道API。html

MLllib目前分为两个代码包:java

  • spark.mllib 包含基于RDD的原始算法API。
  • spark.ml 则提供了基于DataFrames 高层次的API,能够用来构建机器学习管道。

 

咱们推荐您使用spark.ml,由于基于DataFrames的API更加的通用并且灵活。不过咱们也会继续支持spark.mllib包。用户能够放心使用,spark.mllib还会持续地增长新的功能。不过开发者须要注意,若是新的算法可以适用于机器学习管道的概念,就应该将其放到spark.ml包中,如:特征提取器和转换器。python

下面的列表列出了两个包的主要功能。git

spark.mllib: 数据类型,算法以及工具

spark.ml: 机器学习管道高级API

虽然还有些降维技术在spark.ml中尚不可用,不过用户能够将spark.mllib中的的相关实现和spark.ml中的算法无缝地结合起来。github

依赖项

MLlib使用的线性代数代码包是Breeze,而Breeze又依赖于 netlib-java 优化的数值处理。若是在运行时环境中这些原生库不可用,你将会收到一条警告,然后spark会使用纯JVM实现来替代之。算法

因为许可限制的缘由,spark在默认状况下不会包含netlib-Java的原生代理库。若是须要配置netlib-java/Breeze使用其系统优化库,你须要添加依赖项:com.github.fommil.netlib:all:1.1.2(或者在编译时加上参数:-Pnetlib-lgpl),而后再看一看 netlib-java 相应的安装文档。sql

要使用MLlib的Python接口,你须要安装NumPy 1.4以上的版本。apache

迁移指南

MLlib目前还在积极的开发当中。因此标记为 Experimental / DeveloperApi 的接口可能在将来发生变化,下面的迁移指南说明了版本升级后的变化。编程

从1.5升级到1.6

从1.5到1.6,spark.mllib 和 spark.ml 包中并无重大的API变化,不过有一些行为再也不支持或者发生变化。markdown

已经废弃:

  • SPARK-11358: spark.mllib.clustering.KMeans 的runs参数已经废弃
  • SPARK-10592: spark.ml.classification.LogisticRegressionModel和spark.ml.regresion.LinearRegressionModel 中,weights字段更名为coefficients。这一变更有助于消除歧义,能够和输入给算法的实例(行)权重(weights)区分开来。

行为有变:

  • SPARK-7770spark.mllib.tree.GradientBoostedTreesvalidationTol 的语义在1.6中有变。原先其表明偏差变化绝对值的一个阈值,而如今它相似于GradientDescent中的convergenceTol:对于较大的偏差,使用相对偏差(相对于上一次);而对于较小的偏差(<0.01),使用绝对偏差。
  • SPARK-11069: spark.ml.feature.RegexTokenizer:之前,在分词以前不会讲字符串转小写。如今的实现是,默认会将字符串转小写,不过有选项能够设为不转。这中实现和Tokenizertransformer的行为相匹配。

Spark老版本

之前版本的迁移指南归档在这里:on this page


  1. 要了解更多有关系统优化的好处和背景资料,能够看看Sam Halliday关于ScalaX的演讲:High Performance Linear Algebra in Scala
相关文章
相关标签/搜索