首页 > 其他分享 >决策树

决策树

时间:2022-10-31 16:31:56浏览次数:72  
标签:剪枝 增益 划分 决策树 节点 属性


申明,本部分内容参考了众多网上资料,如有侵权请联系删除。

总体介绍

决策树(decision tree) 是一种基本的分类与回归方法,利用树形结构进行决策。在进行决策过程中,通常会需要进行一系列的判断或“子决策”,而决策过程中提出的每个判定问题都是对某个属性的“测试”,每个测试的结果要么导出最终结论,要么导出进一步的判定问题。

一般的,一颗树包含一个根节点、若干个内部节点和若干个叶节点。叶节点对应于决策结果,其他节点则对应于一个属性测试。决策树学习的目的是产生一颗泛化能力强,即处理未见示例能力强的决策树。

决策树通常有三个步骤:特征选择、决策树的生成、决策树的修剪。

**常见决策树生成算法:**CART、ID3、C4.5、CLS、C5.0等

决策树_python

如上图所示为决策树的典型示例,“纹理”为根节点,“好瓜”/“坏瓜”为叶子节点,而其他方形节点则为内部节点。

决策树的优点

  1. 相比其他算法,决策树不需要进行太过复杂的数据预处理,如标准化、归一化等;
  2. 数据值的缺失不会在很大程度上影响决策树的建立;
  3. 可解释性强;
  4. 天然具备处理多分类问题的能力;
  5. 能处理特征间的非线性关系;

决策树的缺点

  1. 数据的微小变化可能导致整个树的结构发生巨大的变化,即结构不稳定;
  2. 决策树计算过程较其他算法较为复杂;
  3. 决策树通常需要花更多时间用于模型训练;
  4. 数据集较小时决策树性能不佳;
  5. 数据类别不平衡时可能会造成欠拟合;

划分选择

在构建决策树时,要考虑如何选择当前最优划分属性的问题。我们期望生成的决策树在实现有效的分类前提下,分支尽可能少,树的长度尽可能短,即整体尽可能高效。即,我们希望决策树的分支节点所包含的样本尽可能属于同一类别

分支选择标准

下面介绍几种常见的划分标准。

信息熵与信息增益

决策树_算法_02

增益率

决策树_决策树_03

基尼系数

决策树_算法_04

分支选择算法

上面三种分支选择标准,分别对应了ID3、C4.5和CART这三种最常见的决策树分支选择算法。
信息增益、增益率、基尼系数的计算方式参见视频:​​​【数据挖掘】决策树零基础入门教程,手把手教你学决策树!​​本节不对该过程进行赘述。

ID3

ID3算法采用信息增益作为属性划分标准。
【优点】
a. 分支选取具有可解释性;
b. 在相对短的时间内构建相对短的树;
c. 整棵树分类完毕所需的时间是有限的;
d. 可以发现可以用于剪枝的叶子节点。
【缺点】
a. 信息增益比较偏重于可取值较多的属性(假若为该属性为Id,则选取该属性后信息熵为0)-> 如果样本量较小可能会出现过拟合;
b. 每做一个决定时只能考虑一个属性;

C4.5

由于ID3所采用信息增益会对可取值较多的属性有所偏重,因此C4.5采用增益率作为分类标准。但由于增益率会对可取值较少的属性有所偏重,因此C4.5并不直接选择增益率最大的候选划分属性,而是从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的属性。
【优点】
a. 具有可解释性;
b. 易于实现;
c. 适用于分类或连续值;
d. 能处理噪音数据;
【缺点】
a. 数据中小变化可能会影响整棵树的结构;
b. 在小数据集上效果不佳;

CART

CART采用基尼指数作为划分标准,每次选择划分后基尼指数最小的属性作为划分属性。
注意,CART是在这三类分支选择算法中唯一一个支持回归预测的模型,对于回归预测,它采用均方差作为评估指标。需要注意的是,CART是二分类模型,假使包含一个属性,有多个取值,如工资=[高,中,低],那么它每次分支选择将是 (工资=高)或(工资=中)或(工资=低)。即CART构建的是二叉树。
【优点】
a. 天然具有多分类特性;
b. 可解释性;
c. 能处理数字、类型数据;
d. 非线性关系不影响决策树性能表现;
【缺点】
a. 数据中小变化可能会影响整棵树结构;
b. 如果数据类型不平衡,可能会造成欠拟合;

剪枝

**剪枝(puring)**是决策树应对过拟合的主要手段。基本剪枝策略包含:预剪枝(prepurning)和后剪枝(postpurning)
预剪枝:在决策树生成过程中,对每个节点在划分前进行估计,如果该节点的划分不能带来决策树泛化能力的提升,则停止划分并将该节点置为叶子节点;
后剪枝:先从训练集生成一颗完整的决策树,然后自底向上对非叶子节点进行考察,若该节点对应的子树节点替换成叶节点能提高泛化能力,则将其进行替换。
评估剪枝能否提高泛化能力,可以从训练集中取一部分作为验证集,用其来检验划分前后模型的性能,若性能更好,则划分,否则不划分。
预剪枝过程中,若需要判断的节点的子节点不是叶子节点,则可以对其每个取值中的数据分别采用投票法(即数量最多的那个)作为其预测值,来验证分类后的模型表现。预剪枝降低了过拟合的风险,减少了决策树的训练时间和测试时间开销,但不保证被剪掉的属性不能提升其精度,即可能带来欠拟合的风险

后剪枝则自底向上分别对非叶子节点进行考察,同样适用验证集进行性能评估,若将其替换为叶子节点后性能提升,则将其替换,若替换后性能不变,也要替换(奥卡姆剃刀原理)。后剪枝通常比预剪枝能保留更多的分支,欠拟合风险很小,泛化能力优于预剪枝决策树,但其所需的时间开销会比预剪枝决策树更大。

连续与缺失值

连续值

连续值属性的可取值范围是无限的,因此需要对连续数值进行离散化。常见的离散化方法为二分法,这也是C4.5中所用到的策略,二分法的方法如下:

决策树_决策树_05

注意,对样本中n个取值,需要进行n-1次二分,分别对这n-1次二分计算最大信息增益,从而确定二分的位置。
注:不同于离散属性,连续属性仍可作为其后代属性的划分属性。

缺失值

数据集中存在缺失值时往往需要面对两个问题:

(1)如何在属性缺失的情况下进行划分属性选择?

(2)给定划分属性,若样本在该属性上的值缺失,该如何对该样本进行划分?

决策树_算法_06


决策树_决策树_07


基于上述定义,推广信息增益:

决策树_算法_08

决策树_python_09

多变量决策树

前面所用到的决策树均为单变量决策树,即每次决策都只针对一个变量进行考虑,该决策树所形成的分类边界将与坐标轴平行。

而多变量决策树则能实现“斜划分”。

决策树_算法_10


决策树_机器学习_11


决策树_子节点_12


标签:剪枝,增益,划分,决策树,节点,属性
From: https://blog.51cto.com/u_15854687/5810321

相关文章

  • 决策树实验
    #一、【实验目的】#理解决策树算法原理,掌握决策树算法框架;#理解决策树学习算法的特征选择、树的生成和树的剪枝;#能根据不同的数据类型,选择不同的决策树算法;#针对特定应......
  • 实验一 :决策树算法实验
    实验一:决策树算法实验【实验目的】理解决策树算法原理,掌握决策树算法框架;理解决策树学习算法的特征选择、树的生成和树的剪枝;能根据不同的数据类型,选择不同的决策树算......
  • 实验一:决策树实验
    【实验目的】理解决策树算法原理,掌握决策树算法框架;理解决策树学习算法的特征选择、树的生成和树的剪枝;能根据不同的数据类型,选择不同的决策树算法;针对特定应用场景及......
  • 实验一:决策树算法实验
    实验一:决策树算法实验【实验目的】理解决策树算法原理,掌握决策树算法框架;理解决策树学习算法的特征选择、树的生成和树的剪枝;能根据不同的数据类型,选择不同的决策树算......
  • 实验一:决策树算法实验
    【实验目的】理解决策树算法原理,掌握决策树算法框架;理解决策树学习算法的特征选择、树的生成和树的剪枝;能根据不同的数据类型,选择不同的决策树算法;针对特定应用场景及......
  • 实验一:决策树实验
    |博客班级|https://edu.cnblogs.com/campus/czu/classof2020BigDataClass3-MachineLearning||作业要求|https://edu.cnblogs.com/campus/czu/classof2020BigDataClass3-Mac......
  • 实验一:决策树算法实验
    实验一:决策树算法实验【实验目的】理解决策树算法原理,掌握决策树算法框架;理解决策树学习算法的特征选择、树的生成和树的剪枝;能根据不同的数据类型,选择不同的决策树算......
  • 决策树算法实验
    一、【实验目的】理解决策树算法原理,掌握决策树算法框架;理解决策树学习算法的特征选择、树的生成和树的剪枝;能根据不同的数据类型,选择不同的决策树算法;针对特定应用场景......
  • 实验一:决策树算法实验
    一、【实验目的】理解决策树算法原理,掌握决策树算法框架;理解决策树学习算法的特征选择、树的生成和树的剪枝;能根据不同的数据类型,选择不同的决策树算法;针对特定应用场......
  • 决策树算法实验
    决策树算法实验 【实验目的】1、理解决策树算法原理,掌握决策树算法框架;2、理解决策树学习算法的特征选择、树的生成和树的剪枝;3、能根据不同的数据类型,选择不同的......