《Spark 官方文档》机器学习库(MLlib)指南
spark-2.0.2
机器学习库(MLlib)指南
MLlib是Spark的机器学习(ML)库。旨在简化机器学习的工程实践工作,并方便扩展到更大规模。MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时还包括底层的优化原语和高层的管道API。
MLllib目前分为两个代码包:
spark.mllib
包含基于RDD的原始算法API。spark.ml
则提供了基于DataFrames 高层次的API,可以用来构建机器学习管道。
我们推荐您使用spark.ml,因为基于DataFrames的API更加的通用而且灵活。不过我们也会继续支持spark.mllib包。用户可以放心使用,spark.mllib还会持续地增加新的功能。不过开发者需要注意,如果新的算法能够适用于机器学习管道的概念,就应该将其放到spark.ml包中,如:特征提取器和转换器。
下面的列表列出了两个包的主要功能。
spark.mllib: 数据类型,算法以及工具
- Data types(数据类型)
- Basic statistics(基础统计)
- summary statistics(摘要统计)
- correlations(相关性)
- stratified sampling(分层抽样)
- hypothesis testing(假设检验)
- streaming significance testing
- random data generation(随机数据生成)
- Kernel density estimation (核密度估计)
- Classification and regression(分类和回归)
- linear models (SVMs, logistic regression, linear regression)(线性模型(SVM,逻辑回归,线性回归))
- naive Bayes(朴素贝叶斯)
- decision trees(决策树)
- ensembles of trees (Random Forests and Gradient-Boosted Trees)(树套装(随机森林和梯度提升决策树))
- isotonic regression(保序回归)
- Collaborative filtering(协同过滤)
- alternating least squares (ALS)(交替最小二乘(ALS))
- Clustering(聚类)
- k-means(K-均值)
- Gaussian mixture(高斯混合)
- power iteration clustering (PIC)(幂迭代聚类(PIC))
- latent Dirichlet allocation (LDA)(隐含狄利克雷分配)
- bisecting k-means(平分K-均值)
- streaming k-means(流式K-均值)
- Dimensionality reduction(降维)
- singular value decomposition (SVD)(奇异值分解(SVD))
- principal component analysis (PCA)(主成分分析(PCA))
- Feature extraction and transformation(特征抽取和转换)
- Frequent pattern mining(频繁模式挖掘)
- FP-growth(FP-增长)
- association rules(关联规则)
- PrefixSpan(PrefixSpan)
- Evaluation metrics(评价指标)
- PMML model export(PMML模型导出)
- Optimization (developer)(优化(开发者))
- stochastic gradient descent(随机梯度下降)
- limited-memory BFGS (L-BFGS)(有限的记忆BFGS(L-BFGS))
spark.ml: 机器学习管道高级API
- Overview: estimators, transformers and pipelines(概览:评估器,转换器和管道)
- Extracting, transforming and selecting features(抽取,转换和选取特征)
- Classification and regression(分类和回归)
- Clustering(聚类)
- Advanced topics(高级主题)
虽然还有些降维技术在spark.ml中尚不可用,不过用户可以将spark.mllib中的的相关实现和spark.ml中的算法无缝地结合起来。
依赖项
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 相应的安装文档。
要使用MLlib的Python接口,你需要安装NumPy 1.4以上的版本。
迁移指南
MLlib目前还在积极的开发当中。所以标记为 Experimental / DeveloperApi 的接口可能在未来发生变化,下面的迁移指南说明了版本升级后的变化。
从1.5升级到1.6
从1.5到1.6,spark.mllib 和 spark.ml 包中并没有重大的API变化,不过有一些行为不再支持或者发生变化。
已经废弃:
- SPARK-11358: spark.mllib.clustering.KMeans 的runs参数已经废弃
- SPARK-10592: spark.ml.classification.LogisticRegressionModel和spark.ml.regresion.LinearRegressionModel 中,weights字段改名为coefficients。这一变动有助于消除歧义,可以和输入给算法的实例(行)权重(weights)区分开来。
行为有变:
- SPARK-7770:
spark.mllib.tree.GradientBoostedTrees
:validationTol
的语义在1.6中有变。原先其代表误差变化绝对值的一个阈值,而现在它类似于GradientDescent中的convergenceTol:对于较大的误差,使用相对误差(相对于上一次);而对于较小的误差(<0.01),使用绝对误差。
- SPARK-11069: spark.ml.feature.RegexTokenizer:以前,在分词之前不会讲字符串转小写。现在的实现是,默认会将字符串转小写,不过有选项可以设为不转。这中实现和
Tokenizer
transformer的行为相匹配。
Spark老版本
以前版本的迁移指南归档在这里:on this page
- 要了解更多有关系统优化的好处和背景资料,可以看看Sam Halliday关于ScalaX的演讲:High Performance Linear Algebra in Scala
《Spark 官方文档》机器学习库(MLlib)指南的更多相关文章
- Spark官方文档 - 中文翻译
Spark官方文档 - 中文翻译 Spark版本:1.6.0 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 引入Spark(Linki ...
- 【译】Spark官方文档——Spark Configuration(Spark配置)
注重版权,尊重他人劳动 转帖注明原文地址:http://www.cnblogs.com/vincent-hv/p/3316502.html Spark主要提供三种位置配置系统: 环境变量:用来启动 ...
- 《Spark 官方文档》在Mesos上运行Spark
本文转自:http://ifeve.com/spark-mesos-spark/ 在Mesos上运行Spark Spark可以在由Apache Mesos 管理的硬件集群中运行. 在Mesos集群中使 ...
- Spark 官方文档(5)——Spark SQL,DataFrames和Datasets 指南
Spark版本:1.6.2 概览 Spark SQL用于处理结构化数据,与Spark RDD API不同,它提供更多关于数据结构信息和计算任务运行信息的接口,Spark SQL内部使用这些额外的信息完 ...
- 【译】Spark官方文档——编程指南
本文翻自官方博客,略有添加:https://github.com/mesos/spark/wiki/Spark-Programming-Guide Spark发指南 从高的面看,其实每一个Spark的 ...
- spark api之一:Spark官方文档 - 中文翻译
转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 引入Spark(Linking with Spark) 3 初始化Spark(Initi ...
- Spark 官方文档(2)——集群模式
Spark版本:1.6.2 简介:本文档简短的介绍了spark如何在集群中运行,便于理解spark相关组件.可以通过阅读应用提交文档了解如何在集群中提交应用. 组件 spark应用程序通过主程序的Sp ...
- spark 官方文档(1)——提交应用程序
Spark版本:1.6.2 spark-submit提供了在所有集群平台提交应用的统一接口,你不需要因为平台的迁移改变配置.Spark支持三种集群:Standalone.Apache Mesos和Ha ...
- Spark 官方文档(4)——Configuration配置
Spark可以通过三种方式配置系统: 通过SparkConf对象, 或者Java系统属性配置Spark的应用参数 通过每个节点上的conf/spark-env.sh脚本为每台机器配置环境变量 通过lo ...
随机推荐
- Java字符串常量池
JVM为了减少字符串对象的重复创建,维护了一个特殊的内存,这段内存被称为字符串常量池. Java中字符串对象的创建有两种形式:一种是字面量形式,String str = "a":一 ...
- vpn
https://itunes.apple.com/us/app/sonicwall-mobile-connect/id822514576?mt=12
- 神奇的 CURL 命令
CURL? 嗯,说来话长了~~~~ 这东西现在已经是苹果机上内置的命令行工具之一了,可见其魅力之一斑 1) 二话不说,先从这里开始吧! curl http: //www.yahoo.com 回车之 ...
- 一起来做webgame,《Javascript蜘蛛纸牌》
不得不说,做游戏是会上瘾的,这次带来的是win系统上的经典游戏<蜘蛛纸牌>,不能完美,但求一玩 移牌 0 次 Javascript game_蜘蛛纸牌 正在努力加载... // " ...
- asp.net mvc 在视图中获取控制器与动作的名称
获取 controller 名称: ViewContext.RouteData.Values["controller"].ToString(); 获取 action 名称: Vie ...
- JMeter学习-032-JMeter常见四种变量简介
在JMeter自动化测试脚本编写过程中,经常需要对测试脚本进行一些参数设置.例如,设置测试计划的全局变量(方便切换不同的测试环境).样本线程(HTTP请求等)的参数传递等. 通常,JMeter中常用的 ...
- ACM集训的Day3 B。。。盲目搜索之DFS。。。
milk 一.题目描述: gzp有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的.有时,农民把牛奶从一个桶倒到 另一个桶中,直到被灌 ...
- 【尝新】微信小程序初体验
文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/?t=1474644089434 根据文档地址中下载微信开发工具后,按照文档指引可以创建一个快速体验的小d ...
- mongo3.2
arbiter配置文件 processManagement: fork: true net: bindIp: 172.16.10.1,127.0.0.1 port: storage: dbPath: ...
- JOIN,WHERE判断和ORDERBY排序
MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小. 如果重复代码只是 ...