剪枝处理

在之前的内容中提到过,决策树建立的时候停止的三个理论条件,理论上,在给定的样本集和中,一般要等到属性划分完或者样本分类完成再停止,但是这样很容易导致决策树的过拟合。剪枝是决策树对付“过拟合”的主要手段,剪枝顾名思义就是修剪决策树,减少宽度和深度,使得树不那么复杂,可以有效防止“过拟合”。

决策树剪枝的基本策略有“预剪枝”和“后剪枝”。

1. 预剪枝

预剪枝是指在决策树生成的过程中,对每个结点在划分前先进行估计,如果当前结点的划分不能带来决策树泛化性能的提升,那么停止划分并且将当前结点标记为叶子结点。

剪枝处理-----决策树

如上图所示,在对第二层划分之前,我们先将样本集合输入决策树中,计算精度,比较划分前后的精度,再决定这个结点是分支结点还是叶子结点。很明显,预剪枝使得决策树的很多分支都没有“展开”,这样不仅降低了过拟合的风险,也减少了决策树的训练时间开销和预测时间开销。但是另一方面,有些分支的当前划分虽然不能提升泛化性能,但是在其基础上进行的后续划分可能会导致性能显著提高。并且"预剪枝"使得决策树中的多个分支不得已展开,会带来欠拟合的风险。

2. 后剪枝

 后剪枝则是从训练集生成一棵完整的决策树,然后自底向上地对非叶子节点进行考察,如果将该结点对应地子树替代为叶子结点能带来决策树泛化性能地提升,那么就将该子树替换为叶子结点

剪枝处理-----决策树

 如图为后剪枝地具体计算过程,直接自底向上,逐个计算分支结点直接变为叶子结点之后地分类精度,在将分支结点替换为叶子结点地时候,选择分支结点下类别数多的作为叶子结点,如“纹理”这个分支结点,在图4.5中,有三个分支,其中两个好瓜分支一个坏瓜分支,那么在替换为叶子结点地时候,选择好瓜作为叶子结点。

从预剪枝和后剪枝的图中可以看出,后剪枝决策树通常比预剪枝决策树保留了更多的分支。一般情况,后剪枝决策树的欠拟合风险小,泛化能力往往优于预剪枝决策树。但是后剪枝决策树的训练时间更长,首先后剪枝决策树本身就是基于完全决策树上建立的,并且还需要自底向上的对树中地所有非叶子节点进行逐一考察。

目前楼主做过的项目中还没使用过剪枝处理,可能是因为平时调sklearn中的库习惯了,并且也可以使用网格搜索来进行决策树参数的最佳选择,所以还真没特别关注这个。

相关文章:

  • 2021-08-20
  • 2022-01-11
  • 2021-06-28
  • 2021-12-18
  • 2018-03-07
  • 2021-09-11
  • 2022-12-23
  • 2021-06-23
猜你喜欢
  • 2022-01-19
  • 2021-09-10
  • 2021-05-10
  • 2021-07-03
相关资源
相似解决方案