Apache Spark机器学习2.7 复用性和自动化

简介:

2.7 复用性和自动化


本节我们将讨论数据集组织方法、预处理工作流方法,然后使用Apache Spark pipeline模型进行表示,并实现工作流。然后,我们将评估数据预处理的自动化解决方案。

学完本节,我们应能够使用Spark pipeline模型来表示和实现数据集预处理工作流,理解一些基于Apache Spark的自动化解决方案。

2.7.1 数据集预处理工作流

数据准备工作是从数据清洗到标识匹配,再由数据重组到特征提取,能以某种形式进行组织,反映了一步一步开展机器学习数据集准备的有序过程。换言之,所有的数据准备工作可以被组织为一个工作流程。

为工作流组织数据清理可以帮助实现复用性工作和自动化,对于机器学习从业者而言极具价值,这是因为机器学习从业者和数据科学家往往要花费工作时间的80%用于数据清洗和预处理。

在大多数机器学习项目中,包括后续章节中要讨论的,数据科学家需要把数据划分训练数据集、测试数据集和验证数据集。这里,需要对训练数据集做的预处理同样会重复应用于测试数据集和验证数据集。仅以此为由,利用工作流进行复用将节省机器学习从业者大量时间,也有利于避免许多错误。

使用Spark表示和实现数据预处理的工作流有独特优势,其中包括:

不同来源之间的数据流无缝集成。

这是首要且非常重要的一步。

可用MLlib和GraphX数据处理库。

正如前面章节中指出,构建基于MLlib和GraphX的库使得数据清洗更加容易。

避免与速度较慢的脱机表连接。

Spark SQL比SQL运行速度快。

操作被自然地并行执行,速度显著提升。

并行计算由Apache Spark提供;同时,优化是Spark提供的另一个优势。

Spark pipeline API使得开发、部署数据清理和数据预处理工作流特别容易。

2.7.2 基于Spark pipeline的数据集预处理

作为案例,SampleClean是数据预处理系统的一部分——特别适于数据清洗和对象分析工作。

为了更好地学习,我们鼓励用户把SampleClearn和R notebook相结合,然后利用Apache Spark pipeline来组织工作流。

正如在前面的章节中讨论的,为完成数据预处理,使其可用,我们需要至少以下步骤:

1.数据清洗,处理缺失情况。

2.对象分析,解决对象问题。

3.重组数据,覆盖子集和汇总数据。

4.连接数据。

5.基于现有特征开发新特征。

对于一些最基本的预处理,我们可以用几行R语言代码组织成工作流:

 

然后,我们使用R语言函数、subset、aggregate和merge重组和连接数据集。

上述在R notebook上开展的工作,通过结合使用SampleClearn和特征开发,完成工作流。

然而,在实际工作中,预处理工作流会更加复杂,并可能会涉及反馈。

2.7.3 数据集预处理自动化

Spark新的pipeline模型能较好地表示工作流。

一旦所有数据预处理步骤经过组织进入工作流,自动化将变得更容易。

Databricks是一个端到端的解决方案,目的是更容易地构建一个从数据采集到生成的pipeline。同样的概念也适用于R notebook:你可以规划R notebook在现有的或新的Spark集群上运行作业。每个作业运行的结果,包括可视化,都可以进行浏览,这使得数据科学家的工作成果可以更简便快速地投入到生产。

 

这里有一点很重要:数据准备可以将输出转换为DataFrame。然后,可以很容易地与机器学习pipeline结合,全部实现自动化。

例如,最常见的高级分析任务可以使用MLlib新的pipeline API。例如,下面的代码创建一个简单的文本分类pipeline,pipeline由tokenizer、散列词频特征提取机和逻辑回归组成:

 

建立好pipeline之后,我们就可以用它直接在DataFrame上进行训练模型:

 

上面的代码,我们将在后面的章节中进行更多讨论。

2.2.3节中有如下4个做案例说明的数据表:

 

 

基于这组数据集,我们进行了:

1.数据清洗。

2.一致性匹配。

3.数据集重组。

4.数据集连接。

5.特征提取,然后开展数据连接、特征选择。

为了实现上述工作,我们可以使用R notebook将这些工作组织为可自动化的工作流,也可求助于Spark pipeline。

完成上述所有工作后,我们就可以开展机器学习了。


 

 

相关文章
|
2月前
|
存储 机器学习/深度学习 Apache
如何将Apache Hudi应用于机器学习
如何将Apache Hudi应用于机器学习
23 0
|
2天前
|
机器学习/深度学习 分布式计算 算法
使用Spark进行机器学习
【5月更文挑战第2天】使用Spark进行机器学习
9 2
|
3天前
|
机器学习/深度学习 运维 持续交付
构建高效自动化运维体系:Ansible与Docker的完美结合构建高效机器学习模型的五大技巧
【4月更文挑战第30天】 在当今快速发展的云计算和微服务架构时代,自动化运维已成为维持系统稳定性和提高效率的关键。本文将探讨如何通过结合Ansible和Docker技术构建一个高效的自动化运维体系。文章不仅介绍了Ansible与Docker的基本原理和优势,还详细阐述了如何整合这两种技术以简化部署流程、加强版本控制,并提高整体运维效率。通过案例分析,我们将展示这一组合在实际环境中的应用效果,以及它如何帮助企业实现持续集成和持续部署(CI/CD)的目标。 【4月更文挑战第30天】 在数据驱动的时代,构建一个高效的机器学习模型是获取洞察力和预测未来趋势的关键步骤。本文将分享五种实用的技巧,帮助数
|
3天前
|
机器学习/深度学习 数据采集 算法
【Python机器学习专栏】自动化特征选择与优化的实践
【4月更文挑战第30天】特征选择在机器学习中至关重要,能降低模型复杂度,提高泛化能力和避免过拟合。本文介绍了自动化特征选择的三种方法:过滤法(如SelectKBest)、包装法(如RFE)和嵌入法(如随机森林)。通过结合这些方法,可实现特征优化,包括数据预处理、初步筛选、模型训练与评估、特征优化和结果验证。自动化特征选择能提升模型性能,适应不同数据集和任务需求,为机器学习项目提供坚实基础。
|
4天前
|
机器学习/深度学习 人工智能 测试技术
自动化测试中AI与机器学习的融合应用
【4月更文挑战第29天】 随着技术的不断进步,人工智能(AI)和机器学习(ML)在软件测试中的应用越来越广泛。本文将探讨AI和ML如何改变自动化测试领域,提高测试效率和质量。我们将讨论AI和ML的基本概念,以及它们如何应用于自动化测试,包括智能测试用例生成,缺陷预测,测试执行优化等方面。最后,我们还将讨论AI和ML在自动化测试中的挑战和未来发展趋势。
|
15天前
|
机器学习/深度学习 人工智能 测试技术
探索自动化测试的未来:机器学习的新趋势
传统的软件测试方法已经无法满足当今快速发展的软件开发需求。随着人工智能和机器学习技术的不断进步,自动化测试也正在经历革命性的变革。本文将探讨机器学习在自动化测试中的应用,以及它对未来软件测试的影响。
|
2月前
|
存储 机器学习/深度学习 Apache
Apache Hudi与机器学习特征存储
Apache Hudi与机器学习特征存储
29 0
|
2月前
|
存储 机器学习/深度学习 分布式计算
Apache Hudi在Hopsworks机器学习的应用
Apache Hudi在Hopsworks机器学习的应用
29 0
|
2月前
|
消息中间件 分布式计算 Serverless
CDC一键入湖:当 Apache Hudi DeltaStreamer 遇见 Serverless Spark
CDC一键入湖:当 Apache Hudi DeltaStreamer 遇见 Serverless Spark
53 2
|
3月前
|
机器学习/深度学习 数据采集 算法
探索XGBoost:自动化机器学习(AutoML)
探索XGBoost:自动化机器学习(AutoML)
223 40

热门文章

最新文章

推荐镜像

更多