热门标签 | 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树的连续值处理、缺失值处理、剪枝,敬请期待!




推荐阅读
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  •   上一篇博客中我们说到线性回归和逻辑回归之间隐隐约约好像有什么关系,到底是什么关系呢?我们就来探讨一下吧。(这一篇数学推导占了大多数,可能看起来会略有枯燥,但这本身就是一个把之前算法 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍如何利用动态规划算法解决经典的0-1背包问题。通过具体实例和代码实现,详细解释了在给定容量的背包中选择若干物品以最大化总价值的过程。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文将介绍由密歇根大学Charles Severance教授主讲的顶级Python入门系列课程,该课程广受好评,被誉为Python学习的最佳选择。通过生动有趣的教学方式,帮助初学者轻松掌握编程基础。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 本文探讨了 C++ 中普通数组和标准库类型 vector 的初始化方法。普通数组具有固定长度,而 vector 是一种可扩展的容器,允许动态调整大小。文章详细介绍了不同初始化方式及其应用场景,并提供了代码示例以加深理解。 ... [详细]
  • 深入剖析 DEX 赛道:从 60 大头部项目看五大趋势
    本文通过分析 60 大头部去中心化交易平台(DEX),揭示了当前 DEX 赛道的五大发展趋势,包括市场集中度、跨链协议、AMM+NFT 结合、新公链崛起以及稳定币和衍生品交易的增长潜力。 ... [详细]
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社区 版权所有