雨林算法框架.ppt

上传人:b****2 文档编号:2174652 上传时间:2022-10-27 格式:PPT 页数:21 大小:196KB
下载 相关 举报
雨林算法框架.ppt_第1页
第1页 / 共21页
雨林算法框架.ppt_第2页
第2页 / 共21页
雨林算法框架.ppt_第3页
第3页 / 共21页
雨林算法框架.ppt_第4页
第4页 / 共21页
雨林算法框架.ppt_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

雨林算法框架.ppt

《雨林算法框架.ppt》由会员分享,可在线阅读,更多相关《雨林算法框架.ppt(21页珍藏版)》请在冰豆网上搜索。

雨林算法框架.ppt

nnRainForest雨林算法框架大数据集决策树快速生成框架报告人:

李岱2003.4.5决策树简介nn略Sprint算法的缺点nn为每个node都保存属性表,这个表的大小有可能是数据库中原始数据大小的好几倍。

nn维护每个node属性表的hash表的开销很大(该表的大小与该node所具有的纪录成正比)。

雨林算法框架综述过去的研究提出了多种决策树算法,但是到目前为止过去的研究提出了多种决策树算法,但是到目前为止并没有一种算法在任何数据集合下生成决策树的质量并没有一种算法在任何数据集合下生成决策树的质量方面超过所有其他的算法方面超过所有其他的算法雨林算法框架关注于提高决策树算法的伸缩性,该框雨林算法框架关注于提高决策树算法的伸缩性,该框架可运用于大多数决策树算法架可运用于大多数决策树算法(例如例如SprintSprint和和SLIQ)SLIQ),使,使算法获得的结果与将全部的数据放置于内存所得到的算法获得的结果与将全部的数据放置于内存所得到的结果一致,但是在运行时可以使用较少的内存。

而在结果一致,但是在运行时可以使用较少的内存。

而在内存一定的情况下,也可以更好的满足算法的需求内存一定的情况下,也可以更好的满足算法的需求。

生成的决策树的质量取决于具体的决策树算法,于本生成的决策树的质量取决于具体的决策树算法,于本框架无关。

框架无关。

雨林算法框架nn数据结构:

数据结构:

AVC-set:

AVC-set:

节点节点nn包含的所有纪录在某个属性上包含的所有纪录在某个属性上的投影,其中该的投影,其中该AVC-setAVC-set包括了属性的不同包括了属性的不同值在每个类别上的计数。

值在每个类别上的计数。

AVC-group:

AVC-group:

一个节点一个节点nn上所有的上所有的AVC-setAVC-set的集的集合合AVC-setAVC-set的所占内存的大小正比于对应属性的所占内存的大小正比于对应属性的不同值个数,的不同值个数,AVC-groupAVC-group并不是数据库信并不是数据库信息的简单的压缩,它只是提供了建立决策树息的简单的压缩,它只是提供了建立决策树需要的信息,需要的信息,AVC-groupAVC-group所占用的内存空间所占用的内存空间远远小于数据库所实际占用的空间。

远远小于数据库所实际占用的空间。

设计方案:

AVC_setAVC_set/存储属性的各个值存储属性的各个值DistinctValueDistinctValue/存储属性各个值在某个类上对应的计数存储属性各个值在某个类上对应的计数DistinctValueCountForClassADistinctValueCountForClassADistinctValueCountForClassBDistinctValueCountForClassBAVC_groupAVC_group/节点节点nn中的每个属性的中的每个属性的avc_setavc_setAVC_setAVC_set雨林算法框架nn自顶向下决策树算法自顶向下决策树算法BuildTree(Nodem,datapatitionD,algorithmdecisionTree)BuildTree(Nodem,datapatitionD,algorithmdecisionTree)1)1)对对DD使用决策树算法使用决策树算法decisionTreedecisionTree得到分裂指标得到分裂指标crit(n)crit(n)2)2)令令kk为节点为节点nn的子节点个数的子节点个数3)3)if(k0)if(k0)4)4)建立建立nn的的kk个子节点个子节点c1,ckc1,ck5)5)使用最佳分割将使用最佳分割将DD分裂为分裂为D1,DkD1,Dk6)6)for(i=1;i=k;i+)for(i=1;i=k;i+)7)7)BuildTree(ci,Di)BuildTree(ci,Di)8)8)endforendfor9)9)endifendifRainForestRainForest算法框架重新定义的部分:

算法框架重新定义的部分:

1a)for1a)for每一个属性的谓词每一个属性的谓词p,p,寻找最佳的分割寻找最佳的分割1b)decisionTree.find_best_partitioning(AVC-setofp)1b)decisionTree.find_best_partitioning(AVC-setofp)1c)endfor1c)endfor2a)k=decisionTree.decide_splitting_criterion();/2a)k=decisionTree.decide_splitting_criterion();/决定最终的分割决定最终的分割算法分析nn对于对于(1a)-(1c)(1a)-(1c)所需要的内存为该谓词所需要的内存为该谓词pp所有的所有的avc-setavc-set中间占有的最大内存。

中间占有的最大内存。

nn在在(2a)(2a)中,使用的输入是由中,使用的输入是由(1a)-(1c)(1a)-(1c)所计算所计算出来的结果,这里所占用的内存时很小的出来的结果,这里所占用的内存时很小的vv针对上述情况,我们假定现实运行的情况下,针对上述情况,我们假定现实运行的情况下,一个节点的整个一个节点的整个avc-groupavc-group都可以放在内存中,都可以放在内存中,或者至少一个节点的每一个独立的谓词的或者至少一个节点的每一个独立的谓词的avc-avc-setset可以放在内存中。

可以放在内存中。

雨林算法的常规过程nn建立节点的建立节点的AVC-groupAVC-group(通过读取整个原始数据库或者某个分支的数据通过读取整个原始数据库或者某个分支的数据库表或文件库表或文件)nn选择分裂属性和分裂标准:

取决于使用雨林算选择分裂属性和分裂标准:

取决于使用雨林算法框架的具体算法,通过逐一检查法框架的具体算法,通过逐一检查AVC-setAVC-set来来选择。

选择。

nn将数据分解到各个子节点:

必须读取整个数据将数据分解到各个子节点:

必须读取整个数据集集(数据库或文件数据库或文件),将各条数据分解到各个子,将各条数据分解到各个子节点中,此时如果有足够的内存,我们将建立节点中,此时如果有足够的内存,我们将建立一个或多个子节点的一个或多个子节点的AVC-groupAVC-group算法综述nn算法RF-Write,RF-Read,RF-Hybrid适用于整个根节点的AVC-group都可以放置到内存中的情况,RF-Vertical用于根节点(即一个节点)的AVC-group不能够存放到内存中的情况。

nn本文假定任何一个属性的AVC-set都可以放在内存中。

算法RF-Writenn检索数据库,建立根节点的检索数据库,建立根节点的AVC-groupAVC-groupnn调用某个决策树算法以调用某个决策树算法以AVC-groupAVC-group为参数选择分裂标准,为参数选择分裂标准,建立根节点的建立根节点的kk个子节点个子节点nn检索数据库检索数据库(或文件或文件),将每一条纪录,将每一条纪录tt分配到各个分支分配到各个分支当中(纪录于数据库或文件)当中(纪录于数据库或文件)nn将该算法递归的应用于每一个分支将该算法递归的应用于每一个分支vv注:

对于决策树的每一层,算法读取数据库两次,并注:

对于决策树的每一层,算法读取数据库两次,并写数据库一次。

写数据库一次。

算法RF-Readnn检索数据库,建立根节点的检索数据库,建立根节点的AVC-groupAVC-groupnn调用决策树算法以调用决策树算法以AVC-groupAVC-group为参数选择分裂标准,建为参数选择分裂标准,建立根节点的立根节点的kk个子节点个子节点nn如果此时具有足够的内存容纳新的子节点的如果此时具有足够的内存容纳新的子节点的AVC-AVC-group,group,则此时对数据库进行一次检索,根据分裂标准将则此时对数据库进行一次检索,根据分裂标准将子节点的子节点的AVC-groupAVC-group计算出来,并放置于内存中,并调计算出来,并放置于内存中,并调用决策树算法计算分裂标准。

用决策树算法计算分裂标准。

nn使用相同的方法处理树的每一层,只要有足够的内存使用相同的方法处理树的每一层,只要有足够的内存容纳新节点的容纳新节点的AVC-groupAVC-group,就将所有子节点的,就将所有子节点的AVC-AVC-groupgroup计算出来。

计算出来。

算法RF-Read(续)nn假设在某一层所有新节点的假设在某一层所有新节点的AVC-groupAVC-group所占内存的大小所占内存的大小超过了可用内存,此时我们可将新节点集分成多个子超过了可用内存,此时我们可将新节点集分成多个子集,其中每个子集都可以放入内存之中。

每个子集被集,其中每个子集都可以放入内存之中。

每个子集被独立计算,每次计算时需要读取一次数据库从而建立独立计算,每次计算时需要读取一次数据库从而建立该子集的该子集的AVC-groupAVC-group。

nn随着层数的增加,通常每层节点的随着层数的增加,通常每层节点的AVC-groupAVC-group所占用的所占用的内存也会增加。

从而每层的节点子集个数也会相应增内存也会增加。

从而每层的节点子集个数也会相应增加,所以随着树的层数增加,每层所需要访问数据库加,所以随着树的层数增加,每层所需要访问数据库的次数也是增加的。

所以单独运行该算法是低效的。

的次数也是增加的。

所以单独运行该算法是低效的。

混合算法RF-Hybridnn大致流程:

开始使用大致流程:

开始使用RF-ReadRF-Read的算法,直到到达某层的算法,直到到达某层LL所有的新节所有的新节点点AVC-groupAVC-group总和不适合在内存中,此时切换到总和不适合在内存中,此时切换到RF-Write:

RF-Write:

建立建立mm个分支,并检索个分支,并检索mm个分支的个分支的databaseD,databaseD,递归应用于每个节点,直到递归应用于每个节点,直到算法完成。

该算法比算法完成。

该算法比RF-WriteRF-Write效率高,而且比效率高,而且比RF-ReadRF-Read使用更少的使用更少的数据库检索次数。

数据库检索次数。

nn算法改进:

在使用算法改进:

在使用RF-writeRF-write时,此时系统中可能还有一部分内存时,此时系统中可能还有一部分内存可以使用。

为了尽量使用可用的内存,选择一个可以使用。

为了尽量使用可用的内存,选择一个NN的子集的子集M,M,将所将所有有MM中的节点的中的节点的AVC-groupAVC-group计算出来并存放到内存中,对于该子集计算出来并存放到内存中,对于该子集mm中的每一个节点,节省了写其分支的以及扫描该分支建立中的每一个节点,节省了写其分支的以及扫描该分支建立AVC-AVC-groupgroup所需要的开销。

所需要的开销。

uu选择子集的过程:

取决于可用内存的大小和每个节点的选择子集的过程:

取决于可用内存的大小和每个节点的AVC-AVC-groupgroup的大小。

这是一个背包问题的大小。

这是一个背包问题(NP(NP问题问题)。

在本算法中获得。

在本算法中获得近似最大受益,从而提高算法的效率。

近似最大受益,从而提高算法的效率。

算法RF-Verticalqq用于根节点用于根节点(或者某一个节点或者某一个节点)的的AVC_groupAVC_group不能够存放到内存,不能够存放到内存,但是每一个但是每一个AVC-setAVC-set可以放在内存中的情况。

可以放在内存中的情况。

nn将属性值分为两个部分:

将属性值分为两个部分:

uu1.Plarge=a1.Plarge=a11,.,a,.,avv,任何一个属性的任何一个属性的AVC-setAVC-set可以可

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1