决策树优化方法和优化系统 【技术领域】
本发明涉及一种决策树学习技术,尤其涉及一种决策树优化方法和优化系统。
背景技术
基于决策树的方法是通过对一组训练数据的学习,构造出决策树形式的知识表示,在决策树的内部结点进行属性值的比较并根据不同的属性值判断从该结点向下的分支,在决策树叶结点得到结论。所以从根到叶子结点的一条路径就对应着一条规则,整棵决策树就对应着一组析取表达式规则。基于决策树学习算法的一个最大的优点就是它在学习过程中不需要使用者了解很多背景知识,其经典的算法有ID3、C4.5、C5.0、Cart等。
决策树过于复杂一个原因是因为描述语言的不恰当造成;另一个原因是训练实例集中可能有噪声。一般来说系统在进行机器学习时都是建立在一个理想化的假设前提下,即有充分的训练实例,并且训练实例完全正确,然而事实上训练实例中往往含有噪声数据,或者训练实例的数量太少,不能产生目标函数有代表性的采样。如果上述情况有一种出现时,算法所产生的树就会过度拟合训练样例。此外,噪声数据会导致无关实例掺杂在选定的训练集中,这将引起“无谓建模”现象。
目前4A(统一帐号、认证、授权、审计)管理系统的智能审计策略采用的ID3和J48算法(C4.5的改进算法)均存在很严重的重复子树问题,这也是采用决策树算法所不可避免的问题。冗余的规则使得以树结构存储所具有的规则易懂,判别运行性能高等优势变的不那么明显,严重的冗余重复甚至背离了我们的初衷:采用树结构明显优于规则集形式。因此,对生成后的决策树进行结构优化,极大程度的解决重复子树问题,对决策树进行修剪势在必行。
修剪决策树有很多种方法,通常分为这样五种:
(1)预剪枝和后剪枝,
其中,后剪枝是对一颗完全生长的决策树进行裁剪,即算法的输入是一颗未经剪枝的决策树T,输出是一颗剪枝后的决策树T’,T’是算法根据某种原则或标准将T中的一个或是若干个子树删去得到的结果。剪枝的过程中,用叶子结点来代替被删除的子树。在有些后剪枝的算法中,叶子节点所属的类用这棵子树大多数训练实例所属的类代替,并且在叶子结点上标记出所属这个类的训练实例所占的比例。但是,由于决策树的部分子树被剪枝,因而经过剪枝的决策树T’对于训练实例集的错误率已经不再是0。
(2)将决策树转化成另一种数据结构,
该方案包括以下几个步骤:将决策树转换为决策图;将决策树转换为规则集形式再进行去除冗余规则;使用复杂特征,原子特征的逻辑组合或算术组合。单纯采用将决策树转换为决策图,在转换为树形结构在某种程度上能极大的解决重复子树问题,但由于“或链接问题”会极大的降低策略精度,这是实际审计过程所不能接受的。如图1a和图1b所示,“或链接问题”是指在进行重复子树合并的过程中由于属性的过度合并而使值域被扩大。例如对于目标主机ip=a,其上有帐号acc=a1;另有一目标主机ip=b,其上有帐号acc=b1;对如下决策树进行决策图存储合并后会出现或链接问题。经过合并后会出现ip=a并且acc=b1得到x的情况,而实际上ip为a的主机上没有帐号b1,如图1所示。
(3)扩展测试集,首先按特征构成是数据驱动还是假设驱动的差别,将建立的特征组合或分割,然后在此基础上引进多变量测试集。这些方法在调整决策树表达时有效的扩展可决策树集;
(4)选择包含不同测试集评价函数,通过改善连续特征的描述,或修改搜索方法本身实现;
(5)使用数据库约束,即通过削减数据库或实例描述特征集来简化决策树。
现有技术中对决策树的修剪方法不能同时兼顾决策树的结构紧凑和决策树的精度,而“或链接问题”又极大的降低了决策树的精度。因此,提供一种能够有效地对决策树的结构进行简化并保证决策树的精度的决策树优化方法和优化系统成为现有技术中急需解决地技术问题。
【发明内容】
本发明的目的在于,针对现有技术中对决策树的修剪方法不能同时兼顾决策树的结构紧凑和决策树的精度的缺陷,提供一种能够有效地对决策树的结构进行简化并保证决策树的精度的决策树优化方法和优化系统。
该决策树优化方法包括:查询所述决策树中名称相同且位于同一个父节点下的子树,并存储所述子树;当所述存储的子树为同层重复子树时,合并所述同层重复子树。
存储子树的操作具体包括:当所述子树为叶子节点时,存储所述子树的节点名称;当所述子树为父节点,其亲子节点为叶子节点时,存储所述子树的节点名称及其所有亲子节点的名称。
当所述子树为叶子节点时,比较存储的所述子树的节点名称;当所述子树为父节点,其亲子节点为叶子节点时,比较所述子树的节点名称及其所有亲子节点的名称。
该决策树优化系统包括:查询模块,用于查找位于名称相同且父节点ID相同的子树;子树存储模块,用于存储所述子树;比较模块,用于比较存储的子树;合并处理模块,用于当所述子树为同层重复子树时,对所述重复子树进行合并。
本发明的决策树优化方法和优化系统,通过对决策树中的同层的子树进行存储后判断其是否为重复子树,再进行合并,在保证决策树的精度的前提下极大的减少重复子树问题,使决策树的结构更为紧凑,运行效率更高。
【附图说明】
图1a、图1b分别是现有技术决策树优化前、后的结构图;
图2是本发明第一实施例决策树优化系统的结构图;
图3是本发明第一实施例决策树优化方法的流程图;
图4a是本发明第二实施例需要进行优化的决策树的结构图;
图4b、图4c和图4d是本发明第二实施例决策树优化过程中以及优化后的结构图;
图5是本发明本发明第三实施例优化后的决策树;
图6是本发明第二实施例节点D的子树;
图7是本发明第二实施例节点B的子树。
【具体实施方式】
以下结合附图对本发明进行详细说明。
如图2所示,本发明第一实施例决策树优化系统包括:
查询模块12,用于查找位于名称相同且父节点ID相同的子树;
子树存储模块14,用于存储所述子树,当重复子树节点标识为0时,直接存储该重复子树。当重复子树节点标识为1,且其亲子节点节点标识为0时,存储该重复子树的节点名称及其所有亲子节点的名称,具体存储结构为{本节点名称,叶子节点名称1、叶子节点名称2、......、叶子节点名称N}。当重复子树节点标识为1,且其亲子节点节点标识为1时,存储其亲子节点,具体存储结构为{本节点名称,叶子节点名称1、叶子节点名称2、......、叶子节点名称N}。
比较模块16,用于比较存储的子树;
合并处理模块18,用于当所述子树为同层重复子树时,对所述同层重复子树进行合并。
优选地,决策树优化系统还包括决策树存储模块11,存储决策树信息,包括:各个节点的ID、节点名称、节点值、节点标识、层级以及父节点ID。子树存储模块14中存储决策树信息的具体存储结构如下所示:
typedef struct tree
{
int nodeid;//节点ID
String nodename;//节点名称
Int parented;//父节点ID
String nadevalue;//节点值
Int flag;//标识
Int level;//层级
}TREE;
其中,节点值为一个表达式;节点标识,用于区分该节点为叶子节点还是父节点,设置当节点标识为0时,表示该节点为叶子节点,节点标识为1时,表示该节点为父节点;层级设置为,自上而下层级增大,根节点为的层级值为0。
优选地,查询模块12,进一步用于查找层级相差一级且点名称相同的子树;子树存储模块14,进一步用于存储所述层级相差一级且点名称相同的子树;比较模块16,进一步用于比较所述存储的层级相差一级且点名称相同的子树;合并处理模块18,进一步用于当所述子树为异层重复子树时,将层级值大的子树提升一级后,再对所述异层重复子树进行合并。
如图3所示,第一实施例决策树优化方法包括:
步骤302,查询决策树中名称相同且位于同一个父节点下的子树;
步骤304,存储所述子树;
步骤306,判断存储的子树是否为同层重复子树,如果是,执行步骤308;
步骤308,合并所述同层重复子树。
步骤304具体包括:当所述子树为叶子节点时,存储所述子树的节点名称;当所述子树为父节点,其亲子节点为叶子节点时,存储所述子树的节点名称及其所有亲子节点的名称。
步骤306具体包括:当所述子树为叶子节点时,比较存储的所述子树的节点名称;当所述子树为父节点,其亲子节点为叶子节点时,比较所述子树的节点名称及其所有亲子节点的名称。
第一实施例决策树优化方法还包括步骤301,存储决策树信息,所述决策树信息包括:各个节点的ID、节点名称、节点值、节点标识、层级以及父节点ID。
优选地,还包括步骤310,查找层级相差一级且点名称相同的子树,
步骤312,存储层级相差一级且点名称相同子树;
步骤314,判断所述子树是否为异层重复子树时;
步骤316,合并所述异层重复子树。
步骤316具体包括:步骤316a,将层级值大的重复子树提升一级;步骤316b,对重复子树进行合并。
步骤316a的具体操作如下:
步骤b1,寻找异层重复子树所对应的父节点,以p1表示层级值较小的重复子树的父节点,以P2表示层级值较大的子树的父节点;
步骤b2,对于层级值大的重复子树进行节点值处理,寻找该重复子树同父节点p2下的所有兄弟节点,对其本身和兄弟节点值做修改,改为:父节点p2的值&&自身节点值;
步骤b3,对于层级值较小的子树进行节点值处理,寻找p1节点下的所有兄弟,对其节点值做修改,改为:父节点p1的值&&自身节点值;
步骤b4,删除其父节点p1、p2,构造新节点new,节点new的各个属性值除了节点名称外均与p1的各属性值相等;
步骤b5,将所有原p1、p2下的父节点编号均指向新节点new,子树提升完成。
本发明第二实施例对如图4a所示的决策树进行去除重复子树优化处理,具体包括如下步骤:
1、对同层的重复子树进行合并,包括如下步骤:
(1)对于子树X,图6所示节点D的子树,图7所示节点B的子树先去判断是否存在重复子树
(2)对于子树X是叶子节点则可直接进行比较,是否在同层下有相等的叶子节点,有直接进行合并则变成图4b;
(3)对于节点D的子树先进行特殊存储,再判断是否存在重复子树,有则进行合并。对其存储为{D,1‖3,2,“”},可将所有的一级子树都转化为这种形式存储,并按比较两个一维数组是否相等来比较两颗子树是否相等。在这个例子中节点D的子树存在重复子树,需要进行子树合并,合并后如图4c;
(4)对于节点B的子树进行存储为{B,“”,C,D,1‖3,2},经过比较未发现重复子树。
2、对异层的重复子树进行合并,包括如下步骤:
(1)节点Y的父节点分别为节点D和节点B,将节点D下节点Y的节点值改为B=G‖H&&D=5;节点B下节点Y的节点值改为B=F;
(2)如图4d所示,构造新的节点new,将节点D和节点B下的节点Y合并,合并后节点Y的节点值为(B=F)‖(B=G‖H&&D=5);删除节点节点D和节点B;
(3)由于两个节点X相差两级,应此不作合并。
经过同层重复子树的合并和异层重复子树的合并之后,得到优化后的决策树如图4d所示。
本发明第三实施例,在4A管理平台中的应用本发明的决策树优化方法。在4A管理平台中对审计决策树优化中,可以解决审计决策树由于重复子树而引起的树的结构散乱,分类时性能不高等问题。
在计费系统中对于数据库bill1上的帐号root和file1的数据库访问权限授权关系,其中帐号root对于详单_1和详单_2具有操作权限为:select、create、alter、drop、insert、update和delete权限;帐号root对于custom1和custom2没有任何操作权限;帐号file1对于所有的详单类和客户位置信息类表格均具有select操作权限。对于实体权限授权关系如下表所示。
表1
根据以上的授权关系,通过4A中的智能审计决策树方法可产生如下的策略:
审计从帐号=root
|操作对象=详单:敏感数据访问
|操作对象=客户位置信息:非授权用户操作
审计从帐号=fil1
|审计操作=DROP:授权用户非法操作
|审计操作=UPDATE:授权用户非法操作
|审计操作=CREATE:授权用户非法操作
|审计操作=DELETE:授权用户非法操作
|审计操作=INSERT:授权用户非法操作
|审计操作=ALTER:授权用户非法操作
|审计操作=SELECT:敏感数据访问
对于上图所显示的审计决策树,存在很严重的重复子树问题,如下所示:
审计从帐号=fil1
|审计操作=DROP:授权用户非法操作
|审计操作=UPDATE:授权用户非法操作
|审计操作=CREATE:授权用户非法操作
|审计操作=DELETE:授权用户非法操作
|审计操作=INSERT:授权用户非法操作
|审计操作=ALTER:授权用户非法操作
|审计操作=SELECT:敏感数据访问
如图5所示,优化后的审计操作中授权用户非法操作的规则表达式为:
审计从帐号==fil1&&审计操作
==DROP‖UPDATE‖CREATE‖DELETE‖INSERT‖ALTER
采用本发明的决策树优化方法和优化系统,可以在保证分类精度的前提下极大的减少重复子树问题,使决策树的结构更为紧凑,运行效率更高。
应说明的是:以上实施例仅用以说明本发明而非限制,本发明也并不仅限于上述举例,一切不脱离本发明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围中。