论文部分内容阅读
我们正处于大数据时代,数据的增长速率已经远远超出了单机计算能力的提升速率。怎样有效提高分类算法分析处理海量数据的能力是目前亟待解决的问题。在分类算法领域,SVM算法以其较好的健壮性和稳定性一直是主流的分类算法,SVM基于统计学习理论中的结构风险最小化原则,有效克服了经典统计方法在处理高维度数据中所出现的维度灾难问题。但SVM作为一个计算密集型算法,串行方法难以适应海量数据,面对大规模训练数据时,设法在保证分离精度的基础上提高SVM算法的增量学习能力和训练效率已成为SVM算法目前的研究热点。为了解决这一问题,研究人员将传统数据挖掘算法与新兴技术如云计算平台等融合,利用分布式计算能力提高算法的性能,取得了良好效果。通过以上的研究我们可以看出,传统的并行处理方法如MPI,网格计算存在开发复杂,扩展性不佳等问题,利用云计算方法提高SVM算法运行效率逐渐成为研究的焦点。Hadoop作为云计算中的主流平台,具有运行高效,部署简单的特点。但是,标准的MapReduce计算模型对分类算法的并行化主要通过对数据集的一次Map操作和Reduce操作得到最终分类模型,但当训练样本量巨大时,数据必须大量分片,即使计算资源充足,过多的调度与通信操作也会大大降低算法性能。此外,利用增量学习策略,除了可以适应动态数据,还可以通过选择适合的增量学习策略降低算法对硬件的要求。但面对增量学习这种需要迭代计算的数据挖掘场景,传统的MapReduce的计算模型却并不适合,其一,每轮迭代时重复载入的静态训练样本数据会造成网络资源的大量消耗,其二,迭代开始阶段时需要重复初始化运行环境,建立新的MapReduce任务。其三,大量的迭代计算会造成在Shuffle阶段产生大量的中间键值对,造成网络阻塞。故本文提出一种基于Hadoop的数据驱动的并行增量Adaboost-SVM算法(Parallel Incremental Adaboost-SVM,PIASVM)。本文的主要工作包括:利用Hadoop平台实现Adaboost-SVM分布式学习,利用特定规则将多个学习结果进行组合得到强学习机,从而获得比单个弱学习机更优秀的学习效果;增量学习中用权值刻画样本的空间分布特性,对样本进行迭代加权,利用遗忘因子实现新增样本的选择及历史样本的淘汰,从而达到减小实际训练样本规模的目的;设计基于HBase的Controller组件用以调度和优化迭代过程,持久化中间结果的同时减小原有框架迭代过程中的带宽压力。在优化的迭代计算机制的基础上,通过将增量学习与并行计算这两种提高算法运行效率的方法相结合,算法在具有对大规模数据高效处理能力的同时,集成学习与SVM算法相结合,使得算法同时可以保持较高的分类精度。多组实验表明,算法具有优良的加速比,扩展率和数据伸缩度,在保证分类精度的基础上提高了SVM算法对大规模数据的处理能力。