CN105808582A - 基于分层策略的决策树并行生成方法和装置 - Google Patents

基于分层策略的决策树并行生成方法和装置 Download PDF

Info

Publication number
CN105808582A
CN105808582A CN201410849374.0A CN201410849374A CN105808582A CN 105808582 A CN105808582 A CN 105808582A CN 201410849374 A CN201410849374 A CN 201410849374A CN 105808582 A CN105808582 A CN 105808582A
Authority
CN
China
Prior art keywords
node
attribute
layer
division
interval
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201410849374.0A
Other languages
English (en)
Inventor
曹莉
金晓明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201410849374.0A priority Critical patent/CN105808582A/zh
Publication of CN105808582A publication Critical patent/CN105808582A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供一种基于分层策略的决策树并行生成方法和装置,自顶下行按层构造决策树,在计算第n层的每个节点的分裂属性和最佳分裂点时,只需要扫描一次训练数据集,根据第n层的每个节点的过滤条件将训练数据集中的没条训练数据归属到第n层的每个节点中,然后,分别计算每个节点的分裂属性和最佳分裂点,生成每个节点的节点信息,根据决策树的各层的每个节点的节点信息构造决策树。上述方法中,在计算每层的每个节点的分裂属性和最佳分裂点时,通过根据各节点的过滤条件,并行的统计每个节点内的每个属性的每个分裂区间内的每种类别的训练数据的个数,使得同一层的各节点的分裂属性和最佳分裂点能够并行计算,提高了决策树的性能。

Description

基于分层策略的决策树并行生成方法和装置
技术领域
本发明实施例涉及数据通信技术,尤其涉及一种基于分层策略的决策树并行生成方法和装置。
背景技术
决策树(decisionTree)是用于分类和预测一种主要方法,用来表示决策和相应的决策结果对应关系的树。树中的每个非叶子节点表示一个决策,该决策的值导致不同的决策结果(叶子节点)或者影响后面的决策选择。决策树从根节点到叶子节点对应一条规则,整棵树对应一组表达式规则。
现有决策树的生成过程采用递归方式,自顶向下依次计算决策树的每个节点的分裂属性,各个节点的分裂属性的计算是串行的。在计算每个节点的分裂属性时,需要扫描一次训练数据集,计算训练数据集中每个属性的所有可能分裂点和分裂点对应的信息增益,选择最优增益信息增益对应的分裂点作为该属性的最佳分裂点,再对该节点的所有属性的增益信息增益进行比较,选择最优增益信息增益对应的属性作为该节点的分裂属性,依次循环,直到决策树的所有节点为叶子节点结束训练。当训练数据集很大时,决策树的生成过程耗时很长。为了提高决策树的生成速度,可以采用并行化算法计算每个属性的增益信息增益。决策树的并行化算法主要是基于Hadoop的MapReduce框架实现,每个属性的增益信息增益计算是在Hadoop集群的多个数据节点上并行运算的,即每个数据节点负责处理该属性的部分训练训练数据,最后将所有数据节点的计算结果综合得到该属性的增益信息。
由于MapReduce并行化算法中每次Map针对的是属性级别的,且每次Map结果都需要将中间结果写到磁盘,对于高维海量的训练数据,当决策树的节点个数越来越多时,该决策树并行化算法性能将严重下降,甚至无法承受。
发明内容
本发明实施例提供一种基于分层策略的决策树并行生成方法和装置,能够逐层构造决策树,同层的各节点的分裂属性和最佳分裂点能够并行计算,从而提高了决策树的性能。
本发明第一方面提供一种基于分层策略的决策树并行生成方法,包括:
构造训练数据集包括的多个属性中每个属性的分裂点序列,根据所述每个属性的分裂点序列中多个分裂点的顺序,分别构造所述每个属性的分裂区间;
根据所述决策树的层数确定所述决策树的第n层的节点个数,所述决策树的最大层数不大于所述决策树的深度;
将从所述决策树的根节点到所述第n层的每个节点所在的分支的所有分裂属性表示的具体条件作为所述第n层的每个节点的过滤条件;
扫描所述训练数据集,根据所述第n层的每个节点的过滤条件,并行的将所述训练数据集中的每条训练数据归属到所述第n层的每个节点内,并获取所述第n层的每个节点内所述每个属性的分裂信息,其中,所述第n层的每个节点内所述每个属性的分裂信息包括:所述每个节点内所述每个属性的每个分裂区间内所述训练数据集的每种类别的训练数据的个数,所述训练数据集包括至少两种类别;
根据所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,计算所述第n层的每个节点的分裂属性和最佳分裂点;
生成所述第n层的每个节点的节点信息,根据所述决策树的各层的每个节点的节点信息构造所述决策树,所述每个节点的节点信息包括:节点编号、节点类型、所述分裂属性和所述最佳分裂点。
结合本发明第一方面,在本发明第一方面的第一种可能的实现方式中,所述扫描所述训练数据集,根据所述第n层的每个节点的过滤条件,并行的将所述训练数据集中的每条训练数据归属到所述第n层的每个节点内,并获取所述第n层的每个节点的分裂信息,包括:
扫描所述训练数据,依次判断所述每条训练数据是否符合所述第n层的每个节点的过滤条件,将所述每条训练数据归属到满足过滤条件的节点中;
获取所述第n层的每个节点内的训练数据所属的分裂区间的标识;
根据所述第n层的每个节点内的训练数据所属的分裂区间的标识和所述第n层的每个节点内的训练数据的类别,统计所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,其中,所述第n层的每个节点内的训练数据的类别为所述训练数据集包括的至少两种类别中的一种类别。
结合本发明第一方面的第一种可能的实现方式,在本发明第一方面的第二种可能的实现方式中,所述根据所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,计算所述第n层的每个节点的分裂属性和最佳分裂点,包括:
根据所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,计算所述第n层的每个节点内所述每个属性的每个分裂点的分裂指标,根据所述第n层的每个节点内所述每个属性的每个分裂点的分裂指标分别确定所述第n层的每个节点的分裂属性和最佳分裂点。
结合本发明第一方面以及本发明第一方面的第一种和第二种可能的实现方式,在本发明第一方面的第三种可能的实现方式中,所述第n层的每个节点内所述每个属性的分裂信息存储在预先定义的数据阵列中,所述第n层的数据阵列的长度为:1+numFea*numN,numFea表示所述训练数据集包括的属性的总个数,numN表示所述第n层的节点个数,所述数据阵列的形式如下:
tree_node_arr=[label,b11,b12,b1k,b21,b22,b2k,.....,bN1,bN2,bNk]
其中,label中用于存储类别值,bij中用于存储第i个节点的第j个属性的分裂信息,i=1,2,...N,j=1,2,...k。
结合本发明第一方面的第三种可能的实现方式,在本发明第一方面的第四种可能的实现方式中,当所述每个属性的取值为连续值类型时,所述构造训练数据集包括的多个属性中每个属性的分裂点序列,根据所述每个属性的分裂点序列中多个分裂点的顺序,分别构造所述每个属性的分裂区间,包括:
根据预设的最大分裂区间个数和所述训练数据集中的训练数据的个数计算所述训练数据集的采样系数;
根据所述采样系数和所述最大分裂区间个数计算采样步长;
根据所述采样步长对所述训练数据集进行采样得到采样训练数据集;
根据所述采样训练数据集中训练数据的个数和所述最大分裂区间个数计算分裂区间步长;
根据所述分裂区间步长从所述采样训练数据集中确定所述每个属性的分裂点,构造所述每个属性的分裂点序列,所述每个属性的分裂点序列中分裂点的个数不大于所述最大分裂区间个数;
按照所述每个属性的分裂点序列中分裂点的取值从小到大依次构造所述每个属性的分裂区间。
结合本发明第一方面的第四种可能的实现方式,在本发明第一方面的第五种可能的实现方式中,所述根据预设的最大分裂区间个数和所述训练数据集中的训练数据个数计算所述训练数据集的采样系数,包括:
采用如下公式计算所述采样系数:fra=Bin_Max*Bin_Max/count,其中,Fra表示所述采样系数,Bin_Max表示所述最大分裂区间个数,count表示所述训练数据集包括的训练数据个数。
结合本发明第一方面的第三种可能的实现方式,在本发明第一方面的第六种可能的实现方式中,当所述每个属性的取值为枚举值类型时,所述构造训练数据集包括的多个属性中每个属性的分裂点序列,根据所述每个属性的分裂点序列中多个分裂点的顺序,分别构造所述每个属性的分裂区间,包括:
计算所述每个属性的每个分裂点的类中心,按照所述每个属性的分裂点的类中心的大小,从小到大对所述每个属性的分裂点进行排序,得到所述每个属性的分裂点序列;
按照所述每个属性的分裂点序列中分裂点的取值从小达到依次构造所述每个属性的分裂区间。
本发明第二方面提供一种基于分层策略的决策树并行生成装置,包括:
区间构造模块,用于构造训练数据集包括的多个属性中每个属性的分裂点序列,根据所述每个属性的分裂点序列中多个分裂点的顺序,分别构造所述每个属性的分裂区间;
节点个数确定模块,用于根据所述决策树的层数确定所述决策树的第n层的节点个数,所述决策树的最大层数不大于所述决策树的深度;
过滤条件确定模块,用于将从所述决策树的根节点到所述第n层的每个节点所在的分支的所有分裂属性表示的具体条件作为所述第n层的每个节点的过滤条件;
获取模块,用于扫描所述训练数据集,根据所述第n层的每个节点的过滤条件,并行的将所述训练数据集中的每条训练数据归属到所述第n层的每个节点内,并获取所述第n层的每个节点内所述每个属性的分裂信息,其中,所述第n层的每个节点内所述每个属性的分裂信息包括:所述每个节点内所述每个属性的每个分裂区间内所述训练数据集的每种类别的训练数据的个数,所述训练数据集包括至少两种类别;
计算模块,用于根据所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,计算所述第n层的每个节点的分裂属性和最佳分裂点;
决策树构造模块,用于生成所述第n层的每个节点的节点信息,根据所述决策树的各层的每个节点的节点信息构造所述决策树,所述每个节点的节点信息包括:节点编号、节点类型、所述分裂属性和所述最佳分裂点。
结合本发明第二方面,在本发明第二方面的第一种可能的实现方式中,所述获取模块具体用于:
扫描所述训练数据,依次判断所述每条训练数据是否符合所述第n层的每个节点的过滤条件,将所述每条训练数据归属到满足过滤条件的节点中;
获取所述第n层的每个节点内的训练数据所属的分裂区间的标识;
根据所述第n层的每个节点内的训练数据所属的分裂区间的标识和所述第n层的每个节点内的训练数据的类别,统计所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,其中,所述第n层的每个节点内的训练数据的类别为所述训练数据集包括的至少两种类别中的一种类别。
结合本发明第二方面的第一种可能的实现方式,在本发明第二方面的第二种可能的实现方式中,所述计算模块具体用于:
根据所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,计算所述第n层的每个节点内所述每个属性的每个分裂点的分裂指标,根据所述第n层的每个节点内所述每个属性的每个分裂点的分裂指标分别确定所述第n层的每个节点的分裂属性和最佳分裂点。
结合本发明第二方面以及本发明第二方面的第一种和第二种可能的实现方式,在本发明第二方面的第三种可能的实现方式中,所述第n层的每个节点内所述每个属性的分裂信息存储在预先定义的数据阵列中,所述第n层的数据阵列的长度为:1+numFea*numN,numFea表示所述训练数据集包括的属性的总个数,numN表示所述第n层的节点个数,所述数据阵列的形式如下:
tree_node_arr=[label,b11,b12,b1k,b21,b22,b2k,.....,bN1,bN2,bNk]
其中,label中用于存储类别值,bij中用于存储第i个节点的第j个属性的分裂信息,i=1,2,...N,j=1,2,...k。
结合本发明第二方面的第三种可能的实现方式,在本发明第二方面的第四种可能的实现方式中,当所述每个属性的取值为连续值类型时,所述区间构造模块具体用于:
根据预设的最大分裂区间个数和所述训练数据集中的训练数据的个数计算所述训练数据集的采样系数;
根据所述采样系数和所述最大分裂区间个数计算采样步长;
根据所述采样步长对所述训练数据集进行采样得到采样训练数据集;
根据所述采样训练数据集中训练数据的个数和所述最大分裂区间个数计算分裂区间步长;
根据所述分裂区间步长从所述采样训练数据集中确定所述每个属性的分裂点,构造所述每个属性的分裂点序列,所述每个属性的分裂点序列中分裂点的个数不大于所述最大分裂区间个数;
按照所述每个属性的分裂点序列中分裂点的取值从小到大依次构造所述每个属性的分裂区间。
结合本发明第二方面的第四种可能的实现方式,在本发明第二方面的第五种可能的实现方式中,所述根据预设的最大分裂区间个数和所述训练数据集中的训练数据个数计算所述训练数据集的采样系数,包括:
采用如下公式计算所述采样系数:fra=Bin_Max*Bin_Max/count,其中,Fra表示所述采样系数,Bin_Max表示所述最大分裂区间个数,count表示所述训练数据集包括的训练数据个数。
结合本发明第二方面的第三种可能的实现方式,在本发明第二方面的第六种可能的实现方式中,当所述每个属性的取值为枚举值类型时,所述区间构造模块具体用于:
计算所述每个属性的每个分裂点的类中心,按照所述每个属性的分裂点的类中心的大小,从小到大对所述每个属性的分裂点进行排序,得到所述每个属性的分裂点序列;
按照所述每个属性的分裂点序列中分裂点的取值从小达到依次构造所述每个属性的分裂区间。
本发明实施例的基于分层策略的决策树并行生成方法和装置,自顶下行逐层构造决策树,在计算第n层的每个节点的分裂属性和最佳分裂点时,只需要扫描一次训练数据集,根据第n层的每个节点的过滤条件,并行的将训练数据集中的每条训练数据归属第n层的每个节点,并统计第n层的每个节点内每个属性的每个分裂区间内每种类别的个数,最后,根据第n层的每个节点内每个属性的每个分裂区间内每种类别的训练数据的个数,计算第n层的每个节点的分裂属性和最佳分裂点。上述方法中,在计算每层的每个节点的分裂属性和最佳分裂点时,通过根据各节点的过滤条件,并行的统计每个节点内的每个属性的每个分裂区间内的每种类别的训练数据的个数,使得同一层的各节点的分裂属性和最佳分裂点能够并行计算,提高了决策树的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为决策树的一种结构示意图;
图2为本发明实施例一提供的基于分层策略的决策树并行生成方法的流程图;
图3为本发明实施例二提供的基于分层策略的决策树并行生成方法的流程图;
图4为本发明实施例三提供的同层节点之间并行生成分裂属性和最佳分裂点的方法的流程图;
图5为本发明实施例四提供的基于分层策略的决策树并行生成装置的结构示意图;
图6为本发明实施例五提供的基于分层策略的决策树并行生成装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
决策树是用于分类和预测的主要技术,着眼于从一组无规则的训练数据集中推理出决策表示的分类规则,现有技术中,采用自顶向下的递归方式生成,在生成每个节点时,确定该节点的分裂属性,根据分裂属性确定该节点向下的分支,在决策树的叶子节点得到结论。因此,从决策树的根节点到叶子节点就对应一条规则,整棵决策树就对应一组表达式规则。
如表1所示,表1为一个训练数据集,该训练数据集记录着某银行的客户信用记录,表1中每行为一条训练数据,每列为一个属性字段,该训练数据集的属性包括:年龄、职业、月薪和信用等级等。银行需要解决的问题是,根据该训练数据集,建立一个信用等级分析模型,该信用等级分析模型可以为一棵决策树。当银行在未来的某个时刻收到某个客户的贷款申请时,依据该决策树对应的规则,能够根据该客户的年龄、职业、月薪等属性,来预测该用户的信用等级,以确定是否提供贷款给该用户。
表1
姓名 年龄 职业 月薪 …… 信用等级
张山 23 学生 1000 ……
王刚 45 公务员 3000 ……
李德海 38 职员 800 ……
…… …… …… …… …… ……
陈芳 50 教师 2600 ……
该例子研究的重点是“信用等级”这个属性,给定一个信用等级未知的客户,要根据他/她的其他属性来估计“信用等级”的值是“优”、“良”还是“差”,也就是说,要把这客户划分到信用等级为“优”、“良”、“差”这3个类别的某一类别中去。这里把“信用等级”这个属性称为“类别号属性”。该训练数据集中“信用等级”属性的全部取值就构成了类别集合:Class={“优”,“良”,“差”}。
采用决策树算法,输入该训练数据集,就可以构造出一棵类似于图1所示的决策树,图1为决策树的一种结构示意图,如图1所示,该决策树共有8个节点,节点1为根节点,节点4、5、6、7、8为叶子节点,节点2和3为中间节点,叶子节点不能够再进行属性分裂,中间节点和根节点可以进行属性分裂,当某个节点按照某一属性分裂时,该属性称为分裂属性。图1中,决策树共有三个属性,节点1的分裂属性为年龄,节点2的分裂属性为职业,节点3的分裂属性为月薪。
现有决策树的生成过程采用递归方式,自顶向下依次计算决策树的每个节点的分裂属性,各个节点的分裂属性的计算是串行的。在计算每个节点的分裂属性时,都需要扫描一次训练数据集,计算训练数据集中每个属性的所有可能分裂点和分裂点对应的信息增益,选择最优信息增益对应的分裂点作为该属性的最佳分裂点,再对该节点的所有属性的信息增益进行比较,选择最优信息增益对应的属性作为该节点的分裂属性,依次循环,直到决策树的所有节点为叶子节点结束训练。例如,在生成图2所示的决策树时,现有技术中需要扫描8次训练数据集,当训练数据集的中是训练数据很大时,决策树的性能将严重下降,甚至无法承受。
为了解决现有技术的问题,本发明实施例一提供一种基于分层策略的决策树并行生成方法,分层策略是指按水平方向的层次结构,逐层构建决策树,即并行构造同一层的所有节点,在构造每层节点时,只需要扫描一次训练数据集。图2为本发明实施例一提供的基于分层策略的决策树并行生成方法的流程图,本实施例的方法由基于分层策略的决策树并行生成装置生成,如图2所示,本实施例提供的方法可以包括以下步骤:
步骤101、构造训练数据集包括的多个属性中的每个属性的分裂点序列,根据每个属性的分裂点序列中多个分裂点的顺序,分别构造每个属性的分裂区间。
训练数据集的属性的取值有两种类型:连续值类型和枚举值类型。构造训练数据集的所有属性的分裂区间的主要目的是方便连续型属性的处理,当连续型属性取值稠密时,将连续型属性的取值划分为类似枚举型属性,能够减少分裂点的个数。
当每个属性的取值为连续值类型时,构造训练数据集包括的多个属性中每个属性的分裂点序列,根据每个属性的分裂点序列中多个分裂点的顺序,分别构造每个属性的分裂区间,具体为:
(1)根据预设的最大分裂区间个数和训练数据集中的训练数据的个数计算训练数据集的采样系数。
其中,根据预设的最大分裂区间个数和所述训练数据集中的训练数据个数计算所述训练数据集的采样系,具体为:
采用如下公式计算该采样系数:fra=Bin_Max*Bin_Max/count,其中,Fra表示采样系数,Bin_Max表示最大分裂区间个数,count表示训练数据集包括的训练数据个数。可选地,也可以根据最大分裂区间个数确定该属性的实际分裂区间个数,然后,采用如下公式计算该采样系数:
Fra=numBin*numBin/count,numBin表示该属性的实际的分裂区间个数,该属性的实际分裂区间个数小于该最大分裂区间个数。
(2)根据该采样系数和该最大分裂区间个数计算采样步长。
(3)根据该采样步长对训练数据集进行采样得到采样训练数据集。
(4)根据该采样训练数据集中训练数据的个数和最大分裂区间个数计算分裂区间步长。
(5)根据该分裂区间步长从该采样训练数据集中确定每个属性的分裂点,构造每个属性的分裂点序列,每个属性的分裂点序列中分裂点的个数不大于所述最大分裂区间个数。
例如,训练数据集中包括1000条训练数据,该最大分裂区间个数为5,那么采样系数为5*5/1000=0.025,采样样本数为1000*0.025=25,采样步长为1000/25=40。则从1000条训练数据中按照步长40采集25条训练数据,即从第一条训练数据开始,每隔40个训练数据采样一次。在得到采样训练数据集后,根据采样训练数据集中训练数据的个数和最大分裂区间个数计算分裂区间步长,例如,采样训练数据集有25条训练数据,最大分裂区间个数为5,则分裂区间步长=25/5=5,因此,4个分裂点为:split(0)=sample(5),split(1)=sample(10),split(2)=sample(15),split(3)=sample(20)。
(6)按照每个属性的分裂点序列中分裂点的取值从小到大依次构造每个属性的分裂区间。
例如,训练数据集中包括1000条训练数据,该最大分裂区间个数为5,那么采样系数为5*5/1000=0.025,采样样本数为1000*0.025=25,采样步长为1000/25=40。则从1000条训练数据中按照步长40采集25条训练数据,即从第一条训练数据开始,每隔40个训练数据采样一次。在得到采样训练数据集后,根据采样训练数据集中训练数据的个数和最大分裂区间个数计算分裂区间步长,例如,采样训练数据集有25条训练数据,最大分裂区间个数为5,则分裂区间步长=25/5=5,因此,4个分裂点为:split(0)=sample(5),split(1)=sample(10),split(2)=sample(15),split(3)=sample(20)。
当每个属性的取值为枚举值类型时,构造训练数据集包括的多个属性中每个属性的分裂点序列,根据每个属性的分裂点序列中多个分裂点的顺序,构造每个属性的分裂区间,具体为:
首先,计算每个属性的每个分裂点的类中心,按照每个属性的分裂点的类中心的大小,从小到大对每个属性的分裂点进行排序,得到每个属性的分裂点序列:split(1),split(2),...split(k),对于枚举值属性,split(k)表示一个区间。分裂点的类中心即分裂点上各类别训练数据所占的比例,例如,枚举值属性学生,共有100条训练数据,其中,类别优有30条数据,类别良有50条数据,类别差有20条数据,那么分裂点学生的类中心为:30/100=0.3、50/100=0.5和20/100=0.2,依次得到每个分裂点的类中心。当只有两个类别时,可通过如下公式计算各分裂点的类中心,ceni表示第i个分裂点的类中心,Si表示第i个分裂点的训练数据的个数,label表示训练数据集的分类属性,一般地,二分类问题中,label=1.0和label=0.0,可以看出,该公式计算的是分裂点的类别=“1.0”的类中心。在得到各分裂点的类中心后,若以类别优进行排序,那么按照各分裂点的类别优从小大小进行排序,得到该属性的分裂点序列。
然后,按照每个属性的分裂点序列中分裂点的取值从小达到依次构造每个属性的分裂区间:
bin(0)→(-∞,split(0)),bin(1)→[split(0),split(1)),……
bin(k-1)→[split(k-2),split(k-1)),bin(k)→[split(k),+∞)。
举例来说,属性工作为枚举值类型,共有四个取值:学生、教师、工程师和其他。则可以构造四个分裂区间:bin(0)=(0,学生],bin(1)=(学生,(学生,教师)],bin(2)=((学生,教师),(学生,教师,工程师)],((学生,教师,工程师),bin(3)=(学生,教师,工程师,其他)],其中,bin(0)区间表示的集合为学生,bin(1)表示的集合为教师,bin(2)表示的集合为工程,师,bin(3)表示的集合为其他。
步骤102、根据决策树的层数确定决策树的第n层的节点个数,决策树的最大层数不大于决策树的深度。
本实施例中,决策树的生成采用自上而下的顺序,逐层生成各节点,决策树的生成通过循环控制实现,代替了现有的递归算法。循环的结束条件为决策树的深度,决策树的最大层数不大于决策树的深度,决策树的深度可由用户输入,也可以通过决策树的自然生长决定。通过控制决策树的深度,可以控制决策树的层数,从而控制了循环条件,能够根据循环条件预测决策树的生成过程何时结束。而在递归算法中,无法预测有多少节点要计算,因此,无法预测决策树的生成过程何时结束。
本实施例中,当决策树为二叉树时,第n层的节点个数为:nodeNum=2n,n=0,1,...N,nodeNum表示节点个数,n表示层数,N为决策树的深度。
步骤103、将从决策树的根节点到第n层的每个节点所在的分支的所有分裂属性表示的具体条件作为第n层的每个节点的过滤条件。
其中,每个分支对应一个过滤条件。以图1所示例子为例,决策树分为3层,在计算第1层时,第1层的过滤条件为空,即没有过滤条件。第2层的节点2的过滤条件为年龄小于40,第2层的节点3的过滤条件为年龄大于等于40。第3层的节点4的过滤条件为年龄小于40,且工作为学生或教师,第3层的节点5的过滤条件为年龄小于40,且工作为其他,第3层的节点6的过滤条件为年龄大于等于40,且月薪小于1000,第3层的节点7的过滤条件为年龄大于等于40,且月薪为1000-3000,第3层的节点8的过滤条件为年龄大于等于40,且月薪为大于3000。
步骤104、扫描训练数据集,根据第n层的每个节点的过滤条件,并行的将训练数据集中的每条训练数据归属到第n层的每个节点内,并获取第n层的每个节点内每个属性的分裂信息,第n层的每个节点内每个属性的分裂信息包括:每个节点内每个属性的每个分裂区间内训练数据集的每种类别的训练数据的个数,训练数据集包括至少两种类别。
可选地,首先,通过扫描训练数据集,依次判断每条训练数据是否符合第n层的每个节点的过滤条件,将每条训练归属到满足过滤条件的节点中。然后,获取第n层的每个节点内的训练数据所属的分裂区间的标识,最后,根据第n层的每个节点内的训练数据所属的分裂区间的标识和第n层的每个节点内的训练数据的类别,统计第n层的每个节点内的每个属性的每个分裂区间内每种类别的训练数据的个数,其中,第n层的每个节点内的训练数据的类别为训练数据集包括的至少两种类别中的一种类别。
在步骤101中构造了各属性的分裂区间,并为各属性的分裂区间进行了标记。本步骤中,获取第n层的每个节点内的每条训练数据所属的分裂区间的标识,本实施例中,每条训练数据所属的分裂区间的标识包括:每条训练数据的每个属性的取值所属的分裂区间的标识,若训练数据集有三个属性,那么每条训练数据所属的分裂区间的标识共有三个。以表1所示例子为例,训练数据集共有三个属性:年龄、职业和月薪,年龄属性共被划分为四个分裂区间:bin(0)=(0,15],bin(1)=(15,23],bin(2)=(23,45],bin(3)=(45,+∞],标识分别为0、1、2、3。职业属性也包括四个分裂区间:bin(0)=(0,学生],bin(1)=(学生,(学生,教师)],bin(2)=((学生,教师),(学生,教师,工程师)],bin(3)=((学生,教师,工程师),(学生,教师,工程师,其他)],标识分别为0、1、2、3。月薪属性包括三个分裂区间:bin(0)=(0,1000],bin(1)=(1000,3000],bin(2)=(3000,+∞],标识分别为0、1、2、3。
以生成图1所示第2层各节点为例,从第一条训练数据开始,第一条训练数据的年龄属性的分裂区间的标识为1,职业属性的分裂区间的标识为0,月薪属性的分裂区间的标识为0。在得到第一条训练数据的所属的分裂区间的标识之后,判断第一条训练数据是否符合第2层的节点2的过滤条件,节点2的过滤条件为年龄小于40,即判断第一条训练数据的年龄属性的取值是否小于40,若小于40,则第一条训练数据被归属到节点2中,若不小于40,则第一条训练数据被归属到节点3中。然后,根据第一条训练数据所属的分裂区间的标识和第一条训练数据的类别,将节点2的年龄属性的分裂区间1、类别为良的计数器个数加1,将节点2的职业属性的分裂区间0、类别为良的计数器个数加1,将节点2的月薪属性的分裂区间0、类别为良的计数器个数加1。可选地,基于分层策略的决策树并行生成装置也可以在根据各节点过滤条件将训练数据集归属到各个节点之后,依次统计各节点的各属性的各类别的个数,例如,根据各节点的过滤条件过滤后,节点2中共有200条训练数据,在统计年龄属性时,年龄属性共有四个分裂区间,依次统计年龄属性的四个分裂区间中优、良、差三种类别的个数,然后,统计工作属性和月薪属性的各分裂区间中各类别的个数,得到节点2的各属性的各分裂区间中各类别的训练数据的个数。
按照上述方式,依次读取每条训练数据,得到第n层的每个节点内每个属性的每个分裂区间内每种类别的训练数据的个数。
可选地,本实施例中,第n层的每个节点内每个属性的分裂信息存储在预先定义的数据阵列中,第n层的数据阵列的长度为:1+numFea*numN,numFea表示训练数据集包括的属性的总个数,numN表示第n层的节点个数,数据阵列的形式如下:
tree_node_arr=[label,b11,b12,b1k,b21,b22,b2k,.....,bN1,bN2,bNk]
其中,label中用于存储类别值,bij中用于存储第i个节点的第j个属性的分裂信息,i=1,2,...N,j=1,2,...k。
本实施例中,在计算每层的每个节点的分裂信息时,只需要扫描一次训练数据集,根据每个节点的过滤条件将训练数据集中的每条训练数据归属到一个节点中,各节点中的训练数据之和为训练数据集,从而实现了并行的计算各节点的分裂信息,使得各节点在构造时能够并行进行。
步骤105、根据第n层的每个节点内每个属性的每个分裂区间内每种类别的训练数据的个数,计算第n层的每个节点的分裂属性和最佳分裂点。
具体地,根据第n层的每个节点内每个属性的每个分裂区间内每种类别的训练数据的个数,计算第n层的每个节点内每个属性的每个分裂点的分裂指标,根据第n层的每个节点内每个属性的每个分裂点的分裂指标分别确定第n层的每个节点的分裂属性和最佳分裂点。
建立决策树的过程,即不断的把训练数据进行切分的过程,每次切分对应一个问题。每次切分都要求分成的组之间的"差异"最大,即决策树的划分纯度最高,决策树的划分纯度可以用分裂指标进行衡量,常用的分裂指标有:Gini指标、熵和信息增益(informationgain)等,根据每种类别的训练数据的个数计算分裂点的Gini指标、熵或信息增益为现有技术,这里不做过多的描述。
以分裂指标为信息增益为例,首先,根据每个节点内每个属性的每个分裂区间内每种类别的训练数据的个数,计算每个节点内每个属性的每个分裂点的信息增益;然后,分别比较每个节点内每个属性的每个分裂点的信息增益的大小,对于每个节点,取该节点内每个属性的每个分裂点的信息增益中最大信息增益对应的属性作为该节点的分裂属性,将该最大信息增益对应的分裂点作为该节点的最佳分裂点。以图2所示决策树为例,对于节点2来说,需要计算属性年龄、职业和月薪三个属性的每个分裂点的信息增益,若每个属性有三个分裂点,则共需要计算9个分裂点的信息增益,然后,比较9个分裂点的信息增益的大小,例如,分裂点教师的信息增益最大,则将教师所属的属性职业作为分裂属性,将分裂点教师作为最佳分裂点。
步骤106、生成第n层的每个节点的节点信息,根据决策树的各层的每个节点的节点信息构造决策树,各节点的节点信息包括:节点编号、节点类型、分裂属性和最佳分裂点。
每个节点的节点信息包括:节点编号、节点类型、分裂属性和最佳分裂点,进一步地,还可以包括分类预测值,其中,节点类型的取值有三种:根节点、叶子节点和非叶子节点,可以根据各节点上各种类别个数的确定节点类型,如果某个节点上的所有训练数据的类别都相同,即只有一种类别的个数不为零,而其他类别的个数均为零,那么该节点为叶子节点。如果某个节点上的所有训练数据的具有多种类别,即多种类别的个数均不为零,那么该节点为非叶子节点。
分类预测值即表示每个节点的类别,当节点为叶子节点时,预测值表示该类型确定的分支,当节点为非叶子节点时,则该预测值是根据投票原理得到的一个主要类别。例如,图1中节点2共有200条训练数据,其中,类别为良的训练数据有100条,类别为优的训练数据有80条,类别为差的训练数据有20条,那么分类预测值为良,说明节点2中训练数据的类别主要为良。
假定决策树共有K个节点,根节点的编号为0,根据每个节点信息构建决策树过程如下:
(1)根据当前节点的节点类型,判断当前节点是否有孩子节点,如果当前节点为叶子节点,则当前节点没有孩子节点,如果当前不是叶子节点,那么执行步骤(2)。
(2)根据决策树的层数和节点个数的关系:nodeNum=2n,n=0,1,...N,以及父子节点的编号关系,确定孩子节点的编号,其中,左孩子节点的编号leftNodeIndex=id*2+1,左孩子节点的编号rightNodeIndex=id*2+2,id表示当前节点的节点编号,例如,根节点的两个孩子节点的编号为:0*2+1=1,0*2+2=2。
(3)从K个节点组成的节点数组中,根据节点编号leftNodeIndex和rightNodeIndex获取对应的节点,作为当前节点的孩子节点的节点信息,依次循环,将每层的每个节点创建完毕。
本实施例中,通过构造训练数据集的每个属性的分裂区间,自顶下行逐层构造决策树,在计算第n层的每个节点的分裂属性和最佳分裂点时,只需要扫描一次训练数据集,根据第n层的每个节点的过滤条件,并行的将训练数据集中的每条训练数据归属到第n层的每个节点内,并统计第n层的每个节点内每个属性的每个分裂区间内每种类别的个数,最后,根据第n层的每个节点内每个属性的每个分裂区间内每种类别的训练数据的个数,计算第n层的每个节点的分裂属性和最佳分裂点。上述方法中,在计算每层的每个节点的分裂属性和最佳分裂点时,通过根据各节点的过滤条件,并行的统计每个节点内的每个属性的每个分裂区间内的每种类别的训练数据的个数,使得同一层的各节点的分裂属性和最佳分裂点能够并行计算,提高了决策树的性能。
以下将通过具体实施例对实施例一的技术方案进行详细说明,图3为本发明实施例二提供的基于分层策略的决策树并行生成方法的流程图,如图3所示,本实施例提供的方法可以包括以下步骤:
步骤201、构造训练数据集包括的多个属性中每个属性的分裂点序列,根据每个属性的分裂点序列中多个分裂点的顺序,构造每个属性的分裂区间。
步骤202、判断决策树的层数n是否大于决策树的深度。
本实施例中,通过循环生成决策树,循环结束条件为决策树的层数大于决策树的深度,层数n的初始取值为1。在计算每层的各节点的分裂属性和最佳分裂点时,都先判断层数是否大于决策树的深度,若当前计算的层数小于等于决策树的深度,则执行步骤203,若当前计算的层数大于决策树的深度,则执行步骤205。
步骤203、扫描训练数据集,并行计算第n层的各节点的分裂属性和最佳分裂点。
步骤203的具体实现方式可参照实施例一的相关描述,这里不再赘述。
步骤204、生成第n层的各节点的节点信息。
步骤205、根据决策树的各层的各节点的节点信息构造决策树。
本实施例中,通过构造训练数据集的各属性的各分裂点,根据各分裂点构造各属性的分裂区间,自顶下行按层构造决策树,在计算第n层的各节点的分裂属性时,只需要扫描一次训练数据集,并行的计算各节点的分裂属性和最佳分裂点,使得同层的各节点在构造时能够并行进行,提高了决策树的性能。
图4为本发明实施例三提供的同层节点之间并行生成分裂属性和最佳分裂点的方法的流程图,本实施例主要对实施例二中步骤203进行详细描述,如图4所示,本实施例的方法包括以下步骤:
步骤301、计算第n层的节点个数。
步骤302、初始化第n层的数据阵列。
步骤303、扫描训练数据集,获取第n层的每个节点内每个属性的分裂信息,将每个节点内每个属性的分裂信息存储到数据阵列中。
具体地,根据第n层的每个节点的过滤条件将训练数据集中的每条训练数据归属到第n层的一个节点中,第n层的每个节点上的训练数据之和为训练数据集,然后,统计第n层的每个节点内每个属性的每个分裂区间上每种类别的训练数据的个数得到分裂信息,将分裂信息存储到数据阵列中。
步骤304、根据节点的下标从数据阵列中抽取每个节点内每个属性的分裂信息。
步骤305、根据每个节点内每个属性的分裂信息确定每个节点的分裂属性和最佳分裂点。
步骤306、生成各节点的节点信息。
图5为本发明实施例四提供的基于分层策略的决策树并行生成装置的结构示意图,如图5所示,本实施例提供的装置包括:区间构造模块11、节点个数确定模块12、过滤条件确定模块13、获取模块14、计算模块15和决策树构造模块16。
其中,区间构造模块11,用于构造训练数据集包括的多个属性中每个属性的分裂点序列,根据所述每个属性的分裂点序列中多个分裂点的顺序,分别构造所述每个属性的分裂区间;
节点个数确定模块12,用于根据所述决策树的层数确定所述决策树的第n层的节点个数,所述决策树的最大层数不大于所述决策树的深度;
过滤条件确定模块13,用于将从所述决策树的根节点到所述第n层的每个节点所在的分支的所有分裂属性表示的具体条件作为所述第n层的每个节点的过滤条件;
获取模块14,用于扫描所述训练数据集,根据所述第n层的每个节点的过滤条件,并行的将所述训练数据集中的每条训练数据归属到所述第n层的每个节点内,并获取所述第n层的每个节点内所述每个属性的分裂信息,其中,所述第n层的每个节点内所述每个属性的分裂信息包括:所述每个节点内所述每个属性的每个分裂区间内所述训练数据集的每种类别的训练数据的个数,所述训练数据集包括至少两种类别;
计算模块15,用于根据所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,计算所述第n层的每个节点的分裂属性和最佳分裂点;
决策树构造模块16,用于生成所述第n层的每个节点的节点信息,根据所述决策树的各层的每个节点的节点信息构造所述决策树,所述每个节点的节点信息包括:节点编号、节点类型、所述分裂属性和所述最佳分裂点。
可选地,所述获取模块14具体用于:扫描所述训练数据,依次判断所述每条训练数据是否符合所述第n层的每个节点的过滤条件,将所述每条训练数据归属到满足过滤条件的节点中;获取所述第n层的每个节点内的训练数据所属的分裂区间的标识;根据所述第n层的每个节点内的训练数据所属的分裂区间的标识和所述第n层的每个节点内的训练数据的类别,统计所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,其中,所述第n层的每个节点内的训练数据的类别为所述训练数据集包括的至少两种类别中的一种类别。
可选地,所述计算模块15具体用于:根据所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,计算所述第n层的每个节点内所述每个属性的每个分裂点的分裂指标,根据所述第n层的每个节点内所述每个属性的每个分裂点的分裂指标分别确定所述第n层的每个节点的分裂属性和最佳分裂点。
可选地,所述第n层的每个节点内所述每个属性的分裂信息存储在预先定义的数据阵列中,所述第n层的数据阵列的长度为:1+numFea*numN,numFea表示所述训练数据集包括的属性的总个数,numN表示所述第n层的节点个数,所述数据阵列的形式如下:
tree_node_arr=[label,b11,b12,b1k,b21,b22,b2k,.....,bN1,bN2,bNk]
其中,label中用于存储类别值,bij中用于存储第i个节点的第j个属性的分裂信息,i=1,2,...N,j=1,2,...k。
当所述每个属性的取值为连续值类型时,所述区间构造模块11具体用于:
根据预设的最大分裂区间个数和所述训练数据集中的训练数据的个数计算所述训练数据集的采样系数;
根据所述采样系数和所述最大分裂区间个数计算采样步长;
根据所述采样步长对所述训练数据集进行采样得到采样训练数据集;
根据所述采样训练数据集中训练数据的个数和所述最大分裂区间个数计算分裂区间步长;
根据所述分裂区间步长从所述采样训练数据集中确定所述每个属性的分裂点,构造所述每个属性的分裂点序列,所述每个属性的分裂点序列中分裂点的个数不大于所述最大分裂区间个数;
按照所述每个属性的分裂点序列中分裂点的取值从小到大依次构造所述每个属性的分裂区间。
其中,所述根据预设的最大分裂区间个数和所述训练数据集中的训练数据个数计算所述训练数据集的采样系数,包括:
采用如下公式计算所述采样系数:fra=Bin_Max*Bin_Max/count,其中,Fra表示所述采样系数,Bin_Max表示所述最大分裂区间个数,count表示所述训练数据集包括的训练数据个数。
当所述每个属性的取值为枚举值类型时,所述区间构造模块11具体用于:
计算所述每个属性的每个分裂点的类中心,按照所述每个属性的分裂点的类中心的大小,从小到大对所述每个属性的分裂点进行排序,得到所述每个属性的分裂点序列;
按照所述每个属性的分裂点序列中分裂点的取值从小达到依次构造所述每个属性的分裂区间。
本实施例的装置,可用于执行实施例一至实施例三的方法,其实现方式和技术效果类似,这里不再赘述。
图6为本发明实施例五提供的基于分层策略的决策树并行生成装置的结构示意图,如图6所示,本实施例提供的基于分层策略的决策树并行生成装置200包括:处理器21、存储器22、通信接口23和通信总线24,所述存储器22和通信接口23通过所述通信总线24与所述处理器21连接,所述存储器22用于存储计算机指令,所述通信接23口用于与其他设备通信,所述处理器21用于执行所述存储器22中存储的计算机指令,以执行如下所述的方法:
构造训练数据集包括的多个属性中每个属性的分裂点序列,根据所述每个属性的分裂点序列中多个分裂点的顺序,分别构造所述每个属性的分裂区间;
根据所述决策树的层数确定所述决策树的第n层的节点个数,所述决策树的最大层数不大于所述决策树的深度;
将从所述决策树的根节点到所述第n层的每个节点所在的分支的所有分裂属性表示的具体条件作为所述第n层的每个节点的过滤条件;
扫描所述训练数据集,根据所述第n层的每个节点的过滤条件,并行的将所述训练数据集中的每条训练数据归属到所述第n层的每个节点内,并获取所述第n层的每个节点内所述每个属性的分裂信息,其中,所述第n层的每个节点内所述每个属性的分裂信息包括:所述每个节点内所述每个属性的每个分裂区间内所述训练数据集的每种类别的训练数据的个数,所述训练数据集包括至少两种类别;
根据所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,计算所述第n层的每个节点的分裂属性和最佳分裂点;
生成所述第n层的每个节点的节点信息,根据所述决策树的各层的每个节点的节点信息构造所述决策树,所述每个节点的节点信息包括:节点编号、节点类型、所述分裂属性和所述最佳分裂点。
可选地,所述扫描所述训练数据集,根据所述第n层的每个节点的过滤条件,并行的将所述训练数据集中的每条训练数据归属到所述第n层的每个节点内,并获取所述第n层的每个节点的分裂信息,包括:
扫描所述训练数据,依次判断所述每条训练数据是否符合所述第n层的每个节点的过滤条件,将所述每条训练数据归属到满足过滤条件的节点中;
获取所述第n层的每个节点内的训练数据所属的分裂区间的标识;
根据所述第n层的每个节点内的训练数据所属的分裂区间的标识和所述第n层的每个节点内的训练数据的类别,统计所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,其中,所述第n层的每个节点内的训练数据的类别为所述训练数据集包括的至少两种类别中的一种类别。
可选地,所述根据所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,计算所述第n层的每个节点的分裂属性和最佳分裂点,包括:
根据所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,计算所述第n层的每个节点内所述每个属性的每个分裂点的分裂指标,根据所述第n层的每个节点内所述每个属性的每个分裂点的分裂指标分别确定所述第n层的每个节点的分裂属性和最佳分裂点。
可选地,所述第n层的每个节点内所述每个属性的分裂信息存储在预先定义的数据阵列中,所述第n层的数据阵列的长度为:1+numFea*numN,numFea表示所述训练数据集包括的属性的总个数,numN表示所述第n层的节点个数,所述数据阵列的形式如下:
tree_node_arr=[label,b11,b12,b1k,b21,b22,b2k,.....,bN1,bN2,bNk]
其中,label中用于存储类别值,bij中用于存储第i个节点的第j个属性的分裂信息,i=1,2,...N,j=1,2,...k。
当所述每个属性的取值为连续值类型时,所述构造训练数据集包括的多个属性中每个属性的分裂点序列,根据所述每个属性的分裂点序列中多个分裂点的顺序,分别构造所述每个属性的分裂区间,包括:
根据预设的最大分裂区间个数和所述训练数据集中的训练数据的个数计算所述训练数据集的采样系数;
根据所述采样系数和所述最大分裂区间个数计算采样步长;
根据所述采样步长对所述训练数据集进行采样得到采样训练数据集;
根据所述采样训练数据集中训练数据的个数和所述最大分裂区间个数计算分裂区间步长;
根据所述分裂区间步长从所述采样训练数据集中确定所述每个属性的分裂点,构造所述每个属性的分裂点序列,所述每个属性的分裂点序列中分裂点的个数不大于所述最大分裂区间个数;
按照所述每个属性的分裂点序列中分裂点的取值从小到大依次构造所述每个属性的分裂区间。
所述根据预设的最大分裂区间个数和所述训练数据集中的训练数据个数计算所述训练数据集的采样系数,包括:
采用如下公式计算所述采样系数:fra=Bin_Max*Bin_Max/count,其中,Fra表示所述采样系数,Bin_Max表示所述最大分裂区间个数,count表示所述训练数据集包括的训练数据个数。
当所述每个属性的取值为枚举值类型时,所述构造训练数据集包括的多个属性中每个属性的分裂点序列,根据所述每个属性的分裂点序列中多个分裂点的顺序,分别构造所述每个属性的分裂区间,包括:
计算所述每个属性的每个分裂点的类中心,按照所述每个属性的分裂点的类中心的大小,从小到大对所述每个属性的分裂点进行排序,得到所述每个属性的分裂点序列;
按照所述每个属性的分裂点序列中分裂点的取值从小达到依次构造所述每个属性的分裂区间。
本实施例的装置,可用于执行实施例一至实施例三的方法,其实现方式和技术效果类似,这里不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (14)

1.一种基于分层策略的决策树并行生成方法,其特征在于,包括:
构造训练数据集包括的多个属性中每个属性的分裂点序列,根据所述每个属性的分裂点序列中多个分裂点的顺序,分别构造所述每个属性的分裂区间;
根据所述决策树的层数确定所述决策树的第n层的节点个数,所述决策树的最大层数不大于所述决策树的深度;
将从所述决策树的根节点到所述第n层的每个节点所在的分支的所有分裂属性表示的具体条件作为所述第n层的每个节点的过滤条件;
扫描所述训练数据集,根据所述第n层的每个节点的过滤条件,并行的将所述训练数据集中的每条训练数据归属到所述第n层的每个节点内,并获取所述第n层的每个节点内所述每个属性的分裂信息,其中,所述第n层的每个节点内所述每个属性的分裂信息包括:所述每个节点内所述每个属性的每个分裂区间内所述训练数据集的每种类别的训练数据的个数,所述训练数据集包括至少两种类别;
根据所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,计算所述第n层的每个节点的分裂属性和最佳分裂点;
生成所述第n层的每个节点的节点信息,根据所述决策树的各层的每个节点的节点信息构造所述决策树,所述每个节点的节点信息包括:节点编号、节点类型、所述分裂属性和所述最佳分裂点。
2.根据权利要求1所述的方法,其特征在于,所述扫描所述训练数据集,根据所述第n层的每个节点的过滤条件,并行的将所述训练数据集中的每条训练数据归属到所述第n层的每个节点内,并获取所述第n层的每个节点的分裂信息,包括:
扫描所述训练数据,依次判断所述每条训练数据是否符合所述第n层的每个节点的过滤条件,将所述每条训练数据归属到满足过滤条件的节点中;
获取所述第n层的每个节点内的训练数据所属的分裂区间的标识;
根据所述第n层的每个节点内的训练数据所属的分裂区间的标识和所述第n层的每个节点内的训练数据的类别,统计所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,其中,所述第n层的每个节点内的训练数据的类别为所述训练数据集包括的至少两种类别中的一种类别。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,计算所述第n层的每个节点的分裂属性和最佳分裂点,包括:
根据所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,计算所述第n层的每个节点内所述每个属性的每个分裂点的分裂指标,根据所述第n层的每个节点内所述每个属性的每个分裂点的分裂指标分别确定所述第n层的每个节点的分裂属性和最佳分裂点。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述第n层的每个节点内所述每个属性的分裂信息存储在预先定义的数据阵列中,所述第n层的数据阵列的长度为:1+numFea*numN,numFea表示所述训练数据集包括的属性的总个数,numN表示所述第n层的节点个数,所述数据阵列的形式如下:
tree_node_arr=[label,b11,b12,b1k,b21,b22,b2k,.....,bN1,bN2,bNk]
其中,label中用于存储类别值,bij中用于存储第i个节点的第j个属性的分裂信息,i=1,2,...N,j=1,2,...k。
5.根据权利要求4所述的方法,其特征在于,当所述每个属性的取值为连续值类型时,所述构造训练数据集包括的多个属性中每个属性的分裂点序列,根据所述每个属性的分裂点序列中多个分裂点的顺序,分别构造所述每个属性的分裂区间,包括:
根据预设的最大分裂区间个数和所述训练数据集中的训练数据的个数计算所述训练数据集的采样系数;
根据所述采样系数和所述最大分裂区间个数计算采样步长;
根据所述采样步长对所述训练数据集进行采样得到采样训练数据集;
根据所述采样训练数据集中训练数据的个数和所述最大分裂区间个数计算分裂区间步长;
根据所述分裂区间步长从所述采样训练数据集中确定所述每个属性的分裂点,构造所述每个属性的分裂点序列,所述每个属性的分裂点序列中分裂点的个数不大于所述最大分裂区间个数;
按照所述每个属性的分裂点序列中分裂点的取值从小到大依次构造所述每个属性的分裂区间。
6.根据权利要求5所述的方法,其特征在于,所述根据预设的最大分裂区间个数和所述训练数据集中的训练数据个数计算所述训练数据集的采样系数,包括:
采用如下公式计算所述采样系数:fra=Bin_Max*Bin_Max/count,其中,Fra表示所述采样系数,Bin_Max表示所述最大分裂区间个数,count表示所述训练数据集包括的训练数据个数。
7.根据权利要求4所述的方法,其特征在于,当所述每个属性的取值为枚举值类型时,所述构造训练数据集包括的多个属性中每个属性的分裂点序列,根据所述每个属性的分裂点序列中多个分裂点的顺序,分别构造所述每个属性的分裂区间,包括:
计算所述每个属性的每个分裂点的类中心,按照所述每个属性的分裂点的类中心的大小,从小到大对所述每个属性的分裂点进行排序,得到所述每个属性的分裂点序列;
按照所述每个属性的分裂点序列中分裂点的取值从小达到依次构造所述每个属性的分裂区间。
8.一种基于分层策略的决策树并行生成装置,其特征在于,包括:
区间构造模块,用于构造训练数据集包括的多个属性中每个属性的分裂点序列,根据所述每个属性的分裂点序列中多个分裂点的顺序,分别构造所述每个属性的分裂区间;
节点个数确定模块,用于根据所述决策树的层数确定所述决策树的第n层的节点个数,所述决策树的最大层数不大于所述决策树的深度;
过滤条件确定模块,用于将从所述决策树的根节点到所述第n层的每个节点所在的分支的所有分裂属性表示的具体条件作为所述第n层的每个节点的过滤条件;
获取模块,用于扫描所述训练数据集,根据所述第n层的每个节点的过滤条件,并行的将所述训练数据集中的每条训练数据归属到所述第n层的每个节点内,并获取所述第n层的每个节点内所述每个属性的分裂信息,其中,所述第n层的每个节点内所述每个属性的分裂信息包括:所述每个节点内所述每个属性的每个分裂区间内所述训练数据集的每种类别的训练数据的个数,所述训练数据集包括至少两种类别;
计算模块,用于根据所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,计算所述第n层的每个节点的分裂属性和最佳分裂点;
决策树构造模块,用于生成所述第n层的每个节点的节点信息,根据所述决策树的各层的每个节点的节点信息构造所述决策树,所述每个节点的节点信息包括:节点编号、节点类型、所述分裂属性和所述最佳分裂点。
9.根据权利要求8所述的装置,其特征在于,所述获取模块具体用于:
扫描所述训练数据,依次判断所述每条训练数据是否符合所述第n层的每个节点的过滤条件,将所述每条训练数据归属到满足过滤条件的节点中;
获取所述第n层的每个节点内的训练数据所属的分裂区间的标识;
根据所述第n层的每个节点内的训练数据所属的分裂区间的标识和所述第n层的每个节点内的训练数据的类别,统计所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,其中,所述第n层的每个节点内的训练数据的类别为所述训练数据集包括的至少两种类别中的一种类别。
10.根据权利要求9所述的装置,其特征在于,所述计算模块具体用于:
根据所述第n层的每个节点内所述每个属性的每个分裂区间内所述每种类别的训练数据的个数,计算所述第n层的每个节点内所述每个属性的每个分裂点的分裂指标,根据所述第n层的每个节点内所述每个属性的每个分裂点的分裂指标分别确定所述第n层的每个节点的分裂属性和最佳分裂点。
11.根据权利要求8-10中任一项所述的装置,其特征在于,所述第n层的每个节点内所述每个属性的分裂信息存储在预先定义的数据阵列中,所述第n层的数据阵列的长度为:1+numFea*numN,numFea表示所述训练数据集包括的属性的总个数,numN表示所述第n层的节点个数,所述数据阵列的形式如下:
tree_node_arr=[label,b11,b12,b1k,b21,b22,b2k,.....,bN1,bN2,bNk]
其中,label中用于存储类别值,bij中用于存储第i个节点的第j个属性的分裂信息,i=1,2,...N,j=1,2,...k。
12.根据权利要求11所述的装置,其特征在于,当所述每个属性的取值为连续值类型时,所述区间构造模块具体用于:
根据预设的最大分裂区间个数和所述训练数据集中的训练数据的个数计算所述训练数据集的采样系数;
根据所述采样系数和所述最大分裂区间个数计算采样步长;
根据所述采样步长对所述训练数据集进行采样得到采样训练数据集;
根据所述采样训练数据集中训练数据的个数和所述最大分裂区间个数计算分裂区间步长;
根据所述分裂区间步长从所述采样训练数据集中确定所述每个属性的分裂点,构造所述每个属性的分裂点序列,所述每个属性的分裂点序列中分裂点的个数不大于所述最大分裂区间个数;
按照所述每个属性的分裂点序列中分裂点的取值从小到大依次构造所述每个属性的分裂区间。
13.根据权利要求12所述的装置,其特征在于,所述根据预设的最大分裂区间个数和所述训练数据集中的训练数据个数计算所述训练数据集的采样系数,包括:
采用如下公式计算所述采样系数:fra=Bin_Max*Bin_Max/count,其中,Fra表示所述采样系数,Bin_Max表示所述最大分裂区间个数,count表示所述训练数据集包括的训练数据个数。
14.根据权利要求11所述的装置,其特征在于,当所述每个属性的取值为枚举值类型时,所述区间构造模块具体用于:
计算所述每个属性的每个分裂点的类中心,按照所述每个属性的分裂点的类中心的大小,从小到大对所述每个属性的分裂点进行排序,得到所述每个属性的分裂点序列;
按照所述每个属性的分裂点序列中分裂点的取值从小达到依次构造所述每个属性的分裂区间。
CN201410849374.0A 2014-12-30 2014-12-30 基于分层策略的决策树并行生成方法和装置 Pending CN105808582A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410849374.0A CN105808582A (zh) 2014-12-30 2014-12-30 基于分层策略的决策树并行生成方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410849374.0A CN105808582A (zh) 2014-12-30 2014-12-30 基于分层策略的决策树并行生成方法和装置

Publications (1)

Publication Number Publication Date
CN105808582A true CN105808582A (zh) 2016-07-27

Family

ID=56420983

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410849374.0A Pending CN105808582A (zh) 2014-12-30 2014-12-30 基于分层策略的决策树并行生成方法和装置

Country Status (1)

Country Link
CN (1) CN105808582A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106446964A (zh) * 2016-10-21 2017-02-22 河南大学 一种增量式的梯度提升决策树更新方法
CN108875955A (zh) * 2017-05-10 2018-11-23 腾讯科技(深圳)有限公司 基于参数服务器的梯度提升决策树的实现方法及相关设备
CN110516332A (zh) * 2019-08-15 2019-11-29 浪潮电子信息产业股份有限公司 并行计算结果的过滤方法及系统
CN111125685A (zh) * 2018-10-30 2020-05-08 中国移动通信集团湖南有限公司 一种网络安全态势的预测方法及装置
CN111695588A (zh) * 2020-04-14 2020-09-22 北京迅达云成科技有限公司 一种基于云计算的分布式决策树学习系统
WO2021082634A1 (zh) * 2019-10-29 2021-05-06 支付宝(杭州)信息技术有限公司 一种基于树模型的预测方法和装置
CN112861692A (zh) * 2021-02-01 2021-05-28 电子科技大学中山学院 一种房间分类模型构建方法及装置、房间分类方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7269597B2 (en) * 2002-12-16 2007-09-11 Accelrys Software, Inc. Chart-ahead method for decision tree construction
US7293000B2 (en) * 2002-02-22 2007-11-06 Lee Shih-Jong J Information integration method for decision regulation in hierarchic decision systems
CN102054002A (zh) * 2009-10-28 2011-05-11 中国移动通信集团公司 一种数据挖掘系统中决策树的生成方法及装置
CN102214213A (zh) * 2011-05-31 2011-10-12 中国科学院计算技术研究所 一种采用决策树的数据分类方法和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7293000B2 (en) * 2002-02-22 2007-11-06 Lee Shih-Jong J Information integration method for decision regulation in hierarchic decision systems
US7269597B2 (en) * 2002-12-16 2007-09-11 Accelrys Software, Inc. Chart-ahead method for decision tree construction
CN102054002A (zh) * 2009-10-28 2011-05-11 中国移动通信集团公司 一种数据挖掘系统中决策树的生成方法及装置
CN102214213A (zh) * 2011-05-31 2011-10-12 中国科学院计算技术研究所 一种采用决策树的数据分类方法和系统

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106446964A (zh) * 2016-10-21 2017-02-22 河南大学 一种增量式的梯度提升决策树更新方法
CN108875955A (zh) * 2017-05-10 2018-11-23 腾讯科技(深圳)有限公司 基于参数服务器的梯度提升决策树的实现方法及相关设备
CN108875955B (zh) * 2017-05-10 2023-04-18 腾讯科技(深圳)有限公司 基于参数服务器的梯度提升决策树的实现方法及相关设备
CN111125685A (zh) * 2018-10-30 2020-05-08 中国移动通信集团湖南有限公司 一种网络安全态势的预测方法及装置
CN110516332A (zh) * 2019-08-15 2019-11-29 浪潮电子信息产业股份有限公司 并行计算结果的过滤方法及系统
CN110516332B (zh) * 2019-08-15 2021-06-11 浪潮电子信息产业股份有限公司 并行计算结果的过滤方法及系统
US11886534B2 (en) 2019-08-15 2024-01-30 Inspur Electronic Information Industry Co., Ltd. Filtering method and system of parallel computing results
WO2021082634A1 (zh) * 2019-10-29 2021-05-06 支付宝(杭州)信息技术有限公司 一种基于树模型的预测方法和装置
CN111695588A (zh) * 2020-04-14 2020-09-22 北京迅达云成科技有限公司 一种基于云计算的分布式决策树学习系统
CN112861692A (zh) * 2021-02-01 2021-05-28 电子科技大学中山学院 一种房间分类模型构建方法及装置、房间分类方法及装置
CN112861692B (zh) * 2021-02-01 2024-03-15 电子科技大学中山学院 一种房间分类模型构建方法及装置、房间分类方法及装置

Similar Documents

Publication Publication Date Title
CN105808582A (zh) 基于分层策略的决策树并行生成方法和装置
CN107292186B (zh) 一种基于随机森林的模型训练方法和装置
Gharehgozli et al. A decision-tree stacking heuristic minimising the expected number of reshuffles at a container terminal
CN105740424A (zh) 一种基于 Spark 平台的高效率文本分类方法
CN105550374A (zh) Spark云服务环境下面向大数据的随机森林并行机器学习方法
KR20140067065A (ko) 차트 추천 기법
Farid et al. Mining complex data streams: discretization, attribute selection and classification
CN111815432B (zh) 金融服务风险预测方法及装置
CN102750286A (zh) 一种处理缺失数据的新型决策树分类器方法
CN114548298B (zh) 模型训练、交通信息处理方法、装置、设备和存储介质
CN103678436A (zh) 信息处理系统和信息处理方法
Xu et al. Distributed maximal clique computation and management
CN102142031A (zh) 一种基于粗糙集的海量数据分割方法
Bar-Hen et al. Influence measures for CART classification trees
Rastogi et al. GA based clustering of mixed data type of attributes (numeric, categorical, ordinal, binary and ratio-scaled)
CN105138527A (zh) 一种数据分类回归方法及装置
CN113743453A (zh) 一种基于随机森林的人口数量预测方法
CN108364030A (zh) 一种基于三层动态粒子群算法的多分类器模型构建方法
Scherger et al. A systematic overview of the prediction of business failure
US20150134307A1 (en) Creating understandable models for numerous modeling tasks
CN108596390B (zh) 一种解决车辆路径问题的方法
CN107704872A (zh) 一种基于相对最离散维分割的K‑means聚类初始中心选取方法
Pendharkar et al. Interactive classification using data envelopment analysis
CN103793504B (zh) 一种基于用户偏好与项目属性的聚类初始点选择方法
JP2020107185A (ja) 画像認識装置、画像認識方法及びプログラム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20160727

RJ01 Rejection of invention patent application after publication