面向情报大数据的决策树增量学习方法与流程

文档序号:11287549阅读:589来源:国知局
面向情报大数据的决策树增量学习方法与流程

本发明涉及的是一种决策树增量学习方法。



背景技术:

随着数据库技术的迅速发展,商业情报数据量也正快速增加。这些数据中包含很多尚不为人所知的信息,如果把这些信息挖掘出来,那么对于人们的工作和生活都会很有帮助。因此,为了能够使用这些隐含在数据中的信息,就需要对数据进行一些分析处理。数据中锁定了大量的知识,也就是那些有可能很重要,然而还没有被提取出来的知识。目前的各种数据库可以实现数据操作的常用功能,但是却无法识别这些数据之间是否有关联以及存在什么样的规律,没有办法依据现在的数据估测以后的动态。正是因为这个原因,就会出现一种看似不太符合常理的情况,也就是数据量很大但是发现不了有价值信息导致知识贫乏。为了解决这种矛盾,怎样快速并且高效的从大量数据中发现有用的知识以及信息,自然就成为一种需求,数据挖掘就是为了满足该需求而出现的。数据挖掘作为发现大数据中隐藏的知识以及信息的分析方法,已成为了很多学者研究的热点。

机器学习可以将知识和信息从数据中发现并抽取出来,为了便于进行理解及使用,采用的表达方式往往也是比较简单的,是数据挖掘的技术基础。这些待提取的信息,往往不是那么容易就可以得到的,需要先取得数据,然后从中找到可能有价值的信息。数据挖掘可以找到新规律,提高人们对大量源数据的理解、认识和应用。数据挖掘不仅可以学到已经存在的知识,而且可以提炼那些还没有被找出的知识,然后用方便人们理解的方式进行保存,以便后续使用。自从开始机器学习的研究以来,人们根据学习的不同模式提出了多种机器学习算法,比如决策树算法、神经网络、遗传算法等。其中比较常用并且发展比较成熟的算法已经被应用在实际系统中和智能计算机的设计以及实现中。由于平时生活的需要,数据挖掘的发展成为了一种必然。

最开始出现的决策树算法一般都是不适用于增量的,典型代表有id3以及c4.5算法,随着数据量的迅速增加,利用传统的算法思想就会使得整个过程非常耗时,难以接受,所以后期就出现了很多决策树增量学习算法,比如id5r等。这些决策树算法在构建决策树的过程中,从某个结点分出的分支数目是与分类属性的属性值种类数完全对应的,如果一直采用这种方式分裂决策树,就会造成决策树有可能过于庞大,从而导致决策树在实际应用中的使用受到限制,而且过多的分支也有可能出现过度拟合现象,降低分类准确率。



技术实现要素:

本发明的目的在于提供一种能防止决策树过于庞大,使得增量学习速度更快,效率更高的面向情报大数据的决策树增量学习方法。

本发明的目的是这样实现的:

步骤一、结点n0作为决策树t的根结点,计算n0的结点分裂度量值sc(n0),如果n0是可分结点,那么将n0放入待分裂结点集合q中;

步骤二、如果决策树t中叶子结点的个数小于限定的最大叶子结点数并且待分裂结点集合q非空,对于待分裂结点集合q中的所有结点重复执行步骤三到步骤六的操作;

步骤三、从待分裂结点集合q中,挑选具有最大分裂度量值的结点nb,并且将结点nb从待分裂结点集合q中删去;

步骤四、分裂结点nb,并且计算分裂结点nb时产生的两个子节点的结点分裂度量值;

步骤五、对于分裂结点nb时产生的两个子结点中的任意一个子结点,如果该子结点是可以继续分裂的,就将其放入待分裂结点集合q中;

步骤六、分裂结点nb之后,如果决策树t的叶子结点的个数等于限定的最大叶子结点数或者待分裂结点集合q为空,那么就完成分裂过程并将待分裂结点集合q中所有的结点定义为叶子结点;

步骤七、根据构建的决策树,利用改进的iid5r算法进行增量学习,从而生成最终的决策树。

本发明提出了一种二分决策树的方法,用来防止决策树过于庞大,以便更好地应用于实际生活决策中,而且也提出了一种何时增量即增量时机的方法,使得增量学习速度更快,效率更高。

由于具有易于理解的优势,决策树成为最流行的分类方法之一。然而,利用已经存在的方法构建的决策树一般都会过于庞大、复杂化,因此在实际应用中实用性受到限制。此外,当今社会数据通常都是不断增加的,如果使用传统的决策树算法,即新增一批样本之后,将历史数据和新增数据再放在一起重新学习一遍,这种方式会把以前的知识遗忘掉,使得之前学习到的决策树没有任何意义。因此,这时候增量学习就变得尤为重要,即利用新增样本对以前学习到的决策树进行更新调整。

在深入研究决策树方法和增量学习方法的基础上,本发明提出一个新的决策树算法nolcdt。在分裂结点之前,nolcdt算法把结点中每个候选属性的多个属性值分别合并成两组,选择信息增益最大的候选属性将结点分为两个分支,这种方式可以避免生成太多的分支,进而防止决策树过于庞大。nolcdt算法在选择下一个将要分裂的结点方面也有所改进,该算法为所有候选分裂结点计算对应的结点分裂度量值,并且总是选择结点分裂度量值最大的候选结点作为下一个分裂结点,使得每次分裂都有最大的信息增益。此外,本发明在决策树增量学习算法id5r的基础上,提出一种改进算法iid5r,iid5r增加了评估分类属性质量的功能,且推导出分类属性被候选属性替代的最小样本数的计算公式。将nolcdt与iid5r相结合,提出了一个混合分类器算法hcs,hcs算法主要有两个阶段组成:构建初始决策树和增量学习。根据nolcdt建立初始决策树,然后使用iid5r进行增量学习。hcs算法综合了决策树以及增量学习方法的优点,既便于理解又适于增量学习。

选用uci数据库中的数据集作为实验的数据来源,将传统的决策树算法与本发明提出的混合分类器算法进行实验对比,结果表明hcs可以很好的解决增量问题,构建的决策树更简单便于理解,增量阶段消耗的时间减少。

附图说明

图1为nolcdt算法示意图;

图2为叶子结点个数没有限制条件下分类准确率的对比图;

图3为叶子结点个数没有限制条件下叶子结点个数的对比图;

图4为改变叶子结点个数上限的实验结果图;

图5为不同数据规模下的分类准确率对比图;

图6为不同数据规模下的执行时间对比图。

具体实施方式

下面结合图1,举例对本发明做更详细的描述。

步骤一、结点n0作为决策树t的根结点。计算n0的结点分裂度量值sc(n0),如果n0是可分结点,那么将n0放入待分裂结点集合q中。结点分裂标准是其中指的是属于结点ni的记录数,mg(ni)是将结点ni分裂为两个分支时的最大信息增益。

步骤二、如果决策树t中叶子结点的个数小于限定的最大叶子结点数并且集合q非空,对于集合q中的所有结点重复进行以下操作;

步骤三、从候选分类结点集合q中,挑选具有最大分裂度量值的结点nb,并且将结点nb从集合q中删去。

步骤四、分裂结点nb,并且计算分裂nb时产生的两个子节点的结点分裂度量值;

步骤五、对于分裂结点nb时产生的两个子结点中的任意一个结点,如果该子结点是可以继续分裂的,就将其放入集合q中;

步骤六、分裂结点nb之后,如果决策树t的叶子结点的个数等于限定的最大叶子结点数或者q为空,那么就终止该算法并将集合q中所有的结点定义为叶子结点;

步骤七、根据构建的决策树,利用改进的iid5r算法进行增量学习,从而生成最终的决策树。

下面这个公式给出了新增样本数量的一个阈值,也就是新增多少条样本之后,原来的分类属性会被候选属性所替代。

上式中,e代表属性的信息熵,a代表新增样本的数量,p代表正类对应的样本个数,n代表负类对应的样本个数,bj代表属性值取j对应的样本数。若新增样本数量a≤amax,即使在新增样本之后,分类属性的熵值还是小于候选属性的熵值,那么分类属性对应的信息增益值就会大于候选属性对应的信息增益值,因此依然将原分类属性当做结点的分类属性;若新增样本数量a>amax,这时候新增样本之后,分类属性对应的熵值大于候选属性的熵值那么分类属性对应的信息增益值就会小于候选属性对应的信息增益值,因此就要将原分类属性替换掉,把候选属性当做结点的分类属性,对决策树进行修整。

实验结果与分析:

(一)数据集的选取

为了验证本发明提出的方法的有效性,取uci机器学习数据库中的信贷审批(creditapproval)数据集进行验证。由于uci数据库中数据集个数有限,因此利用webharvest从网页中爬取了一些数据。webharvest是一种web数据爬虫工具,用于爬取指定页面中的指定内容,为此,需要编写对应网页的xml爬虫脚本,然后按照爬虫脚本中编写的xpath路径进行解析页面,从而获取到指定的页面内容,最后把这些内容进行组合得到实验所需要的数据。所采用的数据包含15个条件属性,一个类别属性(类别属性只包括两个类别,即好的信贷风险与差的信贷风险),样本数目为2*107个。首先从分类准确率和叶子结点个数这两个方面将提出的nolcdt算法与决策树的经典算法c4.5进行比较,用来评估nolcdt算法的性能。然后,再模拟发生增量的情况,首先使用nolcdt算法创建初始决策树,然后测试在使用提出的改进策略以及不使用该策略时,算法的分类准确率以及所需学习时间有多少差别。

uci机器学习数据库包含几百个实验数据库以及人工数据库,被全球各地的相关专家以及学者使用,用来进行各种研究,是使用广泛的数据库系统。国际上很多著名的算法使用的都是uci机器学习数据库中的数据集,因此,本发明也使用uci机器学习数据库中的数据集,以便保证实验的可靠性。

(二)结果及分析

为了充分证明提出的nolcdt算法构建的决策树不仅简单而且准确率高,以及验证提出的iid5r算法确实能够提高学习速度。因此做了两组实验,这两组实验如下。

1、nolcdt算法与c4.5算法的对比实验。

2、id5r算法与iid5r算法的对比实验。

实验结果可以看出nolcdt算法比传统的决策树算法c4.5的准确度要高。这些结果表明,在分裂结点的时候,通过合并分支,并且采用一种新的分裂标准来选择当前最优的分裂结点,能够使得nolcdt算法充分利用有限的叶子结点,得到一个更简洁并且准确率更高的决策树。根据实验结果,可以看出提出的改进策略确实能够提高学习速度,使得算法的执行时间缩短。给定一棵初始决策树以及增量数据集,当新的样本到来之后,并不一定会引起决策树结构的改变。为了解决如何判断是否需要调整决策树的结构这个问题,本发明采用的方法就是根据当前最近的这个样本,来计算该结点的分类属性将会被候选属性所替换的最小记录数。具体方法是,根据证明推理得到的公式来算出各个候选属性如果能替换当前分类属性的最小记录数,如果新增记录数达到了某个候选属性的最小记录数,那么就把该候选属性与原来的分类属性进行调换,这个调换过程就是使用的上拉算法;如果还没有达到任何一个候选属性的最小记录数,那么只需要把新样本的信息记录下来即可,对决策树中该结点的分类属性的选择并没有影响。

(三)结论:

1、由于传统的决策树算法在构建决策树的时候,每个结点产生的分支和分类属性的取值个数相同,这样就会产生大量的分支,生成的决策树拥有大量的结点,就会导致决策树过于复杂,决策规则过多。因此实用性受到限制,为了解决这个问题,本发明提出一个决策树算法nolcdt。在分裂结点之前,nolcdt算法把结点中每个候选属性的多个属性值分别合并成两组,选择信息增益最大的候选属性将结点分为两个分支,这种方式可以避免生成太多的分支,进而防止决策树过于庞大。

2、nolcdt算法在选择下一个将要分裂的结点方面也有所改进,该算法为所有候选分裂结点计算对应的结点分裂度量值,并且总是从所有的候选分裂结点中选择结点分裂度量值最大的结点作为下一个分裂结点,使得每次分裂都有最大的信息增益。

3、为了提高增量学习的效率,本发明提出对决策树增量学习算法id5r的一种改进算法iid5r,当新的样本到来之后,并不是任何时候都需要对决策树进行结构的调整,这时候就需要有个度量标准。iid5r提出一种计算记录下限值的方法,当新增记录数小于等于这个下限值,不需要对决策树进行结构的调整;当新增记录数大于这个下限值,就需要对决策树的对应结点的分类属性进行修正。

4、将nolcdt与iid5r相结合,提出了一个混合分类器算法hcs,hcs算法主要有两个阶段组成:构建初始决策树和增量学习。根据nolcdt建立初始决策树,然后使用iid5r进行增量学习。hcs算法综合了决策树以及增量学习方法的优点,既便于理解又适于增量学习。

由于nolcdt算法每次分裂最多产生两个分支,可能会使得决策树的深度增加,这样nolcdt算法和传统的决策树算法相比,时间效率就会稍微低一些。后续研究中应该将nolcdt算法与其他的剪枝方法进行结合考虑,降低决策树的深度。

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