决策树的基本认识 

决策树学习是应用最广的归纳推理算法之一,是一种逼近离散值函数的方法,年,香农引入了信息熵,将其定义为离散随机事件出现的概率,一个系统越是有序,信息熵就越低,反之一个系统越是混乱,它的信息熵就越高。所以信息熵可以被认为是系统有序化程度的一个度量。

假如一个随机变量的取值为,每一种取到的概率分别是,那么

的熵定义为

意思是一个变量的变化情况可能越多,那么它携带的信息量就越大。

对于分类系统来说,类别是变量,它的取值是,而每一个类别出现的概率分别是

而这里的就是类别的总数,此时分类系统的熵就可以表示为

以上就是信息熵的定义,接下来介绍信息增益。

信息增益是针对一个一个特征而言的,就是看一个特征,系统有它和没有它时的信息量各是多少,两者的差值就是这个特征给系统带来的信息量,即信息增益。

接下来以天气预报的例子来说明。下面是描述天气数据表,学习目标是play或者not play。

可以看出,一共14个样例,包括9个正例和5个负例。那么当前信息的熵计算如下

在决策树分类问题中,信息增益就是决策树在进行属性选择划分前和划分后信息的差值。假设利用

属性Outlook来分类,那么如下图

划分后,数据被分为三部分了,那么各个分支的信息熵计算如下

那么划分后的信息熵为

代表在特征属性的条件下样本的条件熵。那么最终得到特征属性带来的信息增益为

信息增益的计算公式如下

其中为全部样本集合,是属性所有取值的集合,的其中一个属性值,中属性的值为的样例集合,中所含样例数。

在决策树的每一个非叶子结点划分之前,先计算每一个属性所带来的信息增益,选择最大信息增益的属性来划分,因为信息增益越大,区分样本的能力就越强,越具有代表性,很显然这是一种自顶向下的贪心策略。以上就是ID3算法的核心思想。

ID3的优缺点:

优点:

假设空间包含所有的决策树,它是关于现有属性的有限离散值函数的一个完整空间,避免搜索不完整假设空间的一个主要风险:假设空间可能不包含目标函数。
      在搜索的每一步都使用当前的所有训练样例,不同于基于单独的训练样例递增作出决定,容错性增强。

  缺点:

在搜索过程中不进行回溯,可能收敛到局部最优而不是全局最优。

只能处理离散值的属性,不能处理连续值的属性。

信息增益度量存在一个内在偏置,它偏袒具有较多值的属性。

C4.5算法

C4.5 算法继承了ID3 算法的优点,并在以下几方面对ID3 算法进行了改进:

    1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;
    2) 在树构造过程中进行剪枝;
    3) 能够完成对连续属性的离散化处理;
    4) 能够对不完整数据进行处理。   

增益比率度量是用前面的增益度量Gain(S,A)和分裂信息度量SplitInformation(S,A)来共同定义的,如下所示:

其中,分裂信息度量被定义为(分裂信息用来衡量属性分裂数据的广度和均匀):

其中S1到Sc是c个值的属性A分割S而形成的c个样例子集。注意分裂信息实际上就是S关于属性A的各值的熵。

C4.5算法构造决策树的过程

  1. Function C4.5(R:包含连续属性的无类别属性集合,C:类别属性,S:训练集)
  2. Begin
  3. If S为空,返回一个值为Failure的单个节点;
  4. If S是由相同类别属性值的记录组成,
  5. 返回一个带有该值的单个节点;
  6. If R为空,则返回一个单节点,其值为在S的记录中找出的频率最高的类别属性值;
  7. [注意未出现错误则意味着是不适合分类的记录];
  8. For 所有的属性R(Ri) Do
  9. If 属性Ri为连续属性,则
  10. Begin
  11. 将Ri的最小值赋给A1:
  12. 将Rm的最大值赋给Am;
  13. For j From 2 To m-1 Do Aj=A1+j*(A1Am)/m;
  14. 将Ri点的基于{< =Aj,>Aj}的最大信息增益属性(Ri,S)赋给A;
  15. End;
  16. 将R中属性之间具有最大信息增益的属性(D,S)赋给D;
  17. 将属性D的值赋给{dj/j=1,2...m};
  18. 将分别由对应于D的值为dj的记录组成的S的子集赋给{sj/j=1,2...m};
  19. 返回一棵树,其根标记为D;树枝标记为d1,d2...dm;
  20. 再分别构造以下树:
  21. C4.5(R-{D},C,S1),C4.5(R-{D},C,S2)...C4.5(R-{D},C,Sm);
  22. End C4.5

CART算法

使用基尼指数进行属性选择, 请参阅 https://blog.csdn.net/gzj_1101/article/details/78355234

以上三种建立决策树度量并非无偏的。
信息增益偏向于多值属性
增益率调整了这种偏倚,但是它倾向于产生不平衡的划分,其中一个分区比其他分区小得多。
基尼指数偏向于多值属性,并且当类的数量很大时会有困难。它还倾向于导致相等大小的分区和纯度。
在决策树创建时,由于数据中的噪声和离群点,许多分枝反映的是训练数据中的异常,剪枝方法处理过分拟合数据的问题。使用统计度量剪掉最不可靠的分枝。
树剪枝: 
 两种常用的剪枝方法:先剪枝和后剪枝。
 先剪枝(prepruning):通过提前停止树的构建而对树剪枝。一旦停止,结点就成为树叶。
   在构造树时,可以使用统计显著性、信息增益、基尼指数等度量来评估划分的优劣。如果划分一个结点的无组导致低于预定义阈值的划分,则给定子集的进一步昂划分将停止。
   选取适当的阈值是困难的,高阈值可能导致过分简化的树,而低阈值可能使得树的简化太少。
 后剪枝(postpruning),它由"完全生长"的树剪去子树。通过删除结点的分枝并用树叶替换它而剪掉给定结点上的子树。
    该树叶的类标号用子树中最频繁的类标记。相对于前剪枝,此方法更常用。  

决策树之ID3,C4.5及CART的更多相关文章

  1. 决策树模型 ID3/C4.5/CART算法比较

    决策树模型在监督学习中非常常见,可用于分类(二分类.多分类)和回归.虽然将多棵弱决策树的Bagging.Random Forest.Boosting等tree ensembel 模型更为常见,但是“完 ...

  2. 机器学习算法总结(二)——决策树(ID3, C4.5, CART)

    决策树是既可以作为分类算法,又可以作为回归算法,而且在经常被用作为集成算法中的基学习器.决策树是一种很古老的算法,也是很好理解的一种算法,构建决策树的过程本质上是一个递归的过程,采用if-then的规 ...

  3. ID3,C4.5和CART三种决策树的区别

    ID3决策树优先选择信息增益大的属性来对样本进行划分,但是这样的分裂节点方法有一个很大的缺点,当一个属性可取值数目较多时,可能在这个属性对应值下的样本只有一个或者很少个,此时它的信息增益将很高,ID3 ...

  4. 决策树(ID3,C4.5,CART)原理以及实现

    决策树 决策树是一种基本的分类和回归方法.决策树顾名思义,模型可以表示为树型结构,可以认为是if-then的集合,也可以认为是定义在特征空间与类空间上的条件概率分布. [图片上传失败...(image ...

  5. 2. 决策树(Decision Tree)-ID3、C4.5、CART比较

    1. 决策树(Decision Tree)-决策树原理 2. 决策树(Decision Tree)-ID3.C4.5.CART比较 1. 前言 上文决策树(Decision Tree)1-决策树原理介 ...

  6. ID3、C4.5、CART决策树介绍

    决策树是一类常见的机器学习方法,它可以实现分类和回归任务.决策树同时也是随机森林的基本组成部分,后者是现今最强大的机器学习算法之一. 1. 简单了解决策树 举个例子,我们要对”这是好瓜吗?”这样的问题 ...

  7. 决策树(ID3、C4.5、CART)

    ID3决策树 ID3决策树分类的根据是样本集分类前后的信息增益. 假设我们有一个样本集,里面每个样本都有自己的分类结果. 而信息熵可以理解为:“样本集中分类结果的平均不确定性”,俗称信息的纯度. 即熵 ...

  8. 决策树 ID3 C4.5 CART(未完)

    1.决策树 :监督学习 决策树是一种依托决策而建立起来的一种树. 在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的一种映射关系,每一个节点代表某个对象,树中的每一个分叉路径代表某 ...

  9. 决策树(上)-ID3、C4.5、CART

    参考资料(要是对于本文的理解不够透彻,必须将以下博客认知阅读,方可全面了解决策树): 1.https://zhuanlan.zhihu.com/p/85731206 2.https://zhuanla ...

  10. 21.决策树(ID3/C4.5/CART)

    总览 算法   功能  树结构  特征选择  连续值处理 缺失值处理  剪枝  ID3  分类  多叉树  信息增益   不支持 不支持  不支持 C4.5  分类  多叉树  信息增益比   支持 ...

随机推荐

  1. 浅谈MVC中的service层(转)

    概述 mvc框架由model,view,controller组成,执行流程一般是:在controller访问model获取数据,通过view渲染页面. mvc模式是web开发中的基础模式,采用的是分层 ...

  2. Intel的CPU漏洞:Spectre

    最近觉得越来越忙,写博客都没精力了.一定是太沉迷农药和刷即刻了…… 17年年底,18年年初,Intel被爆出了Meltdown(熔断)和Spectre(幽灵)漏洞.等Spectre攻击的POC出来以后 ...

  3. XAF创建一个DashBoard

    1.首先启动windows程序之后点击DashBoard导航栏 2.接着点击新建按钮,开始创建一个DashBoard 3.接着根据你的数据来源选择数据源,这里我选择了数据库 4.接着填好你的服务器和数 ...

  4. pycharm配置tensorflow环境 适用于Python3.6 CPU

    一.环境 基于安装Python3.6以及pycharm. 二.在项目设置里配置编译环境 打开pycharm新建一个项目. 打开pycharm->file->setting->proj ...

  5. synchronized各种使用场景

    synchronized属于JVM锁机制 一.使用场景 在并发量比较小的情况下访问公共资源,使用synchronized是个不错的选择,但是在并发量比较高的情况下,其性能下降很严重 二.应用场景:同步 ...

  6. centos7常用命令

    系统命令 shutdown -h now # 关机 shutdown -r now # 重启 reboot # 重启 systemctl status firewalld # 查看防火墙状态 syst ...

  7. 解题报告 『宝藏(Prim思想 + 访问顺序随机)』

    原题地址 本以为不过是一道Prim算法模版题,但貌似只能得45分,虽然对我这种蒟蒻来说已经够了. 然而同机房大佬表示可以用模拟退火A了此题,遂习之,终无所获. 然而机缘巧合之下习得了另一种随机算法,于 ...

  8. [WC2006]水管局长

    原题链接 前言 搞不懂为什么要写LCT,搞不懂为什么要加强数据.像这道题是用父亲表示法来做的.虽然复杂度不是log,但是现在下面这份代码却是无论从空间,还是代码量,还是时间都是优秀不止一点. 而且这样 ...

  9. Linux第四节课学习笔记

    touch命令可修改文件atime和mtime,不能修改ctime.可用于修改文件后将修改时间改回之前修改时间. mkdir命令用于创建空白的目录,格式为“mkdir [选项] 目录”.加上参数-p可 ...

  10. anki_vector SDK源码解析(教程)

    一:最近anki vector robot开放了Python SDK,我听到的第一时间就赶快上网查了查,先抛几个官网重要链接吧: Python编程API手册及环境搭建等: https://sdk-re ...