一种基于Spark框架利用梯度提升决策树进行数据挖掘的算法的制作方法

文档序号:12470269阅读:592来源:国知局

本申请的技术属于网络数据分析及挖掘算法领域,特别是涉及基于Spark框架利用梯度提升决策树进行数据挖掘的方法以实现数据高效提取和利用。



背景技术:

数据挖掘又称数据库中的知识发现,是指从大量的不完全的、有噪声的、模糊的数据中提取隐含的、未知的、非平凡的及有潜在应用价值的信息或模式,融合了数据库、人工智能、机器学习、统计学等多个领域的理论和技术。数据挖掘工具能够对将来的趋势和行为进行预测,从而很好地支持人们的决策。数据挖掘的一个重要功能是数据分类,数据分类是指将数据映射到预先定义好的群组或类,目前常用的分类方法为基于决策树的方法。用决策树进行分类,生成规则易于理解并且高效。由于树的规模独立于数据库规模,所以决策树对于大规模数据库具有很好的扩展性。决策树是以实例为基础的归纳学习算法,它从一组无次序、无规则的元组中推理出决策树表示形式的分类规则,采用自顶向下的递归方式,在决策树的内部节点进行属性值的比较,并根据不同的属性值从该节点向下分支,叶节点是要学习划分的类。决策树中叶子节点代表实例样本所属的分类类别。树上的每一个非叶子节点指定了对实例的某个决策属性的测试,并且该节点的每一个后继分支对应于该决策属性的一个可能值,从根到叶节点的一条路径就对应着一条合取规则,整个决策数就对应着一组析取表达式规则。

用决策树进行分类主要包括两个步骤:第一步是利用训练集生成一棵决策树,建立决策树模型,这个过程实际上是一个从数据中获取知识,进行机器学习的过程;第二步是利用生成的决策树对输入数据进行分类,对输入的纪录,从根节点依次测试记录的属性值,直到到达某个叶子节点,从而找到该记录所在的类。基本的决策树生成方法是通过自顶向下增长节点实现的,其核心是为每个节点选取能最佳分类当前数据集的属性,成为该节点的决策属性。

Spark是一个Apache项目,它被标榜为“快如闪电的集群计算”。它拥有一个繁荣的开源社区,并且是目前最活跃的Apache项目。Spark提供了一个更快、更通用的数据处理平台。和Hadoop相比,Spark可以让你的程序在内存中运行时速度提升100倍,或者在磁盘上运行时速度提升10倍。Spark是一个基于内存计算的开源的集群计算系统,目的是让数据分析更加快速,Spark是一种与Hadoop相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使Spark在某些工作负载方面表现得更加优越,换句话说,Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。

梯度提升决策树是一种集成学习的方法,它在高维、大数据上表现出不俗的效果。梯度提升决策树方法采用了特征子空间来构建模型,当数据中的噪声过多时,梯度提升决策树的回归器可能会包含噪声,这些噪声会影响回归效果,并进一步降低整体预测的准确度。

高维数、海量数据的处理和挖掘是目前数据分析中的难点,本技术方案就是借鉴梯度提升决策树在处理数据中的优势,采用降维方式将数据维数降低实现提高数据分析的效率和准确度。



技术实现要素:

本申请技术方案的目的在于针对高维、海量数据的分析困难,提出一种基于Spark框架下面向大数据采用梯度提升决策树并行实现数据挖掘的算法。该方法中通过对特征向量的分析,采用主成分分析的方法,实现了数据特征降维处理,提高梯度提升决策树挖掘算法的计算效率,从而实现了应对高维、复杂、海量数据的挖掘能力。

实现上述发明目的的基于Spark框架利用梯度提升决策树进行数据挖掘的算法采用如下技术方案:一种基于Spark框架利用梯度提升决策树进行数据挖掘的算法,该算法包括如下步骤:(1)将原始海量数据分布式存储于Hadoop平台的分布式文件系统HDFS上并分配成n个数据集;(2)每个数据集降维处理,抽取出最重要的特征向量,数据集数据的特征维度从M降低到m,m<M;(3)降维后的数据集采用随机采样方式,按照数据量3:1的比例划分为训练数据集和测试数据集;(4)对训练数据集数据采用梯度提升决策树进行迭代优化,选择损失函数最小的决策树模型为该数据集的最优模型;(5)对每个数据集优化得到的决策树模型进行加权平均获得最终的梯度提升决策树模型;(6)利用(5)步的梯度提升决策树模型对各组数据集中的测试数据进行预测,确定该模型的准确性并实现数据挖掘。

上述步骤(2)中采用主成分分析法进行数据特征量降维处理。抽取最重要的特征向量,把数据集特征维度从M降低到m,实现优化数据模型的挖掘效率和模型训练效果,后续计算大大提高了运算效率,降低了复杂度,同时提高了预测准确度。

步骤(1)中所分配成n个数据集在不同的节点上平行进行分析处理。步骤(4)中采用内存计算框架Spark进行迭代运算,并通过此分布式计算框架将运算算法推送到分布式集群的每个数据节点的数据集上,对每个节点上的数据集进行本地逻辑运算。通过上述分布式计算框架,将挖掘算法推送到分布式集群的每个数据节点上,每个节点上的数据集进行本地逻辑运算,各个节点通过并行运算的方式提高运算效率,然后,对各个计算结果进行汇总,得到最终结果。

上述步骤(4)中利用梯度提升决策树对训练数据集进行训练,设置迭代次数n,经过n次迭代计算,从而得到一个梯度提升决策树模型。每一次建立模型是在之前建立模型损失函数的梯度下降方向。而损失函数(loss function)描述的是模型的不靠谱程度,损失函数越大,则说明模型越容易出错。通过损失函数持续的下降,表明模型在不断的改进,最好的方式就是让损失函数在其梯度(Gradient)的方向上下降。梯度提升决策树是建立多颗树,其决策的过程也是所有树输出结果的加权平均。上述关键优化过程包括:a、对每个决策树模型进行均方根误差计算,并以此对模型进行加权平均;b、当前树的建立是基于前面所有树的建立的,并以此迭代计算,直至达到最终设置的迭代次数。

本申请的算法应用梯度提升决策树在迭代过程中,引入均方根误差加强平均法,提高了信噪比,降低了噪音数据,提高了数据挖掘算法的效果,使模型准确度有了极大提高。待挖掘和分析的数据集存放于分布式文件系统,对整个大数据采用分而治之的策略,使挖掘运算得以并行化运行,简化了算法复杂度,提高了运算速度。梯度提升决策树在内存计算框架Spark上的使用,充分利用了其内存管理机制、运算优化机制和计算容错机制,不但提高了挖掘算法的运行效率,更提高可靠性。

附图说明

图1是本申请的基于Spark框架利用梯度提升决策树进行数据挖掘的算法流程图。

具体实施方式

为更清楚说明本发明技术方案,下面参考图1进行具体实施方式介绍。首先,本方案采用Hadoop分布式系统+Spark内存计算框架,大数据集群组成如下:客户端服务器1台,数据节点服务器24台,其它辅助服务器5台,共计30台服务器。每台数据节点服务器配置如下:2颗Intel(R)Xeon(R)CPU E5-2620v2@2.10GHz,96GB DDR3ECC内存,12块2T SATA盘,2个万兆网口,Centos6.4 64位Linux操作系统。软件系统如下:Apache Hadoop 2.60,Spark 1.60,编程语言为Scala。

首先将数据存储于分布式文件系统平台,均匀分布于n个数据节点;采用独立成分分析的方法对每个数据节点上数据集进行降维处理;降维后的每个节点上的数据按照数量3:1的比例划分为训练数据集和测试数据集,从而生成n个训练数据集;随后将每个数据集中的训练数据输入梯度提升决策树计算公式进行训练,选择损失函数最小的决策树模型为该数据集的最优模型,从而得到每个节点上的决策树模型,其具体实现过程是将24个训练数据集在加载到Spark中时,将根据本地数据块的大小,自动映射成n个RDD对象;RDD对象输入梯度提升决策树算法,通过Pipelining技术进行优化执行方案,将整个执行流程分解为多个阶段(Stage);将每个阶段的工作根据RDD对象的数量,进一步分解为相同数量的子任务数;通过资源调度器,将各个子任务分配到数据节点上;数据节点在本地执行具体的计算任务,得到计算模型;在完成上述每个节点上的数据训练得到决策树模型后,对每个数据集优化后得到的决策树模型进行加权平均获得最终的梯度提升决策树模型;最后利用梯度提升决策树模型对测试数据进行预测,根据预测结果,计算模型预测准确度。

本发明采用主成分分析的算法对高维数据特征进行降维处理,不但压缩了原始数据量,降低了计算量,而且大大降低了运算复杂度,提高了计算效率。梯度提升决策树在迭代过程中,引入均方根误差加强平均法,提高了信噪比,降低了噪音数据,提高了数据挖掘算法的效果,使模型准确度有了极大提高。数据集存放于分布式文件系统,对整个大数据采用分而治之的策略,使挖掘运算得以并行化运行,简化了算法复杂度,提高了运算速度。梯度提升决策树在内存计算框架Spark上的使用,充分利用了其内存管理机制、运算优化机制和计算容错机制,不但提高了挖掘算法的运行效率,更提高可靠性。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明实质内容上所作的任何修改、等同替换和简单改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1