决策树(Decision Tree)简介

决策树(Decision Tree)及其变种是另一类将输入空间分成不同的区域,每个区域有独立参数的算法。决策树分类算法是一种基于实例的归纳学习方法,它能从给定的无序的训练样本中,提炼出树型的分类模型。树中的每个非叶子节点记录了使用哪个特征来进行类别的判断,每个叶子节点则代表了最后判断的类别。根节点到每个叶子节点均形成一条分类的路径规则。而对新的样本进行测试时,只需要从根节点开始,在每个分支节点进行测试,沿着相应的分支递归地进入子树再测试,一直到达叶子节点,该叶子节点所代表的类别即是当前测试样本的预测类别。

与其它机器学习分类算法相比较,决策树分类算法相对简单,只要训练样本集合能够使用特征向量和类别进行表示,就可以考虑构造决策树分类算法。预测分类算法的复杂度只与决策树的层数有关,是线性的,数据处理效率很高,适合于实时分类的场合。

机器学习中,决策树是一个预测模型。它代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分支叉路径则代表某个可能的属性值,而每个叶节点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。从数据产生决策树的机器学习技术叫做决策树学习,通俗说就是决策树。

决策树算法包括训练和测试两个阶段:在训练阶段,需要采用一定的标准和规则分割训练样本集为几个子集,然后再以相同的规则去分割每个子集,递归这个过程,直到每个子集只含有属于同一类的样本时停止。训练过程中,每个分割节点需要保存好分类的属性号。在测试阶段中,将测试样本从根节点开始进行判别,看该样本属于哪个子节点,同样递归地执行下去,直到该样本被分到叶节点中为止,而此时该样本就属于当前叶节点的类别。

由于决策树分类方法的不稳定性,在训练样本集中的样本数量较少时,样本集中较小的变动也可能会导致决策树结构发生很大变化。提高决策树分类的稳定性,可以采用Bagging技术。让决策树算法进行多轮的训练,对测试样本的类别预测采用投票的方式进行。

决策树的树枝节点表示属性,也叫决策节点;树叶节点表示类标签,也叫决策结果。决策树是由从上到下的根节点依次延伸而成,依据属性阈值的差异性延伸到各个地方直至下一个属性节点,一直延长到最后的叶子节点完成预测。

决策树是一种树形结构,它主要有三种不同的节点:决策节点:它表示的是一个中间过程,主要是用来与一个数据集中各个属性的取值作对比,以此来判断下一步的决策走向趋势。状态节点:代表备选方案的期望值,通过各个状态节点的对比,可以选出最佳的结果。结果节点:它代表的是该类最终属于哪一个类别,同时也可以很清晰的看出该模型总共有多少个类别。最终,一个数据实例根据各个属性的取值来得到它的决策节点。

统计学,数据挖掘和机器学习中的决策树训练,使用决策树作为预测模型来预测样本的类标。这种决策树也称作分类数或回归数。在这些树的结构里,叶子节点给出类标而内部节点代表某个属性。

决策树学习:根据数据的属性采用树状结构建立决策模型。决策树模型常常用来解决分类和回归问题。机器学习中决策树是一个预测模型,它表示对象属性和对象值之间的一种映射,树中的每一个节点表示对象属性的判断条件,其分支表示符号节点条件的对象。树的叶节点表示对象所属的预测结果。

决策树是一种监督学习。根据决策树的结构决策树可分为二叉决策树和多叉树,例如有的决策树算法只产生二叉树(其中,每个内部节点正好分叉出两个分支),而另外一些决策树算法可能产生非二叉树。

决策树是从有类别名称的训练数据集中学习得到的决策树。它是一种树形结构的判别树,树内部的每个非叶子节点表示在某个属性的判别条件,每个分支表示该判别条件的一个输出,而每个叶子节点表示一个类别名称。树的首个节点是跟节点。

在决策树模型构建完成后,应用该决策模型对一个给定的但类标号未知的元组X进行分类是通过测试该元组X的属性值,得到一条由根节点到叶子节点的路径,而叶子节点就存放着该元组的类预测。这样就完成了一个未知类标号元组数据的分类,同时决策树也可以表示成分类规则。

决策树分量算法有构造速度快、结构明显、分类精度高等优点。决策树是以实例(Instance)为核心的归纳分类方法。它从一组无序的、无特殊领域知识的数据集中提取出决策树表现形式的分类规则,包含了分支节点、叶子节点和分支结构。它采用自顶向下的递归方式构造树状结构,在决策时分支节点进行基于属性值的分类选择,分支节点覆盖了可能的分类结果,最终分支节点连接了代表分类结果的叶子节点。分类过程中经过的连接节点代表了一条分类模式,而这些分类模式的集合就组成了决策树的框架。

决策树是一种以归纳学习为基础的分类算法,它主要包括两个阶段:构造和剪枝。决策树的构建过程是一种自顶向下、递归分治的过程,从决策表创建决策树的关键步骤就是选择分支属性和划分样本集。决策树的剪枝是使决策树停止分裂的方法之一。先剪枝是在决策树生成的过程中同时完成剪枝操作,提前停止节点的分类。选择合适的测度值是先剪枝算法的关键。先剪枝算法避免了无谓的计算量浪费并且可以直接生成最终的分类数,因此被普遍采用。后剪枝算法是在决策树自由生长之后,通过指定相应测度值进行从分支到叶子节点的替换。后剪枝策略会加大决策树算法的计算量,但分类结果稍微准确。

决策树的剪枝:剪枝是决策树停止分支的方法之一,剪枝又分预先剪枝和后剪枝两种。后剪枝的计算量代价比预剪枝方法大得多,特别是在大样本集中,不过对于小样本的情况,后剪枝方法还是优于预剪枝方法的。

常见决策树分类算法

(1)、CLS算法:是最原始的决策树分类算法,基本流程是,从一棵空数出发,不断的从决策表选取属性加入数的生长过程中,直到决策树可以满足分类要求为止。CLS算法存在的主要问题是在新增属性选取时有很大的随机性。

(2)、ID3算法:对CLS算法的最大改进是摒弃了属性选择的随机性,利用信息熵的下降速度作为属性选择的度量。ID3是一种基于信息熵的决策树分类学习算法,以信息增益和信息熵,作为对象分类的衡量标准。ID3算法结构简单、学习能力强、分类速度快适合大规模数据分类。但同时由于信息增益的不稳定性,容易倾向于众数属性导致过度拟合,算法抗干扰能力差。

ID3算法的核心思想:根据样本子集属性取值的信息增益值的大小来选择决策属性(即决策树的非叶子结点),并根据该属性的不同取值生成决策树的分支,再对子集进行递归调用该方法,当所有子集的数据都只包含于同一个类别时结束。最后,根据生成的决策树模型,对新的、未知类别的数据对象进行分类。

ID3算法优点:方法简单、计算量小、理论清晰、学习能力较强、比较适用于处理规模较大的学习问题。

ID3算法缺点:倾向于选择那些属性取值比较多的属性,在实际的应用中往往取值比较多的属性对分类没有太大价值、不能对连续属性进行处理、对噪声数据比较敏感、需计算每一个属性的信息增益值、计算代价较高。

(3)、C4.5算法:基于ID3算法的改进,主要包括:使用信息增益率替换了信息增益下降度作为属性选择的标准;在决策树构造的同时进行剪枝操作;避免了树的过度拟合情况;可以对不完整属性和连续型数据进行处理;使用k交叉验证降低了计算复杂度;针对数据构成形式,提升了算法的普适性。

(4)、SLIQ算法:该算法具有高可扩展性和高可伸缩性特质,适合对大型数据集进行处理。

(5)、CART(Classification and RegressionTrees, CART)算法:是一种二分递归分割技术,把当前样本划分为两个子样本,使得生成的每个非叶子节点都有两个分支,因此,CART算法生成的决策树是结构简洁的二叉树。

分类回归树算法(Classification and Regression Trees,简称CART算法)是一种基于二分递归分割技术的算法。该算法是将当前的样本集,分为两个样本子集,这样做就使得每一个非叶子节点最多只有两个分支。因此,使用CART算法所建立的决策树是一棵二叉树,树的结构简单,与其它决策树算法相比,由该算法生成的决策树模型分类规则较少。

CART分类算法的基本思想是:对训练样本集进行递归划分自变量空间,并依次建立决策树模型,然后采用验证数据的方法进行树枝修剪,从而得到一颗符合要求的决策树分类模型。

CART分类算法和C4.5算法一样既可以处理离散型数据,也可以处理连续型数据。CART分类算法是根据基尼(gini)系数来选择测试属性,gini系数的值越小,划分效果越好。设样本集合为T,则T的gini系数值可由下式计算:

其中,pj是指类别j在样本集T中出现的概率。若我们将T划分为T1、T2两个子集,则此次划分的gini系数的值可由下式计算:

其中,s为样本集T中总样本的个数,s1为属于子集T1的样本个数,s2为属于子集T2的样本个数。

CART算法优点:除了具有一般决策树的高准确性、高效性、模式简单等特点外,还具有一些自身的特点。如,CART算法对目标变量和预测变量在概率分布上没有要求,这样就避免了因目标变量与预测变量概率分布的不同造成的结果;CART算法能够处理空缺值,这样就避免了因空缺值造成的偏差;CART算法能够处理孤立的叶子结点,这样可以避免因为数据集中与其它数据集具有不同的属性的数据对进一步分支产生影响;CART算法使用的是二元分支,能够充分地运用数据集中的全部数据,进而发现全部树的结构;比其它模型更容易理解,从模型中得到的规则能获得非常直观的解释。

CART算法缺点:CART算法是一种大容量样本集挖掘算法,当样本集比较小时不够稳定;要求被选择的属性只能产生两个子结点,当类别过多时,错误可能增加得比较快。

以上内容主要摘自:

1、《基于决策树的档案文本自动分类算法研究》,云南大学,硕论,2015

2、《一种改进的决策树分类算法》,华中师范大学,硕论,2016

3、《面向离散属性的决策树分类方法研究》,大连海事大学,硕论,2017


GitHub:https://github.com/fengbingchun/NN_Test

你可能感兴趣的:(Deep,Learning)