一、简介
决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。
决策树是一种树形结构,其决策分支画成图形很像一棵树的枝干,故称为决策树。决策树由根节点、内部节点和叶节点组成。每一棵决策树只有一个根节点,每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。数据的预测和训练都是从根节点开始逐级向下延伸,每一个非叶子节点上的数据都会按照当前节点的特征属性划分为两个或多个子数据集,并分别交由下一级的节点处理,数据到达叶子节点之后就不需要继续划分了,数据所在的叶子节点就是本次分类预测的结果。决策树预测数据的过程实质上就是自上而下的,由每一级非叶子节点按照自己的特征属性划分规则进行数据分析并完成数据分类的过程。
![6486aa96e71255e6125a511e558bca26.png](https://i-blog.csdnimg.cn/blog_migrate/4db25addce1a62f2b45a8d18402b3f37.jpeg)
在机器学习中,决策树是一个预测模型,代表的是对象属性与对象值之间的一种映射关系。决策树是一种十分常用的分类方法,属于监督学习的一种。所谓监督学习就是给定一堆样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确的分类。这样的机器学习就被称之为监督学习。
决策树按照非叶子节点划分数据集判断标准的不同,可以大致分为两类:一类是基于信息熵的决策树,比如ID3、C4.5决策树算法;另一种是基于基尼指数(Gini)的决策树,比如CART决策树算法。
二、基本原理
(1)组成
决策树一般由决策结点、方案枝、状态结点、概率枝和结果结点等组成,这样树形图由左向右或自上而下,由简到繁展开,组成一个树状网络图。
· 决策结点:是对几种可能方案的选择,即最后选择的最佳方案。如果决策属于多级决策,则决策树的中间可以有多个决策点,以决策树根部的决策点为最终决策方案。决策结点用方块□符号表示。
· 方案枝:由结点引出若干条细支,每条细支代表一个方案,称为方案枝。
· 状态节点:代表备选方案的经济效果(期望值),通过各状态节点的经济效果的对比,按照一定的决策标准就可以选出最佳方案。状态结点用圆形○符号表示。
· 概率枝:由状态节点引出的分支。概率枝的数目表示可能出现的自然状态数目。每个分枝上要注明该状态的内容和其出现的概率。
· 结果节点,将每个方案在各种自然状态下取得的收益值或损益值标注于结果节点的右端。结果结点用三角△符号表示。
(2)用途
机器学习中,决策树是一个预测模型,代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来做预测。
从数据产生决策树的机器学习技术叫做决策树学习, 通俗说就是决策树。
决策树学习也是资料探勘中一个普通的方法。在这里,每个决策树都表述了一种树型结构,它由它的分支来对该类型的对象依靠属性进行分类。每个决策树可以依靠对源数据库的分割进行数据测试。这个过程可以递归式的对树进行修剪。 当不能再进行分割或一个单独的类可以被应用于某一分支时,递归过程就完成了。另外,随机森林分类器将许多决策树结合起来以提升分类的正确率。
决策树同时也可以依靠计算条件概率来构造。
决策树如果依靠数学的计算方法可以取得更加理想的效果。
三、优缺点
(1)优点
决策树易于理解和实现,人们在在学习过程中不需要使用者了解很多的背景知识,这同时是它的能够直接体现数据的特点,只要通过解释后都有能力去理解决策树所表达的意义。
对于决策树,数据的准备往往是简单或者是不必要的,而且能够同时处理数据型和常规型属性,在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
易于通过静态测试来对模型进行评测,可以测定模型可信度;如果给定一个观察的模型,那么根据所产生的决策树很容易推出相应的逻辑表达式。
(2)缺点
对连续性的字段比较难预测。
对有时间顺序的数据,需要很多预处理的工作。
当类别太多时,错误可能就会增加的比较快。
一般的算法分类的时候,只是根据一个字段来分类。
四、基本应用方法
(1)决策树的优化
决策树算法在数据挖掘领域的广泛应用,但是决策树也有一些缺点需要解决,比如在决策树构建的过程中,往往会出现决策树和训练样本数据集出现过拟合(Overfitting)的现象,影响决策树预测数据的能力,为了避免过拟合现象的发生,就需要对决策树进行适当的剪枝操作,以此提高决策树模型的泛化能力。剪枝是决策树停止分支的方法之一,决策树的剪枝有两种方式:一种是预剪枝(Pre-Prune),另外一种是后剪枝(Post-Prune)。
预剪枝是防止决策树在构建的过程中就生长成为“完全”树,需要在决策树节点创建的时候就加入一些适当的终止条件,判断将要创建的节点是否满足停止条件,满足则不创建新的节点。预剪枝是在树的生长过程中设定一个指标,当达到该指标时就停止生长,这样一旦停止分支,使得节点N成为叶节点,就断绝了其后继节点进行“好”的分支操作的任何可能性。不严格的说这些已停止的分支会误导学习算法,导致产生的树不纯度降差最大的地方过分靠近根节点。
后剪枝是将一棵生长“完全”的决策树输入,按照启发式搜索算法,尝试将决策树的某些子树转变为叶子节点,由此改变模型过拟合的情况,增加决策树的泛化能力,并将剪枝之后的模型返回。后剪枝中树首先要充分生长,直到叶节点都有最小的不纯度值为止。然后对所有相邻的成对叶节点考虑是否消去它们,如果消去能引起令人满意的不纯度增长,那么执行消去,并令它们的公共父节点成为新的叶节点。这种“合并”叶节点的做法和节点分支的过程恰好相反,经过剪枝后叶节点常常会分布在很宽的层次上,树也变得非平衡。后剪枝方法的优点是无需保留部分样本用于交叉验证,所以可以充分利用全部训练集的信息。但后剪枝的计算量比预剪枝方法大得多,特别是在大样本集中,不过对于小样本的情况,后剪枝方法还是优于预剪枝方法的。
对决策树进行剪枝的方法有很多种,常用的剪枝方法包括:错误率降低剪枝算法(REP,Reduced Error Pruning),悲观剪枝算法(PEP, Pessimistic Error Pruning),代价复杂度剪枝算法(CCP,Cost Complexity Pruning)等等。错误率降低剪枝算法会计算某一节点在剪枝前后预测的错误率是否有下降,如果在剪枝前后决策树模型整体的错误率下降的程度没有超过设定的阀值,那么就认为该子树是可以被剪枝的:悲观剪枝算法会计算剪枝前后模型对相同的数据集进行数据预测引起的泛华误差,要是剪枝后模型预测的误差小于剪枝前模型预测的误差,那么认为本次剪枝是必要的,通过剪枝可以提高模型的精度;代价复杂度剪枝算法进行决策树剪枝的标准是节点表面误差率的增益值,代价复杂度剪枝算法会计算每个非叶子节点的表面误差率增益值,选择那个表面误差率增益值最小的节点子树进行剪枝操作,假如计算发现多个节点表面误差率增益值一样小的非叶子节点,那么就选择子节点数量最多的非叶子节点进行剪枝操作。
在实际构建决策树的过程中,对决策树模型进行优化的方式除了进行合理的剪枝之外,还可以对训练数据集进行预处理,判断原始数据集各个特征与标签之间的相关性,进行适度的特征选择,适当的选择其中一部分特征数据进行决策树的构建,这样可能会获得泛化能力更强的决策树模型。
(2)算法
构建决策树的算法很多,但基本都是使用自上而下的贪婪算法,最终形成一个树状模型,包含多个子节点,子节点有两类:非叶子节点和叶子节点。每个非叶子节点都是从当前特征集合中选择分类效果最好的特征元素作为当前节点的特征属性对数据集合进行划分,将数据集划分为2个或多个子数据集,依照此方法反复对子数据集迭代,直到达到决策树生长的停止条件,则到达叶子节点,叶子节点便是分类的结果,叶子节点处不再对数据集进行划分,到达叶子节点处便完成了数据分类。具体的步骤为:
1 T为特征集合,D为训练数据集合;
2 选择一个划分训练数据集效果最好的特征t,并将特征t从特征集T中移除;
3 创建一个树节点,属性为上一步选择的特征t,将训练数据集划分为2个或多个子数据集,每个子数据集作为下一次迭代的训练数据集。
在步骤 3 中,划分得到子数据集,要是已经达到决策树停止生长的条件,则子数据集已经到达叶子节点,无需继续向下划分,而停止生长的条件有很多种,包括:
①对应特征集T中的特征元素数量为零;
②子数据集中数据量过少,已经低于数据集包含数据量的最小值;
③子数据集继续划分得到的信息增益量很小,或子数据集继续划分的熵值很小。
(a)C4.5算法
C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:
· 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;
· 在树构造过程中进行剪枝;
· 能够完成对连续属性的离散化处理;
· 能够对不完整数据进行处理。
C4.5算法有如下优点:产生的分类规则易于理解,准确率较高。其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。此外,C4.5只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行。
(b)CART算法
分类与回归树(CART——Classification And Regression Tree) 是一种非常有趣并且十分有效的非参数分类和回归方法。它通过构建二叉树达到预测目的。
分类与回归树CART 模型已经在统计领域和数据挖掘技术中普遍使用。它采用与传统统计学完全不同的方式构建预测准则,它是以二叉树的形式给出,易于理解、使用和解释。由CART 模型构建的预测树在很多情况下比常用的统计方法构建的代数学预测准则更加准确,且数据越复杂、变量越多,算法的优越性就越显著。模型的关键是预测准则的构建,准确的。
分类和回归首先利用已知的多变量数据构建预测准则, 进而根据其它变量值对一个变量进行预测。在分类中, 人们往往先对某一客体进行各种测量, 然后利用一定的分类准则确定该客体归属那一类。
(c)随机森林算法
单棵决策树模型在构建的时候,很容易受到训练数据集的影响出现过拟合的情况,为了避免过拟合的情况需要对决策树进行必要的剪枝操作,而过度的剪枝又会降低决策树的预测能力。除此之外,由于决策树在构建的过程中迭代进行特征属性选择的时候都是采用了局部贪婪法,每次从当前的特征集合中选择最优的特征进行新节点的创建,不会对模型进行回溯检测,容易造成局部最优解,使得最终获得的预测模型收敛于局部最优解。
随机森林(RF,Random Forest)算法是一种组合分类器算法,在随机森林模型内部包含多个CART决策树,每一棵决策树都是通过两个随机过程进行构建的。构建得到多棵决策树组成整个随机森林模型,随机森林模型在进行数据预测的时候是利用所有决策树进行预测并通过投票的方式决定模型最终的预测结果。
随机森林算法的优点:
· 泛化能力强,不易出现过拟合。
· 在高维度的数据集上的效果较好。
· 随机森林适合做并行处理。
· 实现简单,算法效率高,准确度高。
· 在大数据集上处理的效果较好。
· 可以给出单个特征的重要性,便于进行算法优化。
随机森林算法并不是始终表现出较高的预测准确性,模型整体的预测能力受到元分类器的影响。元分类器对随机森林算法的制约主要包括:
· 决策树之间的相关性。
· 单棵决策树模型的预测能力。