西瓜书决策树预剪枝后剪枝过程详解

预剪枝

概念:决策树生成过程中对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点记为叶结点,其类别标记为训练样例数最多的类别。

我们直接看西瓜书上的例子,其中{1,2,3,6,7,10,14,15,16,17}为训练集,{4,5,8,9,11,12,13}为验证集。
西瓜书决策树预剪枝后剪枝过程详解_第1张图片
(1)在未划分前,根据训练集,类别标记为训练样例数最多的类别,由于训练集中的好瓜与坏瓜是相同多的类别,均为5,因此任选其中一类,书中选择了好瓜作为标记类别。

当所有节点集中在根节点,所有训练集属于标记类别的仅有{4,5,8},因此分类正确的是3/7*100%=42.9%
见下表:

编号 真实中是否为好瓜 判断是否为好瓜
4
5
8
9
11
12
13
正确率 3/7

(2)根据信息增益准则,按照脐部进行划分,在训练集中,凹陷特征好瓜的占比多,因此凹陷划分为好瓜,稍凹特征好过占比多,因此将其标记为好瓜,因此按照脐部划分的子树结果如下。
西瓜书决策树预剪枝后剪枝过程详解_第2张图片
现在按照验证集的结果进行对比:

编号 真实中是否为好瓜 判断是否为好瓜
4 凹陷
5 凹陷
8 稍凹
9 稍凹
11 平坦
12 平坦
13 凹陷
正确率 3/7 5/7

我们能看到正确率从3/7提升到5/7,正确率从42.9%提升至71.4%,脐部的划分选择保留。

(3)在脐部划分的基础上,进一步计算凹陷、根蒂特征下,其他属性的信息增益,根据计算结果可知,在凹陷的情况下,色泽的信息增益最大,因此对于凹陷的西瓜,进一步确定按照色泽进行划分,划分结果如下:
西瓜书决策树预剪枝后剪枝过程详解_第3张图片
按照这个树,我们看下验证集的结果:

编号 真实中是否为好瓜 只看脐部判断是否为好瓜 同时看脐部和色泽(没有的看上一层)
4 凹陷 青绿
5 凹陷 浅白
8 稍凹
9 稍凹
11 平坦
12 平坦
13 凹陷 青绿
正确率 3/7 5/7 4/7

我们能看到正确率不升反降,所以这个划分不选择。

(4)对稍凹数据集,进一步计算其他属性的信息增益,确定根蒂的信息增益最大,因此对稍凹,进一步按照根蒂进行划分:
西瓜书决策树预剪枝后剪枝过程详解_第4张图片
按照这个树,我们看下验证集的结果:

编号 真实中是否为好瓜 只看脐部判断是否为好瓜 同时看脐部和根蒂(没有的看上一层)
4 凹陷
5 凹陷
8 稍凹 稍蜷
9 稍凹 稍蜷
11 平坦
12 平坦
13 凹陷
正确率 3/7 5/7 5/7

我们看到正确率没有上升,不选择这个划分。

(5)因此按照预剪枝,最终形成的决策树如下图,其泛化性为71.4%。
西瓜书决策树预剪枝后剪枝过程详解_第5张图片

后剪枝

概念:先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点

我们还是直接看书上的例子。
(1)首先我们按照信息增益直接生成了一棵树:
西瓜书决策树预剪枝后剪枝过程详解_第6张图片
我们看下正确率:

编号 真实中是否为好瓜 判断是否为好瓜
4
5
8
9
11
12
13
正确率 4/7

按照这个完整的决策树的正确率是3/7=42.9%

(2)后剪枝将从决策树的底部往上进行剪枝,先看最底部的纹理,将其领衔的分支减掉,即将其换成叶子节点。按照测试集的划分,去掉纹理后树应该变成这样:
西瓜书决策树预剪枝后剪枝过程详解_第7张图片
这时候的正确率为:

编号 真实中是否为好瓜 使用整棵树判断是否为好瓜 剪掉纹理
4
5
8
9
11
12
13
正确率 3/7 4/7

我们可以看出纹理剪掉后,正确率上升,那么纹理从树中被剪掉。

(3)由于将纹理剪掉,是能提升验证精度,那么将纹理从其中剪掉,形成如下的决策树:
西瓜书决策树预剪枝后剪枝过程详解_第8张图片
(4)这个决策树生成后,我们需要进一步剪枝,下一步的剪枝的对象应该是中间的色泽。剪枝了色泽后形成的决策树为:
西瓜书决策树预剪枝后剪枝过程详解_第9张图片
这时我们再次带入验证集,看下决策的结果:

编号 真实中是否为好瓜 剪掉纹理 再减掉中间的色泽
4
5
8
9
11
12
13
正确率 4/7 4/7

我们发现正确率没有提升,但是也没有降低,因此可不进行剪枝,即对于脐部稍凹,根蒂稍蜷部分,可保留按照色泽进一步划分。
(5)我们最后还要对左侧的色泽进行剪枝,剪枝后的决策树为:
西瓜书决策树预剪枝后剪枝过程详解_第10张图片
对验证集进行验证,如下:

编号 真实中是否为好瓜 剪掉纹理 再减掉左边的色泽
4
5
8
9
11
12
13
正确率 4/7 5/7

我们发现正确率提升了,减掉左边的色泽,至此所以的枝都进行了修剪,形成了最终的决策树
(5)最终的决策树如下:
西瓜书决策树预剪枝后剪枝过程详解_第11张图片

总结

预剪枝的优点:降低过拟合风险和显著减少了训练的时间和测试时间。
预剪枝的缺点:带来了欠拟合风险。因为有些分支的当前划分虽然不能提升泛化性能,但在其基础上进行的后续划分却有可能导致性能显著提高。
后剪枝的优点:后剪枝比预剪枝保留了更多的分支,欠拟合风险小,泛化性能往往优于预剪枝决策树。
后剪枝的缺点:后剪枝训练时间开销大,后剪枝过程是在生成完全决策树之后进行的,需要自底向上对所有非叶结点逐一考察

参考文章:
https://blog.csdn.net/zfan520/article/details/82454814
首先参考了这位博主的文章,也有了很大的启发,我的文章也是绝大部分偷师了这位博主的内容,自己做了一些小修改。
https://www.cnblogs.com/lsm-boke/p/12256686.html
这位博主的文章也写的很好,两篇结合彻底看懂了决策树的两个例子。

你可能感兴趣的:(机器学习笔记)