决策树算法的综述

  决策树算法有很多种,根据属性分割方法的不同决策树算法分为两类:基于信息论的方法:例如ID3、C4.5算法;基于最小Gini指标方法:SLIQ、SPRD等算法。ID3算法是国际上公认的最早有影响的决策树算法。ID3算法根据属性集的取值进行分类的决策树算法,采用自顶向下不回溯的策略搜索全部的属性空间,它建立决策树的算法简单,分类速度快;但是ID3对于大的属性集则执行效率低,准确性不够,并且学习能力低下。C4.5算法继承了ID3算法的全部优点,相对于ID3算法C4.5算法增加了增益比例的概念,可以处理连续属性以及属性值不完整的训练样本等。同时也存在许多缺点,比如:得到的结果并不是全局最优的,C4.5算法构造出来的决策树很难改善,C4.5算法对属性进行分组的效率比较低。为了解决决策树算法(例如C4.5算法)要求训练数据驻留内存从而不适合处理大规模数据的问题,IBM的研究人员提出了SLIQ算法。SLIQ算法是一种高速可伸缩的数据挖掘分类算法。SLIQ算法采用类直方图的数据结构对属性进行分片,这种类直方图要一直驻留在内存,类直方图结构的大小由训练样本数成正比关系,因此当数据集很大是算法的效率非常低而且有可能失效。为了解决SLIQ算法中类表必须驻留在内存中的缺陷,IBM的研究人员提出了sprint算法。由于该算法具有完全不受内存的限制、生成的决策树较为紧凑和准确、易于实现并行化、以及较好的伸缩性、加速性和扩容性等优点,成为了数据挖掘中优秀的算法之一。Sprint算法是一种可以扩展可以并行的归纳决策树。它吸收了SLIQ算法的预排序技术,使用了不同的数据结构,从而消除了内存的限制。SPIUNT算法包括SPIUNT串行算法和SPRINT并行算法。在实际应用中也通常把SLIQ,SPRINT通过改进使之成为分布式的决策树算法。

    近几年对SPRINT的优化主要集中在以下几个方面。(1)减少计算量提高计算效率。每次求最佳分割点时sprint算法都要对所有候选属性的每一个候选分割点来计算gini值,计算量大。针对离散属性和连续属性分别提出不同的优化方案(2)使用雨林算法框架,减少通信量,提高易扩展性。(3)引入新的数据结构提高资源利用率,减少I/O和扫描磁盘的次数。

    Sprint算法的优势是通过增加大量磁盘L/0读写时间和搜索磁盘数据时间来获得的。正是因为这个特点,SPRINT方法在非常大的数据集上构造决策树的计算时间会很长,以至缺乏实际意义。’处理这个问题有两种较好方式:一种是采用并行性机制,另一种是减少算法的I/O时间。最近几年随着分布式及云计算技术的逐渐成熟,有许多研究工作人员将并行sprint算法改进应用到分布式平台(比如Hadoop)之上。所以随着云计算和数据挖掘技术的研究深入,SPRINT算法的优势将逐步得到体现

posted @ 2012-09-17 19:28  西关大堤  阅读(1165)  评论(0编辑  收藏  举报