剪枝作为决策树后期处理的重要步骤,是必不可少的。没有剪枝,就是一个完全生长的决策树,是过拟合的,需要去掉一些不必要的节点以使得决策树模型更具有泛化能力。
决策树
决策树就是对一棵形似于树的判决模型,树的节点是某个属性,及分裂点,树的叶是类型。
在生长过程中,可以有很多种不同的生成准则,具体就不在详述了。不清楚的同学参考之前的博客:http://blog.csdn.net/yujianmin1990/article/details/47406037
今天主要讲的是决策树的剪枝策略。
决策树剪枝
为什么剪枝?
我们生成的好好的决策树,为什么要对其进行剪枝呢?因为我们在生成树的过程中,如果没有剪枝的操作的话,就会长成每一个叶都是单独的一类的样子。这样对我们的训练集是完全拟合的,但是对测试集则是非常不友好的,泛化能力不行。因此,我们要减掉一些枝叶,使得模型泛化能力更强。
根据剪枝所出现的时间点不同,分为预剪枝和后剪枝。预剪枝是在决策树的生成过程中进行的;后剪枝是在决策树生成之后进行的。
剪枝策略
剪枝之后,对该节点的类别判别是用“大多数原则“,选择当前数据集下的最多的类标签为该节点的类别。
1)Reduced Error Pruning:误差降低剪枝
最简单粗暴的一种后剪枝方法,其目的减少误差样本数量。
f(T)=−∑t∈Te(t)
其中 e(t) 表示在节点 t 下的样本的误判个数;
f(T′)=−∑t∈T′e(t)
其中 T′ 表示去掉某个节点 N 之后的树的节点;
剪枝的条件: f(T)⩽f(T′) ,即 e(tK′)⩽e(tK)
剪枝之后使得误差降低。
1)Pessimistic Error Pruning:悲观错误剪枝
该方法基于训练数据的误差评估,因此不用单独找剪枝数据集。但训练数据也带来错分误差偏向于训练集,因此需要加入修正1/2。是自上而下的修剪。
具有 T 个节点的树的误差率衡量为:
去掉节点 K 之后
E(T′)=∑t∈T,excepKe(t)+1/2N(t)
e(t) 表示节点 t