`
kayo
  • 浏览: 558110 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

决策树

 
阅读更多

决策树是用二叉树形图来表示处理逻辑的一种工具。可以直观、清晰地表达加工的逻辑要求。特别适合于判断因素比较少、逻辑组合关系不复杂的情况。

决策树提供了一种展示类似在什么条件下会得到什么值这类规则的方法。比如,在贷款申请中,要对申请的风险大小做出判断,图是为了解决这个问题而建立的一棵决策树,从中我们可以看到决策树的基本组成部分:决策节点、分支和叶子。

  决策树中最上面的节点称为根节点,是整个决策树的开始。本例中根节点是“收入>¥40,000”,对此问题的不同回答产生了“是”和“否”两个分支。
  决策树的每个节点子节点的个数与决策树在用的算法有关。如CART算法得到的决策树每个节点有两个分支,这种树称为二叉树。允许节点含有多于两个子节点的树称为多叉树。
  每个分支要么是一个新的决策节点,要么是树的结尾,称为叶子。在沿着决策树从上到下遍历的过程中,在每个节点都会遇到一个问题,对每个节点上问题的不 同回答导致不同的分支,最后会到达一个叶子节点。这个过程就是利用决策树进行分类的过程,利用几个变量(每个变量对应一个问题)来判断所属的类别(最后每 个叶子会对应一个类别)。
  假如负责借贷的银行官员利用上面这棵决策树来决定支持哪些贷款和拒绝哪些贷款,那么他就可以用贷款申请表来运行这棵决策树,用决策树来判断风险的大 小。“年收入>¥40,00”和“高负债”的用户被认为是“高风险”,同时“收入<¥40,000”但“工作时间>5年”的申请,则被 认为“低风险”而建议贷款给他/她。
  数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测(就像上面的银行官员用他来预测贷款风险)。常用的算法有CHAID、 CART、 Quest 和C5.0。
  建立决策树的过程,即树的生长过程是不断的把数据进行切分的过程,每次切分对应一个问题,也对应着一个节点。对每个切分都要求分成的组之间的“差异”最大。
  各种决策树算法之间的主要区别就是对这个“差异”衡量方式的区别。对具体衡量方式算法的讨论超出了本文的范围,在此我们只需要把切分看成是把一组数据 分成几份,份与份之间尽量不同,而同一份内的数据尽量相同。这个切分的过程也可称为数据的“纯化”。看我们的例子,包含两个类别--低风险和高风险。如果 经过一次切分后得到的分组,每个分组中的数据都属于同一个类别,显然达到这样效果的切分方法就是我们所追求的。
  到现在为止我们所讨论的例子都是非常简单的,树也容易理解,当然实际中应用的决策树可能非常复杂。假定我们利用历史数据建立了一个包含几百个属性、输 出的类有十几种的决策树,这样的一棵树对人来说可能太复杂了,但每一条从根结点到叶子节点的路径所描述的含义仍然是可以理解的。决策树的这种易理解性对数 据挖掘的使用者来说是一个显著的优点。
  然而决策树的这种明确性可能带来误导。比如,决策树每个节点对应分割的定义都是非常明确毫不含糊的,但在实际生活中这种明确可能带来麻烦(凭什么说年收入¥40,001的人具有较小的信用风险而¥40,000的人就没有)。
  建立一颗决策树可能只要对数据库进行几遍扫描之后就能完成,这也意味着需要的计算资源较少,而且可以很容易的处理包含很多预测变量的情况,因此决策树模型可以建立得很快,并适合应用到大量的数据上。
  对最终要拿给人看的决策树来说,在建立过程中让其生长的太“枝繁叶茂”是没有必要的,这样既降低了树的可理解性和可用性,同时也使决策树本身对历史数 据的依赖性增大,也就是说这是这棵决策树对此历史数据可能非常准确,一旦应用到新的数据时准确性却急剧下降,我们称这种情况为训练过度。为了使得到的决策 树所蕴含的规则具有普遍意义,必须防止训练过度,同时也减少了训练的时间。因此我们需要有一种方法能让我们在适当的时候停止树的生长。常用的方法是设定决 策树的最大高度(层数)来限制树的生长。还有一种方法是设定每个节点必须包含的最少记录数,当节点中记录的个数小于这个数值时就停止分割。
  与设置停止增长条件相对应的是在树建立好之后对其进行修剪。先允许树尽量生长,然后再把树修剪到较小的尺寸,当然在修剪的同时要求尽量保持决策树的准确度尽量不要下降太多。
  对决策树常见的批评是说其在为一个节点选择怎样进行分割时使用“贪心”算法。此种算法在决定当前这个分割时根本不考虑此次选择会对将来的分割造成什么 样的影响。换句话说,所有的分割都是顺序完成的,一个节点完成分割之后不可能以后再有机会回过头来再考察此次分割的合理性,每次分割都是依赖于他前面的分 割方法,也就是说决策树中所有的分割都受根结点的第一次分割的影响,只要第一次分割有一点点不同,那么由此得到的整个决策树就会完全不同。那么是否在选择 一个节点的分割的同时向后考虑两层甚至更多的方法,会具有更好的结果呢?目前我们知道的还不是很清楚,但至少这种方法使建立决策树的计算量成倍的增长,因 此现在还没有哪个产品使用这种方法。
  而且,通常的分割算法在决定怎么在一个节点进行分割时,都只考察一个预测变量,即节点用于分割的问题只与一个变量有关。这样生成的决策树在有些本应很 明确的情况下可能变得复杂而且意义含混,为此目前新提出的一些算法开始在一个节点同时用多个变量来决定分割的方法。比如以前的决策树中可能只能出现类似 “收入<¥35,000”的判断,现在则可以用“收入<(0.35*抵押)”或“收入>¥35,000或抵押<150,000” 这样的问题。
  决策树很擅长处理非数值型数据,这与神经网络只能处理数值型数据比起来,就免去了很多数据预处理工作。
甚至有些决策树算法专为处理非数值型数据而设计,因此当采用此种方法建立决策树同时又要处理数值型数据时,反而要做把数值型数据映射到非数值型数据的预处理。

分享到:
评论

相关推荐

    基于MapReduce实现决策树算法

    基于MapReduce实现决策树算法的知识点 基于MapReduce实现决策树算法是一种使用MapReduce框架来实现决策树算法的方法。在这个方法中,主要使用Mapper和Reducer来实现决策树算法的计算。下面是基于MapReduce实现决策...

    决策树分类实验(乳腺癌).zip_wpbc数据集_乳腺癌数据_决策树 cancer_决策树分类程序(使用乳腺癌数据集)_决策树数

    决策树是一种广泛应用于数据分析和机器学习的算法,尤其在分类问题中表现突出。在这个"决策树分类实验(乳腺癌)"中,我们看到一个利用决策树进行乳腺癌预测的实例。该实验基于wpbc(Wisconsin Breast Cancer)数据...

    机器学习+决策树+python实现对率回归决策树

    对于正确率相同的节点,选取优先遍历的属性作为根节点,与基于信息增益进行划分选择的方法相比,可知两种方法绘制的决策树正确率均为100%,但对率回归方法容易忽略在同一正确率下划分较佳的节点,从而使决策树层数...

    决策树算法经典优秀论文(1).zip

    决策树算法经典优秀论文(1).zip 决策树算法经典优秀论文(1).zip 决策树算法经典优秀论文(1).zip 决策树算法经典优秀论文(1).zip 决策树算法经典优秀论文(1).zip 决策树算法经典优秀论文(1).zip 决策树算法经典优秀...

    决策树绘制graphviz

    决策树是一种广泛应用于机器学习领域的算法,主要用于分类和回归任务。它通过构建一系列规则和条件来模拟人类的决策过程,从而对数据进行预测。Graphviz是一款强大的图形渲染工具,能够帮助我们可视化这些决策树模型...

    python决策树代码

    决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画...

    决策树算法及其实现

    决策树算法是数据挖掘和机器学习领域中一个非常重要的分类方法,它通过一系列规则对数据集进行分治,直到每个分支都对应一个单一的类别为止。决策树是基于监督学习方法实现的,这意味着它需要一个事先已标记的数据集...

    决策树实验内容2

    在本次"决策树实验内容2"中,我们将深入探讨决策树这一重要的机器学习算法,主要分为以下几个部分: **1.1 决策树处理分类任务** 在这个环节,我们将使用`sklearn.tree.DecisionTreeClassifier`来解决Dota2比赛...

    波士顿房价决策树python编码

    第二步,决策树的剪枝:决策树的剪枝是对上一阶段生成的决策树进行检验、校正和修下的过程,主要是用新的样本数据集(称为测试数据集)中的数据校验决策树生成过程中产生的初步规则,将那些影响预衡准确性的分枝剪除...

    决策树回归算法

    决策树回归算法是一种基础的机器学习算法,主要用于回归分析,在分类问题中也有应用。其核心思想是将特征空间划分成若干个子空间,每个子空间都有一个对应的输出值,这种方法特别适合处理具有层次关系的问题。 首先...

    决策树资料合集.rar_决策树_决策树 word_决策树 文档_源代码

    决策树是一种广泛应用于数据分析、机器学习以及人工智能领域的算法模型,它通过模拟人类做决策的过程,以树状结构来表示可能的决策路径和结果。在这个"决策树资料合集"中,包含了关于决策树的源文件、实例、内容详解...

    决策树天气预测

    决策树是一种常用的数据挖掘工具,尤其在预测任务中表现出色,如天气预测。在这个场景中,我们使用MATLAB作为编程环境来实现决策树算法。MATLAB不仅提供了强大的数学计算功能,还内置了丰富的数据处理和机器学习库,...

    广工人工智能决策树

    ### 广工人工智能决策树知识点解析 #### 一、决策树概述 决策树是一种常用的机器学习方法,尤其在监督学习中被广泛应用于分类与回归任务。它通过一系列判断条件来划分数据集,最终达到对未知数据进行预测的目的。...

    基于决策树的鸢尾花分类

    【基于决策树的鸢尾花分类】 决策树是一种广泛应用的机器学习算法,尤其适用于分类问题。在本案例中,鸢尾花的分类是基于决策树模型进行的。鸢尾花有三个不同种类:Iris Setosa (Se),Iris Versicolour (Ve),和 ...

    鸢尾花分类实验-决策树_鸢尾花实验_鸢尾花分类实验-决策树_

    在这个实验中,我们利用决策树算法来实现这一目标。决策树是一种直观且易于理解的监督学习方法,常用于分类任务。 决策树的工作原理是通过一系列的“如果-那么”规则来构建一个树形结构,每个内部节点代表一个特征...

    广工人工智能作业--决策树

    决策树ID3算法实现 本文档旨在讲解决策树ID3算法的实现,通过C++语言编写的源代码来实现决策树和决策树对应的规则集。 一、决策树概述 决策树是一种常用的机器学习算法,用于分类和预测问题。决策树由节点和边...

    决策树实现对鸢尾花分类

    决策树是一种广泛应用于数据挖掘和机器学习的算法,它的核心思想是通过一系列的规则划分,将数据集分割成不同的类别。在这个案例中,我们将详细探讨如何利用Python来实现决策树对鸢尾花数据集的分类,并对其进行可视...

    西瓜书《机器学习》---第四章 决策树python代码实现

    4.3 编程实现基于信息熵进行划分选择的决策树算法,并为西瓜数据集3.0中的数据生成一颗决策树。 4.4 编程实现基于基尼指数进行划分选择的决策树算法,为西瓜数据集2.0生成预剪枝、后剪枝决策树,并与未剪枝决策树...

    模式识别中的决策树程序

    决策树是一种广泛应用于模式识别和数据挖掘的机器学习算法,它的主要任务是通过构建一棵树状模型来实现对数据的分类或回归。在这个程序中,我们重点探讨的是决策树在模式识别中的应用,以及它是如何用C语言实现的。 ...

    决策树实现算法C语言编写

    决策树是一种广泛应用于数据挖掘和机器学习领域的算法,它的主要任务是通过构建一颗树状模型来做出预测或决策。在本案例中,标题指出我们关注的是"决策树实现算法C语言编写",这意味着我们将探讨如何用C语言实现决策...

Global site tag (gtag.js) - Google Analytics