Apache Spark机器学习3.1 Spark整体视图

简介:

摘要

基于Spark的整体视图

通过第1章,我们建立起了Spark系统,根据第2章的内容,我们完成了数据准备。现在将进入Spark系统应用的新阶段:从数据中获得洞见。

根据Gartner等机构的研究结果,许多公司仅仅是因为缺乏其商业的整体视图而损失了大量的价值。本章我们将回顾机器学习的方法和获得商业整体视图的步骤,然后讨论Spark如何简单、快速地进行相关计算,同时通过一个实例,循序渐进地展示使用Spark从数据到整体视图的开发过程。

Spark整体视图

整体视图的方法

特征准备

模型估计

模型评估

结果解释

部署


3.1 Spark整体视图


Spark能够快速处理大量的数据,易于开发复杂的计算,因此,非常适合机器学习项目,例如获得商业的整体视图。本节,我们首先介绍一个真实的商业案例,然后讨论在Spark上完成项目的准备工作。

3.1.1 例子

IFS公司销售和分发数千种IT产品,拥有许多市场营销、培训、团队管理、促销和产品相关的数据。公司希望知道市场营销和培训等不同的行为如何影响销售团队的成功。换句话说,IFS公司对找到市场营销、培训或促销对销售成功分别产生多大的影响非常感兴趣。

过去几年,IFS公司已经开展了很多分析工作,但是这些工作都是单独部门在单个数据集上完成的。也就是说,他们已经拥有了仅通过市场营销数据得到其如何影响销售的分析结果,以及仅通过培训数据得到的培训如何影响销售的分析结果。

当决策者拿到所有分析结果,并准备使用这些结果时,他们发现一些结果之间互相矛盾。例如,当他们把所有影响因素加在一起时,总的影响结果超出了他们的直觉想象。

这是每个公司都会面临的典型问题。单一数据集上的单独分析不仅不会生成一个全局的视图,而且经常生成一个有偏见或者互相冲突的视图。为解决这个问题,分析团队需要对公司全部数据有一个整体的观念,把这些数据收集在一起,使用新的机器学习方法来获得公司业务的整体视图。

为做到这一点,公司需要关注以下几个方面:

完整的原因

对于复杂关系的高级分析

计算复杂性与分组和大量产品与服务相关

在这个例子中,我们有8个数据集,其中包含:具有48个特征的市场营销数据集,具有56个特征的培训数据集,具有73个特征的团队管理数据集。整体情况如右表所示。

该公司研究人员知道要将所有数据集放在一起,建立一个完整的模型可以解决这个问题,但是由于种种原因而无法做到。除了公司内部组织的问题外,存储所有数据,用正确的方法快速处理,以合理的速度和正确的方式呈现所有结果在技术上也是充满了挑战。

与此同时,该公司提供100多个产品,将这些产品的数据汇集在一起研究公司相关措施之间的影响。这样,计算出的影响是平均的影响,但因产品之间的差异太大而不能被忽视。如果我们需要评估每一个产品的影响,优先考虑并行计算,并实现良好的计算速度。对这家公司来讲,如果未使用一个像Spark一样好的计算平台,满足上面提到的要求是一项很大的挑战。

在下面几节,我们将使用Apache Spark上的机器学习算法来解决这个商业实例,帮助这家公司获得整体视图。为了帮助你高效地学习Spark上的机器学习,下面几节的讨论都基于这个商业实例。然而,出于保护该公司隐私的考虑,我们去除一些细节,保证每件事都简洁明了。

正如以上讨论,我们的项目需要并行计算,因此,我们需要建立集群和工作节点。然后,使用驱动程序和集群管理器来管理每个节点上进行的计算。

我们在第1章中讨论了Spark环境的准备,要了解更多的信息,可以参考如下网址:http://spark.apache.org/docs/latest/configuration.html。

作为例子,假设我们使用Databricks环境开展工作,可以通过下面的步骤建立集群:

 

前往主菜单,单击“Clusters”,将会为用户打开一个创建集群名字的窗口。在这里,选择Spark的版本,指定工作节点的数量。

一旦集群建立完成,我们回到前面提到的主菜单,单击“Tables”右侧向下的箭头,选择“Create Tables”,导入数据集。数据集需要根据第2章中介绍的情况进行清洗和准备。屏幕截图如下所示:

 

我们可以选择S3、DBFS、JDBC和文件(本地)作为数据源。根据第2章中的内容,因为每个产品需要训练几个模型,我们的数据分为两个数据集:一个用于训练,一个用于测试。

在Spark中,我们需要指挥每个计算节点完成计算任务。因此,在Databricks环境中,我们需要一个调度器使notebook完成计算、收集结果反馈,这将在3.1节“模型估计”一节中介绍。

3.1.2 简洁快速的计算

使用Spark最重要的优势是程序编码简单,并且具有多种方法可供选择。

本项目我们主要使用notebook方法编程,也就是说,我们将使用R notebook方法开发和组织代码。同时,为了更加充分地阐述Spark技术,也因为MLlib与Spark无缝集成,我们将直接使用MLlib来编写所需的代码。

在DataBricks环境中,建立notebook环境需要下面的步骤:

 

正如上面的屏幕截图所示,用户可以到Databricks的主菜单,单击“Workspace”右侧的箭头,选择“Create->Notebook”创建一个新的notebook。之后会出现一个下拉表格让用户创建名字,选择一种语言(R语言、Python、Scala或者SQL)。

为了让工作具有可重复性并且易于理解,我们将引入一个与第1章中描述的RM4E框架相一致的工作流方法。我们将尽可能使用Spark ML pipeline工具表示我们的工作流。具体来讲,对于训练数据集,我们需要估计模型、评估模型,或许在模型使用之前需要重新估计模型。因此,我们需要使用Spark的转换器、估计器和评估器来为本项目组织一个机器学习pipeline。实际上,我们也会在R notebook环境中组织这些工作流。

关于pipeline编程的更多信息,请访问:http://spark.apache.org/docs/latest/ml-guide.html#example-pipeline 和http://spark.apache.org/docs/latest/ml-guide.html。

一旦我们完成计算平台搭建,掌握了工作的框架,其他事情也就清楚了。在下面几节,我们将一步一步地进行。也就是说,我们将使用RM4E框架,以及第1章中讨论过的过程:首先是识别方程或方法和准备特征,第二步是完成模型的估计,第三步是评估模型,第四步是解释我们的结果,最后部署模型。

相关文章
|
21天前
|
分布式计算 大数据 Apache
利用.NET进行大数据处理:Apache Spark与.NET for Apache Spark
【10月更文挑战第15天】随着大数据成为企业决策和技术创新的关键驱动力,Apache Spark作为高效的大数据处理引擎,广受青睐。然而,.NET开发者面临使用Spark的门槛。本文介绍.NET for Apache Spark,展示如何通过C#和F#等.NET语言,结合Spark的强大功能进行大数据处理,简化开发流程并提升效率。示例代码演示了读取CSV文件及统计分析的基本操作,突显了.NET for Apache Spark的易用性和强大功能。
32 1
|
4月前
|
分布式计算 大数据 Spark
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
《Spark大数据处理:技术、应用与性能优化》深入浅出介绍Spark核心,涵盖部署、实战与性能调优,适合初学者。作者基于微软和IBM经验,解析Spark工作机制,探讨BDAS生态,提供实践案例,助力快速掌握。书中亦讨论性能优化策略。[PDF下载链接](https://zhangfeidezhu.com/?p=347)。![Spark Web UI](https://img-blog.csdnimg.cn/direct/16aaadbb4e13410f8cb2727c3786cc9e.png#pic_center)
147 1
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
|
3月前
|
分布式计算 Hadoop 大数据
大数据处理框架在零售业的应用:Apache Hadoop与Apache Spark
【8月更文挑战第20天】Apache Hadoop和Apache Spark为处理海量零售户数据提供了强大的支持
62 0
|
3月前
|
分布式计算 Serverless 数据处理
EMR Serverless Spark 实践教程 | 通过 Apache Airflow 使用 Livy Operator 提交任务
Apache Airflow 是一个强大的工作流程自动化和调度工具,它允许开发者编排、计划和监控数据管道的执行。EMR Serverless Spark 为处理大规模数据处理任务提供了一个无服务器计算环境。本文为您介绍如何通过 Apache Airflow 的 Livy Operator 实现自动化地向 EMR Serverless Spark 提交任务,以实现任务调度和执行的自动化,帮助您更有效地管理数据处理任务。
195 0
|
5月前
|
机器学习/深度学习 人工智能 JSON
人工智能平台PAI产品使用合集之创建特征视图时遇到报错,该如何排查
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
5月前
|
机器学习/深度学习 人工智能 前端开发
人工智能平台PAI产品使用合集之创建了实时特征视图,里面的数据是通过什么传入的
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
4月前
|
分布式计算 Apache Spark
|
5月前
|
分布式计算 大数据 数据处理
Apache Spark在大数据处理中的应用
Apache Spark是大数据处理的热门工具,由AMPLab开发并捐赠给Apache软件基金会。它以内存计算和优化的执行引擎著称,提供比Hadoop更快的处理速度,支持批处理、交互式查询、流处理和机器学习。Spark架构包括Driver、Master、Worker Node和Executor,核心组件有RDD、DataFrame、Dataset、Spark SQL、Spark Streaming、MLlib和GraphX。文章通过代码示例展示了Spark在批处理、交互式查询和实时数据处理中的应用,并讨论了其优势(高性能、易用性、通用性和集成性)和挑战。【6月更文挑战第11天】
129 6
|
5月前
|
机器学习/深度学习 分布式计算 API
技术好文:Spark机器学习笔记一
技术好文:Spark机器学习笔记一
39 0
|
5月前
|
消息中间件 分布式计算 关系型数据库
使用Apache Spark从MySQL到Kafka再到HDFS的数据转移
使用Apache Spark从MySQL到Kafka再到HDFS的数据转移

推荐镜像

更多
下一篇
无影云桌面