热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

id3决策树_ID3、C4.5、CART决策树介绍

决策树是一类常见的机器学习方法,它可以实现分类和回归任务。决策树同时也是随机森林的基本组成部分,后者是现今最强大的机器学习算法之一。1.简单了解决策树举

决策树是一类常见的机器学习方法,它可以实现分类和回归任务。决策树同时也是随机森林的基本组成部分,后者是现今最强大的机器学习算法之一。

1. 简单了解决策树

举个例子,我们要对”这是好瓜吗?”这样的问题进行决策时,通常会进行一系列的判断:我们先看"它是什么颜色的",如果是"青绿色", 我们再看"它的根蒂是什么形态",如果是"蜷缩",我们再判断"它敲起来是什么声音",最后我们判断它是一个好瓜。决策过程如下图所示。

074f7415ad5f78d64950bc4ff2ada053.png

决策过程的最终结论对应了我们所希望的判定结果,"是"或"不是"好瓜。上图就是一个简单的决策树。

那么我们就会有疑问了,为什么这棵树是这样划分的呢?一定要以"色泽"作为根节点吗?对此,就需要划分选择最优的属性。

2. 划分选择

一般而言,我们希望决策树的分支节点所包含的样本尽可能属于同一类别,即结点的"纯度"越高越好。常用的纯度有"信息增益"、 "信息增益率"、 "基尼指数"或"均方差",分别对应ID3、C4.5、CART。

3. ID3决策树

    3.1 信息熵

    信息熵是度量样本集合纯度最常用的一种指标。假定当前样本集合D中第i类样本所占的比例为pi,则D的信息熵定义为:

d337b82b3b882609ac312bdf01a96ed4.png

    其中pi是数据集中任意样本属于类Ci的概率,用501194cb80c21191445c71822fafcf21.png估计。Info(D)的值越小,D的纯度越高。

    3.2 条件熵

    当前样本集D中,考虑到不同的分支结点所包含的样本数不同,可以赋予不同的权重,样本数越多的分支结点对应的影响越大,即为条件熵,定义如下:

37dacd5585f94190df959f7fc1086e9e.png

    其中,94afb0fb5bbc4893addac7d7c9d79c3c.png充当第j个划分的权重。

    3.3 信息增益

    信息增益 = 信息熵 – 条件熵,即

6bb1a4abb8247652c2d276eb1b342d7a.png

    当信息熵一定时,条件熵越小(即纯度越大),信息增益越大,选择信息增益最大的属性作为最优划分属性。

    3.4  算法过程

    输入:训练集8513437fadaf68c95533313d733236be.png

             属性集 76884f3526f1360d394cc053710f5450.png

    (1) 生成结点node;

    (2)  如果数据集D都属于同一个类C,那么将node标记为C类叶子结点,结束;

    (3)  如果数据集中D没有其他属性可以考虑,那么按照少数服从多数的原则,在node上标出数据集D中样本数最多的类,结束;

    (4)  否则,根据信息增益,选择一个信息增益最大的属性作为结点node的一个分支。

    (5)  结点属性选定后,对于该属性中的每个值:

  1. 每个值生成一个分支,并将数据集中与该分支有关的数据收集形成分支结点的样本子集Dv,删除结点属性那一栏;

  2. 如果Dv非空,则转(1),运用以上算法从该结点建立子树。

4. C4.5决策树

信息增益准则偏向于可取值数目较多的属性(例如:将"编号"作为一个划分属性,那么每个"编号"仅包含一个样本,分支结点的纯度最大,条件熵为0,信息增益=信息熵,信息增益达到最大值),为减少这种偏好带来的不利影响,使用了"信息增益率"来选择最优划分属性。

    4.1 信息增益率

    信息增益率是在信息增益的基础上,增加了属性A的信息熵。

    信息增益率的定义如下:

82be61cf8f90c4c4e47200cad01de070.png

    其中

e12ba4ac2a93b8ccf95553f9eacfe745.png

    该值表示数据集D按属性A分裂的v个划分产生的信息。

    注意:信息增益率偏向于可取值数目较少的属性,所以C4.5算法不是直接选择增益率最大的划分属性,而是先从划分属性中找出信息增益高于平均水平的属性,再从中选择信息增益率最高的属性。

    4.2 算法过程

    输入:训练集 8513437fadaf68c95533313d733236be.png

             属性集 76884f3526f1360d394cc053710f5450.png

   (1)  生成结点node;

   (2)  如果数据集D都属于同一个类C,那么将node标记为C类叶子结点,结束;

   (3)  如果数据集D中没有其他属性可以考虑,那么按照少数服从多数的原则,在node上标出数据集D中样本数最多的类,结束;

   (4)  否则,根据信息增益率,先从划分属性中找出信息增益高于平均水平的属性,再从中选择信息增益率最高的属性。作为结点node的一个分支。

    (5)  结点属性选定后,对于该属性中的每个值:

  1. 每个值生成一个分支,并将数据集中与该分支有关的数据收集形成分支结点的样本子集Dv,删除结点属性那一栏;

  2. 如果Dv非空,则转(1),运用以上算法从该结点建立子树。

5. CART决策树

CART树又名分类回归树,可用于分类和回归。

    5.1 基尼指数

    分类时数据集的纯度可以用基尼值来度量:

294cdeb16e48634528c284d14ec5b956.png

    纯度越大,基尼值越小。

    属性的基尼指数定义如下:

b46d2730a4acc3bd290d2654aa9fe50b.png

    选择基尼指数最小的属性作为最优划分属性。

    5.2 均方差

    回归时数据集的纯度可以用均方差来度量:

9bfa2a001541db4a362ed10696989a28.png    

    其中

0b97e7ca52ac95a5aaa6ad9374130c64.png  

    选择均方差最小的属性作为最优划分属性。

    5.3 算法过程

    同上,第(4)步中计算”信息增益率”改为”基尼指数”或”均方差”即可。

6. 算法比较

bc477ae30527ab8b671b71eabfd52168.png

 7. 决策树优缺点

优点:

  • 推理过程容易理解,计算简单,可解释性强。

  • 比较适合处理有缺失属性的样本。

  • 可自动忽略目标变量没有贡献的属性变量,也为判断属性变量的重要性,减少变量的数目提供参考。

缺点:

  • 容易造成过拟合,需要采用剪枝操作。

  • 忽略了数据之间的相关性。

  • 对于各类别样本数量不一致的数据,信息增益偏向于那些更多数值的特征。

8. 决策树适用情景

  • 决策树能够生成清晰的基于特征选择不同预测结果的树状结构,数据分析师希望更好的理解手上的数据的时候可以使用。

  • 决策树更大的作用是作为一些更有用的算法的基石。例如:随机森林、AdaBoost、GBDT。

以上为决策树的介绍说明,后续讲解C4.5和CART树的连续值处理、缺失值处理、剪枝,敬请期待!




推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • “你永远都不知道明天和‘公司的意外’哪个先来。”疫情期间,这是我们最战战兢兢的心情。但是显然,有些人体会不了。这份行业数据,让笔者“柠檬” ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
author-avatar
妩媚舞乙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有