决策树ID3与C4.5

本文介绍了决策树ID3与C4.5算法,包括决策树的构造与剪枝过程。构造阶段涉及根节点、内部节点和叶节点的选择,节点选择依据信息熵和信息增益。ID3算法利用信息增益选择节点,C4.5则引入信息增益率避免过拟合。文章通过实例展示了如何计算信息熵、归一化信息熵和信息增益,并给出了Python3的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

决策树ID3与C4.5


参考极客时间<数据分析实战45讲>17章

决策树的生成

    决策树的生成会经历两个阶段:构造和剪枝

构造

    构造就是生成一颗完整的决策树.简单来说,构造的过程就是选择什么属性作为节点的过程,在构造过程中会存在三种节点:

  • 根节点:决策树最开始的节点
  • 内部节点:决策树中间的节点
  • 叶节点:决策树最底部的节点

    在构造的过程中需要解决三个重要的问题:

  • 1.选择哪个属性作为根节点
  • 2.选择哪些属性作为子节点
  • 3.什么时候停止并得到目标节点状态,即叶节点

剪枝

    剪枝就是给决策树瘦身,使不需要太多的判断的同时能得到不错的结果,防止过拟合现象的发生.剪枝又分为预剪枝和后剪枝.

    预剪枝是在决策树构造时就进行剪枝.方法是在构造的过程中对节点进行评估,如果对某个节点进行划分,在验证集中不能带来准确性的提升,那么对这个节点进行划分就没有意义,这时就会把当前节点当做叶节点,不对其进行划分.

    后剪枝就是在生成决策树之后再进行剪枝,通常会从决策树的叶节点开始,逐层向上对每个节点进行评估.如果减掉这个节点子树,与保留该节点子树在分类上准确性差别不大或有所提升,那么就可以把该节点子树进行剪枝.方法是:用这个节点子树的叶子节点来替代该节点,类标记为这个节点子树中最频繁的那个类.

节点选择

    给出一个打篮球的数据集如下:

天气 温度 湿度 刮风 是否打篮球
小雨
小雨
晴天
阴天

    在这个探讨将那个属性(天气,温度,湿度,刮风)作为根节点的关键问题,这里是根据纯度和信息熵进行选择的,在纯度和信息熵之间有关联关系:纯度越低,信息熵越大;纯度越高,信息熵越小.

    关于的纯度和信息熵的具体信息和数学公式在极客时间-数据分析实战45讲-17讲里面有,这里不叙述了,数学公式之类太繁琐,可能会说不清楚,极客时间里面讲的还行,需要的可以去看看.

    在构造决策树时会基于纯度来构建,而经典的"不纯度"的指标有三种,分别是信息增益(ID3算法),信息增益率(C4.5算法)以及基尼指数(Cart算法),这篇文件介绍ID3算法.

    ID3算法计算的是信息增益,信息增益指的是划分可以带来纯度的提高,信息熵的下降.它的计算公式是父亲节点的信息熵减去所有子节点的信息熵.在计算的过程中,会计算每个子节点的归一化信息熵,即按照每个子节点在父节点中出现的概率,来计算这些子节点的信息熵.

    在构造的过程中需要计算两个东西:信息熵,信息增益.下面以打篮球的数据集为例如何计算:

信息熵
根节点信息熵

    信息熵的计算公式如下:

E n t ( D ) = − ∑ p k log ⁡ 2 p k Ent(D) = - \sum p_k \log_2 p_k Ent(D)=pklog2pk

    其中的累加次数为结果数量,这个就是2(去打篮球和不去打篮球). p k p_k pk表示的是每个累加情况的概率,在上面的数据集中有7条数据,3个打篮球,4个不打篮球,那么不去打篮球的 p k p_k pk 4 7 \frac{4}{7} 74,去打篮球为 3 7 \frac{3}{7} 73.则在根节点为空的情况下,根节点信息熵为:

E n t ( D ) = − ∑ p k log ⁡ 2 p k = − ( 4 7 log ⁡ 2 4 7 + 3 7 log ⁡ 2 3 7 ) = 0.985 Ent(D) = - \sum p_k \log_2 p_k = - (\frac{4}{7} \log_2 \frac{4}{7} + \frac{3}{7} \log_2 \frac{3}{7}) = 0.985 Ent(D)=pklog2pk=(74log274+73log273

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值