决策树(Decision Tree)简介

2023-11-16

决策树(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


GitHubhttps://github.com/fengbingchun/NN_Test

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

决策树(Decision Tree)简介 的相关文章

随机推荐

  • VS2013+openCV2.4.10环境配置

    一 openCV环境配置步骤 1 下载opencv 2 4 10到任意文件夹 然后解压 配置环境变量PATH F opencv opencv build x86 vc12 bin 按你自己存放的地址 opencv 2 4 10下载链接 ht
  • Android中so使用知识和问题总结以及插件开发过程中加载so的方案解析

    转自 https blog csdn net jiangwei0910410003 article details 52312451 一 前言 Android中有时候为了效率以及平台开发库的支持 难免会用到NDK开发 那么都会产生一个so文
  • Java之StringUtils的常用方法

    StringUtils 方法的操作对象是 Java lang String 类型的对象 是 JDK 提供的 String 类型操作方法的补充 并且是 null 安全的 即如果输入参数 String 为 null 则不会抛出 NullPoin
  • Unittest自动化测试框架vs Pytest自动化测试框架

    引言 前面一篇文章Python单元测试框架介绍已经介绍了python单元测试框架 大家平时经常使用的是unittest 因为它比较基础 并且可以进行二次开发 如果你的开发水平很高 集成开发自动化测试平台也是可以的 而这篇文章主要讲unitt
  • Postman实现数据驱动---一个简单的登录案例

    我理解的数据驱动就是把一个请求中要传入的值设置为变量 比如一个登录的接口 请求在发送的时候要填入用户名 密码等一些信息 用户名和密码的值有很多种组合 设置为变量就会非常方便 话不多说 直接看例子 在登录界面 抓包登录请求 可以看到登录时需要
  • 计算机不在同一个网络,电脑设置ip地址提示默认网关不在由ip地址和子网掩码定义的同一网络段上怎么办...

    最近有用户要对电脑ip地址进行设置的时候 却弹出窗口 提示默认网关不在由ip地址和子网掩码定义的同一网络段上 这该怎么办呢 通常网关与主机IP应该在同一网段 否则无法通信 可能是配置有问题 下文告诉大家具体解决方法 默认网关不在由ip地址和
  • FFMpeg 实现视频编码、解码

    FFMpeg 作为音视频领域的开源工具 它几乎可以实现所有针对音视频的处理 本文主要利用 FFMpeg 官方提供的 SDK 实现音视频最简单的几个实例 编码 解码 封装 解封装 转码 缩放以及添加水印 接下来会由发现问题 分析问题 解决问题
  • 如何成为一名合格的前端开发者?

    个人 懂得都懂 我觉得会 Ctrl C 和 Ctrl V 才是合格 这是对老板讲的 一 JavaScript基础 前端工程师吃饭的家伙 深度 广度一样都不能差 变量和类型 1 JavaScript规定了几种语言类型 2 JavaScript
  • k8s系统获取真实客户端ip

    k8s部署 系统获取真实客户端ip 我们生产中使用的是kong网关环境的架构也不同 第一种kong网管后走nginx 第二种kong网管后不走nginx kong网管后走ingress nginx 修改kong的配置 配置要信任的原始IP地
  • 使用python做手机app后台

    编辑器 HBuiderX PyCharm 主要技术 5 App python HBuiderX 下载地址 http www dcloud io hbuilderx html PyCharm 下载地址 http www jetbrains c
  • 如何在html里写css类选择器,关于html:如何在CSS选择器中排除特定的类名?

    当用户鼠标将鼠标悬停在类名称为 reMode hover 的元素上时 我尝试应用背景色 但是如果元素也有 reMode selected 我不想更改颜色 注意 因为我在某种有限的环境中工作 所以只能使用CSS而不是JavaScript 为了
  • ASN.1 常用类型 编码详解 入门

    文章目录 编码结构 标识符 Identifier 长度 Length 短形式 长形式 内容 Contents 基本类型 布尔类型 BOOLEAN 整形 INTEGER 实数 REAL 枚举类型 ENUMERATED 二进制的编码 十进制的编
  • 微信测试号 如何配置服务器配置,微信测试号配置失败

    appID wxd281df297a6dc834 appsecret 20b2deacfa8a9e88a9afcbbe12da1f31 define TOKEN weixin function checksignature signatur
  • openGL之API学习(三十三)查看opengl、显卡的信息

    const GLubyte name glGetString GL VENDOR 返回负责当前OpenGL实现厂商的名字 const GLubyte biaoshifu glGetString GL RENDERER 返回一个渲染器标识符
  • LWIP学习笔记(2)---ARP简析

    ARP协议概述 即地址解析协议 用于实现从 IP 地址到 MAC 地址的映射 即询问目标IP对应的MAC地址 ARP分组格式 以太网目的地址 MAC 以太网源地址 MAC 帧类型 硬件类型 协议类型 OP 发送端目的地址 发送端 地址 目的
  • Selenium 高频面试题及答案

    1 什么是 Selenium 它用于做什么 Selenium 是一个用于自动化测试的开源框架 它提供了多种工具和库 用于模拟用户在不同浏览器和操作系统上的行为 并且可用于测试网页应用程序 2 Selenium WebDriver 和 Sel
  • 2023前端面试题及答案整理(CSS)

    盒模型 标准盒模型 W3C标准 一个块的总宽度 内容宽度 margin 左右 padding 左右 border 左右 怪异盒模型 IE标准 一个块的总宽度 width 包含 padding 和 border margin 左右 怪异盒模型
  • C++并发编程框架Theron(8)——Theron中包含的类(二)

    1 前言 本篇文章主要接着上一篇来介绍Theron框架库中包含的类 上一篇中主要介绍了Theron下Actor Address AllocatorManager和Catcher类 在本篇文章中我会相继介绍DefaultAllocator E
  • 解决vscode找不到arduino esp8266头文件

    用Arduino IDE写ESP8266没有代码补全 不能跳转查看头文件 个人觉得这是最难受的 vscode装上Microsoft的arduino扩展后 有时候会找不到头文件 刚开始自己傻傻的一个个往includePath里面添加 后来在引
  • 决策树(Decision Tree)简介

    决策树 Decision Tree 及其变种是另一类将输入空间分成不同的区域 每个区域有独立参数的算法 决策树分类算法是一种基于实例的归纳学习方法 它能从给定的无序的训练样本中 提炼出树型的分类模型 树中的每个非叶子节点记录了使用哪个特征来