数据分析_算法_决策树

概述

决策树是数据挖掘经典算法,既可以做分类,又可以做回归。下面介绍决策树的基本概念和相关术语,算法方面讲解ID3、C4.5、CART算法,并阐述各自的特点及其使用场景,最后用典型案例“泰坦尼克生存”作为实战,过程中会介绍模型评价机制和相关方法。

基本概念

在这里插入图片描述
一个完整的决策树会经历:构造剪枝两个过程。

构造

构造的过程就是选择什么属性作为节点的过程,那么在构造过程中,会存在三种节点:根节点、节点、叶节点。
节点之间存在父子关系。比如根节点会有子节点,子节点会有子子节点,但是到了叶节点就停止了,叶节点不存在子节点。那么在构造过程中,你要解决三个重要的问题:

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

实际上最重要的是选择根节点的方法,如果能有一种“方法“确定根节点,那么这个方法就可以应用到子节点。后面主要讲的就是这个“方法”也就是上面提到的三个算法。

剪枝

一个决策树构造出来并没有结束,还需要对其进行“修剪”,目的是防止过拟合,是使得模型拥有较好的泛化能力。

过拟合:模型的训练结果过好,以至于在实际应用的过程中,会存在“死板”的情况,导致分类错误,就像第三幅图一样,第一幅图是与之相反的欠拟合。跳出模型想一下,类别之间从大方向上是存在某种可以量化的区别的,那么他们之间的“区别=“区分曲线”是不会那么刁钻的,应该是相对比较“通用”或者说是相对“光滑圆润”
在这里插入图片描述
一般来说,剪枝可以分为“预剪枝”(Pre-Pruning)和“后剪枝”(Post-Pruning)。
预剪枝:在决策树构造时就进行剪枝。方法是在构造的过程中对节点进行评估,如果对某个节点进行划分,在验证集中不能带来准确性的提升,那么对这个节点进行划分就没有意义,这时就会把当前节点作为叶节点,不对其进行划分。应用比较少,一般在建模之前,我们会主观确定需要拟合的变量,把意义不大的或者数据质量不好的排除。
后剪枝:在生成决策树之后再进行剪枝,通常会从决策树的叶节点开始,逐层向上对每个节点进行评估。如果剪掉这个节点子树,与保留该节点子树在分类准确性上差别不大,或者剪掉该节点子树,能在验证集中带来准确性的提升,那么就可以把该节点子树进行剪枝。方法是:用这个节点子树的叶子节点来替代该节点,类标记为这个节点子树中最频繁的那个类。也就是把频率最高的情况当作是这个分类的唯一情况

算法

C4.5是ID3的改进,应用很广泛,CART可以用于分离和回归,前两者只能应用于分类。

相关概念

:它表示了信息的不确定度
计算信息熵的数学公式:
在这里插入图片描述
p(i|t) 代表了节点 t 为分类 i 的概率,其中 log2 为取以 2 为底的对数。这里我们不是来介绍公式的,而是说存在一种度量,它能帮我们反映出来这个信息的不确定度。当不确定性越大时,它所包含的信息量也就越大,信息熵也就越高。不理解没关系,后面会带入数据。

ID3

ID3 算法计算的是信息增益,信息增益指的就是划分可以带来纯度的提高,信息熵的下降。它的计算公式,是父亲节点的信息熵减去所有子节点的信息熵。在计算的过程中,我们会计算每个子节点的归一化信息熵,即按照每个子节点在父节点中出现的概率,来计算这些子节点的信息熵。所以信息增益的公式可以表示为:在这里插入图片描述
公式中 D 是父亲节点,Di 是子节点,Gain(D,a) 中的 a 作为 D 节点的属性选择。在这里插入图片描述比如针对图上这个例子,D 作为节点的信息增益为:在这里插入图片描述
假如我们的训练集数据如下:
在这里插入图片描述
我们基于 ID3 的算法规则,完整地计算下我们的训练集,训练集中一共有 7 条数据,3 个打篮球,4 个不打篮球,所以根节点的信息熵是:
在这里插入图片描述
如果你将天气作为属性的划分,会有三个叶子节点 D1、D2 和 D3,分别对应的是晴天、阴天和小雨。我们用 + 代表去打篮球,- 代表不去打篮球。那么第一条记录,晴天不去打篮球,可以记为 1-,于是我们可以用下面的方式来记录 D1,D2,D3:
D1(天气 = 晴天)={1-,2-,6+}
D2(天气 = 阴天)={3+,7-}
D3(天气 = 小雨)={4+,5-}
我们先分别计算三个叶子节点的信息熵:
在这里插入图片描述
那么作为子节点的归一化信息熵 = 3/7 * 0.918 + 2/7 *1.0 + 2/7 * 1.0=0.965。
所以天气作为属性节点的信息增益为,Gain(D , 天气)=0.985-0.965=0.020。
同理我们可以计算出其他属性作为根节点的信息增益,它们分别为 :
Gain(D , 温度)=0.128
Gain(D , 湿度)=0.020
Gain(D , 刮风)=0.020
我们能看出来温度作为属性的信息增益最大。因为 ID3 就是要将信息增益最大的节点作为父节点,这样可以得到纯度高的决策树,所以我们将温度作为根节点。其决策树状图分裂为下图所示:
在这里插入图片描述
然后我们要将上图中第一个叶节点,也就是 D1={1-,2-,3+,4+}进一步进行分裂,往下划分,计算其不同属性(天气、湿度、刮风)作为节点的信息增益,可以得到:
Gain(D , 湿度)=1
Gain(D , 天气)=1
Gain(D , 刮风)=0.3115
我们能看到湿度,或者天气为 D1 的节点都可以得到最大的信息增益,这里我们选取湿度作为节点的属性划分。同理,我们可以按照上面的计算步骤得到完整的决策树,结果如下:
在这里插入图片描述
于是我们通过 ID3 算法得到了一棵决策树。ID3 的算法规则相对简单,可解释性强。同样也存在缺陷,比如我们会发现 ID3 算法倾向于选择取值比较多的属性。这样,如果我们把“编号”作为一个属性(一般情况下不会这么做,这里只是举个例子),那么“编号”将会被选为最优属性 。但实际上“编号”是无关属性的,它对“打篮球”的分类并没有太大作用。
所以 ID3 有一个缺陷就是,有些属性可能对分类任务没有太大作用,但是他们仍然可能会被选为最优属性。这种缺陷不是每次都会发生,只是存在一定的概率。在大部分情况下,ID3 都能生成不错的决策树分类。针对可能发生的缺陷,后人提出了新的算法进行改进。

C4.5

C4.5 在ID3的基础上进行了改进,避免了上述的情况。

  • 采用信息增益率
    因为 ID3 在计算的时候,倾向于选择取值多的属性。为了避免这个问题,C4.5 采用信息增益率的方式来选择属性。信息增益率 = 信息增益 / 属性熵,具体的计算公式这里省略。当属性有很多值的时候,相当于被划分成了许多份,虽然信息增益变大了,但是对于 C4.5 来说,属性熵也会变大,所以整体的信息增益率并不大。
  • 采用悲观剪枝
    ID3 构造决策树的时候,容易产生过拟合的情况。在 C4.5 中,会在决策树构造之后采用悲观剪枝(PEP),这样可以提升决策树的泛化能力。悲观剪枝是后剪枝技术中的一种,通过递归估算每个内部节点的分类错误率,比较剪枝前后这个节点的分类错误率来决定是否对其进行剪枝。这种剪枝方法不再需要一个单独的测试数据集。
  • ※离散化处理连续属性
    C4.5 可以处理连续属性的情况,对连续的属性进行离散化的处理。比如打篮球存在的“湿度”属性,不按照“高、中”划分,而是按照湿度值进行计算,那么湿度取什么值都有可能。该怎么选择这个阈值呢,C4.5 选择具有最高信息增益的划分所对应的阈值
  • 处理缺失值
    针对数据集不完整的情况,C4.5 也可以进行处理。 假如数据集如下:在这里插入图片描述
    我们不考虑缺失的数值,可以得到温度 D={2-,3+,4+,5-,6+,7-}。温度 = 高:D1={2-,3+,4+} ;温度 = 中:D2={6+,7-};温度 = 低:D3={5-} 。这里 + 号代表打篮球,- 号代表不打篮球。比如 ID=2 时,决策是不打篮球,我们可以记录为 2-。
    Gain(D′, 温度)=Ent(D′)-0.792=1.0-0.792=0.208
    属性熵 =1.459, 信息增益率 Gain_ratio(D′, 温度)=0.208/1.459=0.1426。
    D′的样本个数为 6
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值