决策树系列之一决策树的入门教程

来源:互联网 发布:java开发的好玩的游戏 编辑:程序博客网 时间:2024/06/03 16:08

决策树

(Decisiontree)

一、决策树的概念

决策树(decision tree)又称为分类树(classification tree),决策树是最为广泛的归纳推理算法之一,处理类别型或连续型变量的分类预测问题,可以用图形和if-then的规则表示模型,可读性较高。决策树模型透过不断地划分数据,使依赖变量的差别最大,最终目的是将数据分类到不同的组织或不同的分枝,在依赖变量的值上建立最强的归类。

分类树的目标是针对类别应变量加以预测或解释反应结果,就具体本身而论,此模块分析技术与判别分析、区集分析、无母数统计,与非线性估计所提供的功能是一样的,分类树的弹性,使得数据本身更加具吸引人的分析选项,但并不意谓许多传统方法就会被排除在外。实际应用上,当数据本身符合传统方法的理论条件与分配假说,这些方法或许是较佳的,但是站在探索数据技术的角度或者当传统方法的设定条件不足,分类树对于研究者来说,是较佳的建议技巧。

决策树是一种监督式的学习方法,产生一种类似流程图的树结构。决策树对数据进行处理是利用归纳算法产生分类规则和决策树,再对新数据进行预测分析。树的终端节点”叶子节点(leaf nodes)”,表示分类结果的类别(class),每个内部节点表示一个变量的测试,分枝(branch)为测试输出,代表变量的一个可能数值。为达到分类目的,变量值在数据上测试,每一条路径代表一个分类规则。

决策树是用来处理分类问题,适用目标变量属于类别型的变量,目前也已扩展到可以处理连续型变量,如CART模型;惟不同的决策树算法,对于数据类型有不同的需求和限制。

决策树在Data Mining领域应用非常广泛,尤其在分类问题上是很有效的方法。除具备图形化分析结果易于了解的优点外,决策树具有以下优点:

1.         决策树模型可以用图形或规则表示,而且这些规则容易解释和理解。容易使用,而且很有效。

2.         可以处理连续型或类别型的变量。以最大信息增益选择分割变量,模型显示变量的相对重要性。

3.         面对大的数据集也可以处理得很好,此外因为树的大小和数据库大小无关,计算量较小。当有很多变量入模型时,决策树仍然可以建构。

二、决策树的学习

决策树的建构的主要步骤有三:第一是选择适当的算法训练样本建构决策树,第二是适当的修剪决策树,第三则是从决策树中萃取知识规则。

(一)决策树的分割

决策树是通过递归分割(recursive partitioning)建立而成,递归分割是一种把数据分割成不同小的部分的迭代过程。建构决策树的归纳算法:

1.         将训练样本的原始数据放入决策树的树根。

2.         将原始数据分成两组,一部分为训练组数据,另依部分为测试组资料。

3.         使用训练样本来建立决策树,在每一个内部节点依据信息论(information theory)来评估选择哪一个属性继续做分割的依据,又称为节点分割(splittingnode)。

4.         使用测试数据来进行决策树修剪,修减到决策树的每个分类都只有一个节点,以提升预测能力与速度。也就是经过节点分割后,判断这些内部节点是否为树叶节点,如果不是,则以新内部节点为分枝的树根来建立新的次分枝。

5.         将第1至第4步骤不断递归,一直到所有内部节点都是树叶节点为止。当决策树完分类后,可将每个分枝的树叶节点萃取出知识规则。

如果有以下情况发生,决策树将停止分割:

1.         该群数据的每一笔数据都已经归类到同一类别。

2.         该群数据已经没有办法再找到新的属性来进行节点分割。

3.         该群数据已经没有任何尚未处理的数据。

一般来说,决策树分类的正确性有赖于数据来源的多寡,若是透过庞大数据建构的决策树其预测和分类结果往往是符合期望。

决策树学习主要利用信息论中的信息增益(information gain),寻找数据集中有最大信息量的变量,建立数据的一个节点,再根据变量的不同值建立树的分枝,每个分枝子集中重复建树的下层结果和分枝的过程,一直到完成建立整株决策树。决策树的每一条路径代表一个分类规则,与其它分类模型相比,决策树的最大优势在于模型图形化,让使用者容易了解,模型解释也非常简单而容易。

在树的每个节点上,使用信息增益选择测试的变量,信息增益是用来衡量给定变量区分训练样本的能力,选择最高信息增益或最大熵(entropy)简化的变量,将之视为当前节点的分割变量,该变量促使需要分类的样本信息量最小,而且反映了最小随机性或不纯性(impurity)(Han and Kamber,2001)。

若某一事件发生的概率是p,令此事件发生后所得的信息量为Ip),若p=1,则Ip)=0,因为某一事件一定会发生,因此该事件发生不能提供任何信息。反之,如果某一事件发生的概率很小,不确定性愈大,则该事件发生带来的信息很多,因此Ip)为递减函数,并定义。

给定数据集S,假设类别变量A有m个不同的类别。利用变量A将数据集分为m个子集,其中表示在S中包含数值中的样本。对应的m种可能发生概率为,因此第i种结果的信息量为,则称该给定样本分类所得的平均信息为熵,熵是测量一个随机变量不确定性的测量标准,可以用来测量训练数据集内纯度(purity)的标准。熵的函数表示如下式:

                               

其中是任意样本属于的概率,对数函数以2为底,因为信息用二进制编码。

变量分类训练数据集的能力,可以利用信息增益来测量。算法计算每个变量的信息增益,具有最高信息增益的变量选为给定集合S的分割变量,产生一个节点,同时以该变量为标记,对每个变量值产生分枝,以此划分样本。

(二)决策树的剪枝

决策树学习可能遭遇模型过度配适(overfitting)的问题,过度配适是指模型过度训练,导致模型记住的不是训练集的一般性,反而是训练集的局部特性。模型过度配适,将导致模型预测能力不准确,一旦将训练后的模型运用到新数据,将导致错误预测。因此,完整的决策树构造过程,除了决策树的建构外,尚且应该包含树剪枝(treepruning),解决和避免模型过度配适问题。

当决策树产生时,因为数据中的噪音或离群值,许多分枝反映的是训练资料中的异常情形,树剪枝就是在处理这些过度配适的问题。树剪枝通常使用统计测量值剪去最不可靠的分枝,可用的统计测量有卡方值或信息增益等,如此可以加速分类结果的产生,同时也提高测试数据能够正确分类的能力。

树剪枝有两种方法:先剪枝(prepruning)和后剪枝(postpruning)。先剪枝是通过提前停止树的构造来对树剪枝,一旦停止分类,节点就成为树叶,该树叶可能持有子集样本中次数最高的类别。在构造决策树时,卡方值和信息增益等测量值可以用来评估分类的质量,如果在一个节点划分样本,将导致低于预先定义阈值的分裂,则给定子集的进一步划分将停止。选取适当的阈值是很困难的,较高的阈值可能导致过分简化的树,但是较低的阈值可能使得树的简化太少。后剪枝是由已经完全生长的树剪去分枝,通过删减节点的分枝剪掉树节点,最底下没有剪掉的节点成为树叶,并使用先前划分次数最多的类别作标记。对于树中每个非树叶节点,算法计算剪去该节点上的子树可能出现的期望错误率。再使用每个分枝的错误率,结合每个分枝观察的权重评估,计算不对该节点剪枝的期望错误率。如果剪去该节点导致较高的期望错误率,则保留该子树,否则剪去该子树。产生一组逐渐剪枝后的树,使用一个独立的测试集评估每棵树的准确率,就能得到具有最小期望错误率的决策树。也可以交叉使用先剪枝和后剪枝形成组合式,后剪枝所需的计算比先剪枝多,但通常产生较可靠的树(Hanand Kamber,2001)。

 

三、决策树算法

完成数据处理阶段后,需要选择一个合适的决策树模型算法。最常用的决策树模型算法是CART(classification and regression trees),代表分类树和回归树,是一种广泛应用于树结构产生分类和回归模型的过程。其它算法有CHAID(Chi-squareautomatic interaction detector ),还有Quinlan提出的ID3(iterative dichotomizer 3),以及后续的版本C4.5和C5.0,其中C4.5和C5.0在计算机领域中广泛应用。大多数的决策树模型算法是由核心算法改变而来,利用由上向下的贪心算法(greedyalgorithm)搜索所有可能的决策树空间,这种算法是ID3算法和C4.5算法的基础。

决策树在处理分类问题时,数据型态可以是类别数据和连续性数据,除了CART算法可以处理离散型数据和连续性数据之外,ID3、C4.5、C5.0和CHAID都只能处理离散型数据。不同算法其分割规则和修剪树规则也有差异,比较如下:

算法

分割规则

修剪规则

ID3

熵、Gain ratio

错误预估率

C4.5/ C5.0

Gain ratio

错误预估率

CART

Gain ratio

错误预估率

CHAID

卡方检定

不用修剪

 

(一)ID3和C4.5/C5.0

决策树的算法基本上是一种贪心算法,是由上至下的逐次搜索方式,渐次产生决策树模型结构。Quinlan于1979年提出ID3算法,ID3算法是著名的决策树归纳算法;算法C4.5和C5.0是ID3算法的修订版本。ID3算法是以信息论为基础,企图最小化变量间比较的次数,其基本策略是选择具有最高信息增益的变量为分割变量(splittingvariable),ID3算法必须将所有变量转换为类别型变量。使用熵来量化信息,测量不确定性,如果所有数据属于同一类别,将不存在不确定性,此时的熵为0。ID3算法的基本步骤包含以下几点(Hanand Kamber,2001):

1.         模型由代表训练样本开始,样本属于同一类别,则节点成为树叶,并使用该类别的标签。

2.         如果样本不属于同一类别,算法使用信息增益选择将样本最佳分类的变量,该变量成为该节点的分割变量。对分割变量的每个已知值,产生一个分枝,并以此分割样本。

3.         算法使用的过程,逐次形成每个分割的样本决策树。如果一个变量出现在一个节点上,就不必在后续分割时考虑该变数。

4.         当给定节点的所有样本属于同一类别,或者没有剩余变量可用来进一步分割样本,此时分割的动作就可以停止,完成决策树的建构。

C4.5算法是ID3算法的修订版,使用训练样本估计每个规则的准确率,如此可能导致对规则准确率的乐观估计,C4.5使用一种悲观估计来补偿偏差,作为选择也可以使用一组独立于训练样本的测试样本来评估准确性。

C4.5算法是先建构一棵完整的决策树,再针对每一个内部节点依使用者定义的错误预估率(Predictederror rate)来修剪决策树。信息增益愈大,表示经过变量分割后的不纯度愈小,降低不确定性。ID3算法就是依序寻找能得到最大信息增益的变量,并以此作为分隔变量。利用信息增益来选取分割变量,容易产生过度配适的问题,C4.5算法采用GainRatio来加以改进方法,选取有最大GainRatio的分割变量作为准则,避免ID3算法过度配适的问题。

C5.0算法则是C4.5算法的修订版,适用在处理大数据集,在软件上的计算速度比较快,占用的内存资源较少。C5.0算法的一个主要改进是采用Boosting方式提高模型准确率,又称为BoostingTrees。除此之外,C5.0算法允许设定错误分类的成本,依据不同的分类错误设定不同成本,所以C5.0算法可以不选择错误率最小的模型,而改选错误成本最小的模型。

(二)CART 算法

CART算法由Friedman等人提出,1980年代以来就开始发展,是基于树结构产生分类和回归模型的过程,是一种产生二元树的技术。CART与C4.5/C5.0算法的最大相异之处是其在每一个节点上都是采用二分法,也就是一次只能够有两个子节点,C4.5/5.0则在每一个节点上可以产生不同数量的分枝。

CART模型适用于目标变量为连续型和类别型的变量,如果目标变量是类别型变量,则可以使用分类树(classificationtrees),目标变量是连续型的,则可以采用回归树(regressiontrees)。CART算法也是一种贪心算法,由上而下扩展树结构,再逐渐地修剪树结构。CART树结构是由数据得来,并不是预先确定的,每一个节点都采用二择一的方式测试。和ID3算法一样,CART模型使用熵作为选择最好分割变量的测量准则。如果树太大会导致过度配适,此时可以利用剪枝来解决此问题,然而树太小却能得到好的预测能力。CART每次只使用一个变量建立树,因此它可以处理大量的变量。

(三)CHAID算法

Perreault和Barksdale两人于1980年提出CHAID(Chi-square automatic interaction detector)分析方法,CHAID是由AID演变而来的。

CHAID是利用卡方检定预测两个变量是否需要合并,如果可以产生最大类别差异的预测变量,将成为节点的分割变量。CHAID会防止数据被过度套用并让决策树停止继续分割,依据的衡量标准是计算节点中类别的P值大小,以此决定决策树是否继续分割,所以不需要作树剪枝。

CHAID利用Bonferroni的调整卡方值作为分割样本的依据,用卡方检定使同质的样本单位归为同一群,逐次搜索而完成分割的过程。CHAID是利用一种半层次(semihierarchical)逐次搜索方法来进行分割的过程。对每一个解释变量的类别的反应水平进行成对的合并,然后分割,以求得各解释变量水平的最少分群数目。一旦每一个解释变量的分群数目确定之后,就可以利用显著性最大的解释变量将原始样本予以分割成若干小群体。同时每一小群体又可视为一个”母群体(parent group)”,依同样的程序进行必要的分割,此一分割过程一直进行到分群结果无显著差异,或是分群后的小群体所含的样本单位已过少,以致于无法做有意义的概率估计时为止。CHAID的分析流程在每一分割步骤,可以将数据分割成三个或三个以上的部分。

 

四、分析实例

医护人员压力分类树:资料511笔。

应变数:压力来源水平(高、中、低)。

自变数:

婚姻状况1.未婚,2.已婚,3.其它)

教育程度1.职校、2.五专、3.二专、4.三专、5.大学、6.研究所以上)

目前职称1.约雇实习护士、2.约雇护士、3.护士、4.护理师)

目前工作单位性质1.内外科病房、2.加护病房、3.急诊、4.门诊、5.精神科病房、6.妇产科病房、7.儿科病房、8.手术室、9.恢复室、10.洗肾室)

 

决策树最后分割结果:

 

在上图的标示中,可以清楚地检视分类总结信息,五个分层与六个最终节点。最终节点,或者所谓的最终叶片(Leaf),代表着案例经分类后的最终结果,没有其余的决策分支可往下分层。图的本身,将最终节点的外围以红线标示,尚未完成决策分枝的节点或分层则以黑色实线标示。树形图的延伸是以最上方的根源节点或决策节点(Root Node or Decision Node)开始,以预测变量为分割依据,逐步将案例进行分类。图中其中信息,节点的编号标示于左上方;起始时,所有的案例会被指派到此一根源节点中,并且「试验性」地分类为「低」压力来源水平,标示于右上方,在这个步骤中,所有案例分类为「低」压力来源水平,乃是取决于「「低」压力来源水平的比例较「中」、「高」压力反应水平多。在节点中,以柱形图表示该分类的案例数;在整张图中,分别就分类图型以文字与线条格式表示。

在图的下半段中,根源节点第一次分割为两个新的节点,在两层节点之间,程序会将造成此次分割以文字表示(预测变量或分类函数)。这个例子的分类说明如下,

1.         目前工作单位性质为「恢复室、妇产科病房、精神科病房、门诊」时,案例会被指派到节点2(低压力来源水平)中,反之会被指派到以节点3中,产生第一个最终节点;

2.         节点2与节点3的上方,98与413分别代表案例的指派数目;

3.         第二次分割自节点3开始,分类依据为目前职称为「约雇实习护士」时,案例将被指派到节点4(中压力来源水平,33个案例),反之则落入节点5中(380个案例)。

4.         第三次分割自节点5开始,分类依据为目前工作单位性质为「手术室、儿科病房」时,案例将被指派到节点6(低压力来源水平、65个案例),反之则落入节点7中(315个案例)。

5.         第四次分割自节点7开始,分类依据为教育程度为「职校、二专」时,案例将被指派到节点8(139个案例),反之则落入节点9中(低压力来源水平、176个案例)。

6.         第五次分割自节点8开始,分类依据为目前职称为「护士」时,案例将被指派到节点10(中压力来源水平、114个案例),反之则落入节点11中(低压力来源水平、25个案例)。

树形图以简单易懂的方式,呈现所有分类过程中的信息,也可以协助使用者在最短的时间之内了解分析的结果。

 

1 0
原创粉丝点击