机器学习之决策树(Decision Tree)①——基本概念及思想

什么是决策树?

引例
现有训练集如下,请训练一个决策树模型,对未来的西瓜的优劣做预测。
在这里插入图片描述
先不谈建立决策树模型的算法,我们先看一下基于“信息增益”(后面讲)生成的决策树的样子
在这里插入图片描述
一棵决策树包含一个根节点、若干个内部节点、若干个叶节点。叶节点对应于决策结果,其他节点对应于一个属性测试。每个节点包含的样本集合根据属性测试的结果被划分到子节点中。根节点(纹理)包含样本全集,根节点下的节点(根蒂)包含所有纹理=清晰的样本。从根节点到每个叶节点的路径对应一个判定测试序列。决策树的学习就是要产生一棵对新样本预测正确率高的决策树。

决策树结构

  • 结点(node):内部结点和叶结点。内部结点—>特征 ;叶结点—>标签
  • 有向边

分类决策树

  • 叶结点—>类别

回归决策树

  • 叶结点—>实数

李航《统计学习方法》中的介绍

  • 决策树(decision tree)是一种基本的分类与回归方法。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。其主要优点是模型具有可读性,分类速度快。学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型。预测时,对新的数据,利用决策树模型进行分类。决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的修剪。这些决策树学习的思想主要来源于由Quinlan在1986年提出的ID3算法和1993年提出的C4.5算法,以及由Breiman等人在1984年提出的CART算法。
  • 决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。决策树是一种十分常用的分类回归方法

如何创建一颗决策树?

  1. 第一步:确定评价决策树好坏的指标(用什么?)----->在测试集上的表现
  2. 第二步:列举出所有可能的决策树,然后计算各自的指标,从而选出最优的一棵树
    缺点是什么?----->从所有可能的决策树中选取最优的DT是一个NP-hard问题

特征选择

  • 决策树学习的关键在于:在每个节点上如何选择最优划分属性。
  • 在引例中,在根节点上,优先选择了“纹理”作为划分属性,这种选择是有依据的。
    一般而言,随着划分过程不断进行,我们希望决策树的分支节点所包含的样本尽可能属于同一类别,即节点的“纯度”越来越高。因此我们要找一个指标,去衡量划分数据集后“纯度提升的幅度”,然后选择能让“纯度提升的幅度”最大的特征去划分数据集。
  • 常用的衡量“纯度提升的幅度”的指标有:信息增益、信息增益率、基尼指数。
  • 基于信息增益生成决策树的算法,称为ID3算法
  • 基于信息增益率生成决策树的算法,称为C4.5算法
  • 基于基尼指数生成决策树的算法,称为CART算法

启发式学习

贪心策略

  • 贪心策略(一次找到最优模型)
  • 思想:确定贪心指标,在候选方案集合中执行一个让贪心指标最大的方案。不会从全局最优的角度思考问题,近似求解,这个解可能是次优解(sub-optimal)

决策树的贪心指标

  • 信息增益: 信息增益 = 原来结点的不纯度 – 子结点不纯度的和。

候选方案集合(连续特征,离散特征)

  • 连续特征: 比如年龄中<10岁,<20岁,<30岁等等都可以是划分点。假设:5种方案
    离散特征:
  • 多叉树:直接按照不同特征值划分即可,比如长相里的丑,中等,帅。1种方案
  • 二叉树:丑/中等帅,丑中等/帅,丑帅/中等,都是划分点。3种方案
  • 连续特征和离散特征划分点取并集,5+1或5+3种方案

启发式构建决策树过程

在这里插入图片描述

贪心指标与建树方法

建树的方法论

  • 让叶结点尽早变得更纯

衡量不纯度的指标

  • 树结点内样本标签不一致的程度

衡量变纯程度的指标(信息增益)

  • 划分前的不纯度为a,比如划分后产生两个结点,它们的不纯度分别为b和c,可以对其加权为B和C,那信息增益=a-(B+C)

建树过程

  • 遍历全体划分点候选集,选择信息增益最大的划分点构建决策树,递归执行

衡量不纯度的指标
在这里插入图片描述

衡量不纯度的指标与信息增益
基尼指数(分类):

  • 两次抽取,拿到两个不同类别实例的概率,如果结点中实例是纯的,那么基尼指数=0

香农熵(分类):

  • 刻画不确定程度,如果结点中实例是纯的,那么香农熵=0

均方误差(回归):

  • 结点内的均方误差

信息增益

  • 信息增益 = 原来结点的不纯度 – 子结点不纯度的和。
    在这里插入图片描述

信息增益与决策树算法

  • 根据不同的衡量结点不纯的指标,一些无聊的大人非要说使用了不同的算法,并纷纷给这些构建决策树的算法起了名字。

ID3算法:基于香农熵增益,缺点:会偏爱取值较多的特征

  • 香农熵增益 = 结点的香农熵 – 子结点香农熵的带权和

C4.5算法:基于香农熵增益比,缺点:计算复杂度高

  • 香农熵增益比 = 参数*香农熵增益 ps:某特征的特征值种类越多,那么参数越小。

CART分类算法:基于基尼指数增益

  • 基尼指数增益 = 结点的基尼指数 – 子结点的基尼指数的带权和

CART回归算法:基于方差增益

  • 方差增益 = 结点的方差 – 子结点的方差的带权和

启发式学习的两个问题

这个贪心指标怎么设计?

  • 第一步:设计衡量结点不纯度的指标
  • 第二步:设计衡量变纯程度的指标(信息增益,贪心指标)
  • 第三步:遍历全体划分点候选集,选择信息增益最大的划分点构建决策树。反复执行构建树的枝干,直到达到停止条件,完成整棵决策树的构建

怎么确定全体划分点候选集?

  • 连续特征: 先按照特征值排序,“见缝插针”,5个划分点
    离散特征:
  • 多叉树:1个划分点
  • 二叉树: 2^(M-1)-1个划分点
  • 连续特征和离散特征划分点取并集

决策树的剪枝

为什么要剪枝?

  • 宽泛来讲:机器学习模型都会有过拟合风险,在训练集上表现的过于优秀,而泛化能力差,因此机器学习模型都有对应的防止过拟合的策略,决策树的策略就是剪枝
  • 具体来讲:决策树生成算法会递归地建造决策树的分支,直到结点都很纯为止。这样产生的决策树往往对训练数据的分类很准确,但失去泛化能力,即发生过拟合了,因此,可通过主动去掉一些分支来降低过拟合的风险,提高模型泛化能力

预剪枝和后剪枝

  • 剪枝是决策树学习算法对付“过拟合”的主要手段。在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,这时就可能因训练样本学得“太好”了,以致于把训练集自身的一些特点当作所有数据都具有的一般性质而导致过拟合。因此,可通过主动去掉一些分支来降低过拟合的风险。
  • 决策树剪枝的基本策略有:“预剪枝”和“后剪枝”。
  • 预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树准确率提升,则停止划分并将当前结点标记为叶结点;后剪枝则是先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树准确率提升,则将该子树替换为叶节点。

先讨论“预剪枝”:
  预剪枝是在建造决策树的过程中执行的,如果发现某个节点划分后准确率没有提高,就禁止划分。

  • 优点:预剪枝使得决策树的分支都没有“展开”,降低了过拟合的风险,减小了训练时间。
  • 缺点:有欠拟合的风险。因为有些分支的当前划分虽不能提升准确率、甚至会暂时导致准确率下降,但是在其基础上的后续划分却有可能显著提升准确率。

再讨论“后剪枝”:
  后剪枝先从训练集生成一棵完成决策树,然后慢慢砍树,砍的位置:当前决策树叶节点的父节点,砍的条件是:如果能提高准确率就砍。

  • 优点:欠拟合风险很小,准确率一般优于“预剪枝”决策树。
  • 缺点:训练时间长。

决策树模型优缺点

优点:

  • 易于解释
  • 处理类别特征,其他的技术往往要求数据属性的单一
  • 延展到多分类
  • 不需要特征放缩
  • 能捕获非线性关系和特征间的交互关系

缺点:

  • 寻找最优的决策树是一个NP-hard的问题,只能通过启发式方法求次优解
  • 决策树会因为样本发生一点点的改动,就会导致树结构的剧烈改变
  • 如果某些离散特征的特征值种类多,生成决策树容易偏向于这些特征 ID3
  • 有些比较复杂的关系,决策树很难学习,比如异或

参考

https://www.cnblogs.com/itmorn/p/7918797.html

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值