关键词:
Bootstrap抽样
Bagging集成学习
Spark分布式计算
质量选择
摘要:
随着计算机新技术在各行业的应用和大数据理念的广泛传播,人们慢慢认识到社会已进入大数据时代。然而,海量数据在带来丰富效益的同时,也加深了技术人员处理分析数据的难度。在计算机科学领域,机器学习可以从这些数据中挖掘出大量可用信息,辅助人类做出各种决策。其中,集成学习是机器学习中常用的增益手段。针对大规模数据分析,单机显然有些力不从心,无法完成大规模数据分析与建模,以MapReduce范式为基础的Hadoop、Spark等框架在分布式计算领域中得到了广泛的采纳。
Bootstrap是一种经典的有放回随机抽样方法,它从给定原始数据集中进行等量的有放回随机抽样得到一个Bootstrap样本集。Bootstrap思想派生出Bagging(Bootstrap aggregating)集成学习模型,它通过有放回随机抽样得到多个Bootstrap样本集后,对每个样本进行独立的分类或回归建模,最后集成计算每个样本的子结果得到最终集成结果。虽然传统Bootstrap抽样和Bagging集成学习的串行程序容易实现,但是计算时间长,数据扩展性差,不适合大规模Bootstrap样本的集成学习,且对于较大的原始数据集和复杂建模算法,程序运行效率低,浪费内存资源。Bagging集成学习有良好的并行性,可并行化执行,然而对同一原始数据集的不同分析任务,每次运行都要重新进行在线Bootstrap抽样,数据可重用性低,浪费计算资源;同时,在建立很大规模的集成模型时,计算效率和集成模型扩展能力受集群内存资源限制。
本文提出并设计了一种基于Spark分布式计算引擎的Bootstrap样本划分(Bootstrap Sample Partition,BSP)大数据模型和基于BSP数据模型的分布式集成学习方法。利用大数据分布式计算的思路解决上述存在的痛点与问题,高效地生成原始数据集的BSP数据模型,一次性生成,可重复使用,支持多次不同集成学习任务的数据分析,同时提高了大规模Bootstrap样本集成学习的计算效率和集成模型的预测精度。
具体研究成果包括两大内容:(1)提出BSP数据模型分布式生成算法,可以高效地预先生成原始数据集的大量BSP数据块作为BSP数据模型,为Bootstrap统计分析和集成学习提供Bootstrap样本集,提高后续数据分析的计算效率和建模能力。BSP数据模型将训练数据表达成Bootstrap样本集的集合,存储成HDFS分布式数据文件,并将此算法封装成Spark内部的转换算子to BSP,支持大规模BSP数据模型的高效生成。(2)提出基于BSP数据模型的分布式集成学习方法。从BSP数据模型中随机选取部分数据块,将每个数据块读入集群各节点的虚拟机中,接着由主节点分发串行算法作用于每个数据块上独立地、并行地进行统计分析计算或模型训练计算,可选择加入对BSP数据块的质量优选策略,然后将这些BSP数据块的局部子结果传送到主节点做集成计算,生成集成学习结果。本方法的BSP数据模型生成和子模型建模均采用非MapReduce范式的分布式并行计算方法,每个数据块的计算独立完成,减少了计算节点间的数据通信,整个建模预测过程只有一次聚合集成操作,极大地提高了计算效率。它解决了传统Bootstrap抽样和Bagging集成学习的串行实现,计算效率低,数据扩展性差,不适合大规模Bootstrap样本的集成学习等问题。
根据上述研究内容,本文实现了一套完整的基于Spark计算引擎的面向大数据分析的分布式分析系统,系统中包含BSP数据模型、分布式生成算法和分布式集成学习方法的落地,所有配套的相关算法和算子均已集成至Spark开源软件中,可供Spark应用程序调用。实验结果表明,新方法可以高效地生成原始数据集的BSP数据模型,支持多种分布式集成学习的数据分析,同时提高了大规模Bootstrap样本集成学习的计算效率和集成模型的预测精度及稳定性。