当前位置:大数据业界动态 → 正文

大数据漫谈:Spark如何引燃机器学习?

责任编辑:editor007 作者:zyy |来源:企业网D1Net  2016-12-27 16:09:17 本文摘自:it168网站

如今,再讨论大数据,无论是互联网行业还是传统行业似乎都有话说。大数据改变了很多,也带来了很多。人工智能作为大数据的一个重要分支,也纷纷被各大企业划入未来的规划之内。不久前,李开复就曾说过,未来的人工智能市场将比如今大火的移动互联市场要大10倍。

大数据漫谈:Spark如何引燃机器学习?

本文将讨论Spark的开源机器学习库Spark ML。从Spark 1.6开始,Spark ML软件包中基于DataFrame的API推荐明显多于基于RDD的API,但是还未完全取代。从Spark 2.0开始,Spark.ML软件包中基于RDD的API已进入维护模式。Spark的主要机器学习API现在是Spark.ML包中基于DataFrame的API。

Databricks服务对数据科学家来说是一个很好的选择。它具有完整的摄取,特征选择,模型构建和评估功能,以及与数据源的大量集成和出色的可扩展性。Databricks服务提供了一个基于Spark的云服务。Databricks公司由Spark的原创开发商Matei Zaharia和来自U.C.Berkeley’s AMPLab的公司创立。同时,Databricks也是Apache Spark项目的主要贡献者。

Spark ML特点

Spark ML库提供了通用的机器学习算法,如分类,回归,聚类和协同过滤(但没有深度神经网络)以及用于特征提取,变换,降维和用于构建,评估和调整ML的选项和工具管道。Spark ML还包括用于保存和加载算法,模型,管道,用于数据处理以及进行线性代数和统计的实用程序。

Spark ML是用Scala编写的,并使用了线性代数包Breeze。Breeze依靠netlib-java来优化数值处理。 如果你有机器优化的本地netlib-java二进制代理,这将使整个库比纯JVM实现运行得更快。在Mac上,默认情况下安装的是veclib框架。

你也可以通过Databricks配置的Spark集群使用GPU,而不仅仅是只有CPU的Apache Spark。GPU可以为具有大量数据的复杂机器学习模型带来10倍的速度提升,尽管与机器优化的CPU库相比,这可能导致数据规模较小的简单机器学习模型的训练速度降低。

MLlib实现了分类和回归的常用算法和模型,这可能是新手容易混乱的点,但专家可能会有更好的用于数据分析的模型选择。对于这么多模型,Spark ML增加了超参数调整的重要特性,也称为模型选择,它允许分析人员设置参数网格,估计器和评估者,并通过交叉验证方法(耗时但很准确)或训练验证分割方法(很快但不太准确)找到最佳的数据模型。

Spark ML拥有针对Scala和Java的完整API,主要是针对Python的完整API以及针对R的部分API。通过示例计算,ML覆盖:54个Java和60个Scala ML示例,52个Python ML 示例,但只有5个R示例。

Spark安装

如果你的电脑上已经安装了java 1.8.0_05,那安装Scala2.11.8就没有其他额外工作了,也可以考虑安装再安装Python 2.7和R 3.3.1。安装Spark时,当Spark没有检测到Hadoop会发出警告:“WARN NativeCodeLoader:无法为您的平台加载native-hadoop库......请在适当的情况下使用内置java类” 。

目前有一种使用默认Spark AMI在Amazon EC2上设置Spark集群的简单方法。据推测,如果你已经安装了Spark和具有EC2权限的Amazon帐户,整个过程大约只需要五分钟。

在服务器上安装带有Spark的Hadoop集群可能很复杂,这取决于你使用的集群管理器。除非你自己就是做这个的,否则你可能很难解决这个问题。

如果你不想安装但仍想使用Spark,你可以在Databricks上运行。一个免费的Databricks社区集群可以提供6GB的RAM节点和0.88核。付费集群可以在Amazon r3.2xlarge EC2实例上部署内存优化节点(30GB,四核),部署在Amazon c3.4xlarge EC2实例上的计算优化节点(15GB,八核)或部署在Amazon上的GPU节点 g2.2xlarge(一个GPU)或g2.8xlarge(四个GPU)EC2实例类型。

使用Databricks的一个优点是,你可以使用从1.3到当前的任何Spark版本创建集群,这很重要,因为一些旧的Spark ML程序包括示例,只能在特定版本的Spark上正确运行,其他版本会抛出错误。

运行Spark ML

虽然Databricks默认提供了一个兼容Jupyter notebook来运行Spark,标准的Apache Spark从命令行开始分布式运行。Spark存储库中有多个脚本:./ bin / run-example从存储库运行示例代码; ./bin/spark-shell运行交互式Scala shell; ./bin/pyspark运行交互式Python shell; ./bin/sparkR用于运行R shell; 和用于运行应用程序的通用./bin/spark-submit。Spark提交脚本继而运行spark-class,它负责查找Java和Spark .jar文件,然后启动所需的脚本。

默认情况下,Spark都会生成一个详细的日志输出流,即使没有实质性的输出。下图展示的是使用Spark来计算Pi的一个Scala示例。 计算值,从底部大约10行,仅精确到三位数。

大数据漫谈:Spark如何引燃机器学习?

幸运的是,可以使用设置来减小终端日志输出。但是还有一个更好的方法来运行Spark。使用Jupyter类型的笔记本隐藏日志记录并且散置解释性文本,代码和输出,如下面两个Databricks屏幕截图所示。

大数据漫谈:Spark如何引燃机器学习?

大数据漫谈:Spark如何引燃机器学习?

实际上,你不需要在Databricks上用Jupyter Notebook运行Spark。你可以在本地安装Jupyter,并在默认的IPython内核之上添加所需的任何语言的核(例如Scala和R)。如果你在网上搜索“如何在Jupyter Notebook上使用Spark”,你会发现很多具体说明。

学习Spark ML

在Spark网站上,你将看到用于运行分布式Scala,Java,Python和R示例的说明,Spark API快速启动和编程指南及其他相关文件。示例页面解释了Python,Scala和Java中的一些简单示例。

Spark遇到TensorFlow

正如我们所看到的,Spark ML提供了基本机器学习,特征选择,管道等。它在分类,回归,聚类和过滤方面都做得很好。鉴于它是Spark的一部分,它还具有访问数据库,流和其他数据源的强大访问权限。

另一方面,Spark ML并没有采用与Google TensorFlow,Caffe和Microsoft Cognitive Toolkit相同的方式建模和训练深度神经网络。为此,Databricks一直致力于将Spark的可扩展性和超参数调整与TensorFlow的深度神经网络训练和部署相结合。

如果你安装了Hadoop,并希望用机器学习做数据科学,Spark ML是一个明智的选择。如果你需要用深度神经网络正确建模数据,那么Spark ML不是最好的选择,但你可以将它与其他工具相结合,以创造一个更适合的工具。

大数据漫谈:Spark如何引燃机器学习?

成本:免费,因为开源。 平台:Spark运行在Windows和类Unix系统(如Linux,MacOS)上,使用Java 7或更高版本,Python 2.6 / 3.4或更高版本以及R 3.1或更高版本。 对于Scala API,Spark 2.0.1使用Scala 2.11。

关键字:Spark机器学习

本文摘自:it168网站

x 大数据漫谈:Spark如何引燃机器学习? 扫一扫
分享本文到朋友圈
当前位置:大数据业界动态 → 正文

大数据漫谈:Spark如何引燃机器学习?

责任编辑:editor007 作者:zyy |来源:企业网D1Net  2016-12-27 16:09:17 本文摘自:it168网站

如今,再讨论大数据,无论是互联网行业还是传统行业似乎都有话说。大数据改变了很多,也带来了很多。人工智能作为大数据的一个重要分支,也纷纷被各大企业划入未来的规划之内。不久前,李开复就曾说过,未来的人工智能市场将比如今大火的移动互联市场要大10倍。

大数据漫谈:Spark如何引燃机器学习?

本文将讨论Spark的开源机器学习库Spark ML。从Spark 1.6开始,Spark ML软件包中基于DataFrame的API推荐明显多于基于RDD的API,但是还未完全取代。从Spark 2.0开始,Spark.ML软件包中基于RDD的API已进入维护模式。Spark的主要机器学习API现在是Spark.ML包中基于DataFrame的API。

Databricks服务对数据科学家来说是一个很好的选择。它具有完整的摄取,特征选择,模型构建和评估功能,以及与数据源的大量集成和出色的可扩展性。Databricks服务提供了一个基于Spark的云服务。Databricks公司由Spark的原创开发商Matei Zaharia和来自U.C.Berkeley’s AMPLab的公司创立。同时,Databricks也是Apache Spark项目的主要贡献者。

Spark ML特点

Spark ML库提供了通用的机器学习算法,如分类,回归,聚类和协同过滤(但没有深度神经网络)以及用于特征提取,变换,降维和用于构建,评估和调整ML的选项和工具管道。Spark ML还包括用于保存和加载算法,模型,管道,用于数据处理以及进行线性代数和统计的实用程序。

Spark ML是用Scala编写的,并使用了线性代数包Breeze。Breeze依靠netlib-java来优化数值处理。 如果你有机器优化的本地netlib-java二进制代理,这将使整个库比纯JVM实现运行得更快。在Mac上,默认情况下安装的是veclib框架。

你也可以通过Databricks配置的Spark集群使用GPU,而不仅仅是只有CPU的Apache Spark。GPU可以为具有大量数据的复杂机器学习模型带来10倍的速度提升,尽管与机器优化的CPU库相比,这可能导致数据规模较小的简单机器学习模型的训练速度降低。

MLlib实现了分类和回归的常用算法和模型,这可能是新手容易混乱的点,但专家可能会有更好的用于数据分析的模型选择。对于这么多模型,Spark ML增加了超参数调整的重要特性,也称为模型选择,它允许分析人员设置参数网格,估计器和评估者,并通过交叉验证方法(耗时但很准确)或训练验证分割方法(很快但不太准确)找到最佳的数据模型。

Spark ML拥有针对Scala和Java的完整API,主要是针对Python的完整API以及针对R的部分API。通过示例计算,ML覆盖:54个Java和60个Scala ML示例,52个Python ML 示例,但只有5个R示例。

Spark安装

如果你的电脑上已经安装了java 1.8.0_05,那安装Scala2.11.8就没有其他额外工作了,也可以考虑安装再安装Python 2.7和R 3.3.1。安装Spark时,当Spark没有检测到Hadoop会发出警告:“WARN NativeCodeLoader:无法为您的平台加载native-hadoop库......请在适当的情况下使用内置java类” 。

目前有一种使用默认Spark AMI在Amazon EC2上设置Spark集群的简单方法。据推测,如果你已经安装了Spark和具有EC2权限的Amazon帐户,整个过程大约只需要五分钟。

在服务器上安装带有Spark的Hadoop集群可能很复杂,这取决于你使用的集群管理器。除非你自己就是做这个的,否则你可能很难解决这个问题。

如果你不想安装但仍想使用Spark,你可以在Databricks上运行。一个免费的Databricks社区集群可以提供6GB的RAM节点和0.88核。付费集群可以在Amazon r3.2xlarge EC2实例上部署内存优化节点(30GB,四核),部署在Amazon c3.4xlarge EC2实例上的计算优化节点(15GB,八核)或部署在Amazon上的GPU节点 g2.2xlarge(一个GPU)或g2.8xlarge(四个GPU)EC2实例类型。

使用Databricks的一个优点是,你可以使用从1.3到当前的任何Spark版本创建集群,这很重要,因为一些旧的Spark ML程序包括示例,只能在特定版本的Spark上正确运行,其他版本会抛出错误。

运行Spark ML

虽然Databricks默认提供了一个兼容Jupyter notebook来运行Spark,标准的Apache Spark从命令行开始分布式运行。Spark存储库中有多个脚本:./ bin / run-example从存储库运行示例代码; ./bin/spark-shell运行交互式Scala shell; ./bin/pyspark运行交互式Python shell; ./bin/sparkR用于运行R shell; 和用于运行应用程序的通用./bin/spark-submit。Spark提交脚本继而运行spark-class,它负责查找Java和Spark .jar文件,然后启动所需的脚本。

默认情况下,Spark都会生成一个详细的日志输出流,即使没有实质性的输出。下图展示的是使用Spark来计算Pi的一个Scala示例。 计算值,从底部大约10行,仅精确到三位数。

大数据漫谈:Spark如何引燃机器学习?

幸运的是,可以使用设置来减小终端日志输出。但是还有一个更好的方法来运行Spark。使用Jupyter类型的笔记本隐藏日志记录并且散置解释性文本,代码和输出,如下面两个Databricks屏幕截图所示。

大数据漫谈:Spark如何引燃机器学习?

大数据漫谈:Spark如何引燃机器学习?

实际上,你不需要在Databricks上用Jupyter Notebook运行Spark。你可以在本地安装Jupyter,并在默认的IPython内核之上添加所需的任何语言的核(例如Scala和R)。如果你在网上搜索“如何在Jupyter Notebook上使用Spark”,你会发现很多具体说明。

学习Spark ML

在Spark网站上,你将看到用于运行分布式Scala,Java,Python和R示例的说明,Spark API快速启动和编程指南及其他相关文件。示例页面解释了Python,Scala和Java中的一些简单示例。

Spark遇到TensorFlow

正如我们所看到的,Spark ML提供了基本机器学习,特征选择,管道等。它在分类,回归,聚类和过滤方面都做得很好。鉴于它是Spark的一部分,它还具有访问数据库,流和其他数据源的强大访问权限。

另一方面,Spark ML并没有采用与Google TensorFlow,Caffe和Microsoft Cognitive Toolkit相同的方式建模和训练深度神经网络。为此,Databricks一直致力于将Spark的可扩展性和超参数调整与TensorFlow的深度神经网络训练和部署相结合。

如果你安装了Hadoop,并希望用机器学习做数据科学,Spark ML是一个明智的选择。如果你需要用深度神经网络正确建模数据,那么Spark ML不是最好的选择,但你可以将它与其他工具相结合,以创造一个更适合的工具。

大数据漫谈:Spark如何引燃机器学习?

成本:免费,因为开源。 平台:Spark运行在Windows和类Unix系统(如Linux,MacOS)上,使用Java 7或更高版本,Python 2.6 / 3.4或更高版本以及R 3.1或更高版本。 对于Scala API,Spark 2.0.1使用Scala 2.11。

关键字:Spark机器学习

本文摘自:it168网站

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^