首先,我们来思考一个问题:决策树为什么要进行剪枝呢?试想一下,如果决策树足够庞大,无限分裂下去,直到每个叶子节点的熵值都为 0 。
![](https://img.haomeiwen.com/i15629873/2b1535d407424859.png)
这个时候,分类结果没有不确定性,100%准确。这样的决策树最终的结果就是训练集表现非常完美,测试集表现非常糟糕。因此,我们说决策树过拟合的风险很大,理论上可以完全分得开数据。
过拟合:训练集表现接近完美,测试集则表现很差。想象一下,训练模型时,我们是带着标签(正确答案)进行的,就好像我们平时做练习册,边做边对答案,或者干脆看着答案做,做得非常好,但一到考试就掉链子。这就是过拟合,死读书,没有掌握问题的一般规律和方法,过度依赖答案。
决策树的剪枝策略包括预剪枝和后剪枝。
预剪枝
预剪枝是指边建立决策树边进行剪枝的操作,也是我们实际决策树训练时更常用的方法,更实用。
常见的预剪枝策略有:限制深度、叶子节点个数、叶子节点样本数、信息增益量等。下面,小鱼拿下面的决策树举例,为大家分别做个简单的解释。
![](https://img.haomeiwen.com/i15629873/33a72d91217aacfb.png)
限制深度
通过限制深度可以阻止决策树继续向下无限的分裂。比如,上图中,我们限制决策树深度为 3 ,则到达第三层时就全部是叶子节点而不会继续向下分裂了。
叶子节点个数
通过限制决策树最多只能包含多少个叶子节点来限制无限分裂。比如,上图中,我们限制叶子节点个数最多为 4 个,则达到 4 个叶子节点之后,就要停止分裂了。
叶子节点样本数
限制每个叶子节点至少包含多少个样本个数,因为决策树理论上可以分裂到每个叶子节点只有一个样本的野蛮状态。比如,上图中我们可以通过限制每个叶子节点至少包含 1095 个样本,那最右侧的叶子节点就不能继续向下分裂了,到此为止。
信息增益量
通过信息增益量预剪枝具体指某个叶子节点分裂前,其信息增益为 G1,继续分裂后,信息增益变为了 G2,如果 G1 - G2 的值非常小,那就该节点就没必要继续分裂了。
后剪枝
当建立完决策树之后,再来进行剪枝操作。后剪枝策略实际使用的非常少,我们了解即可。
厚剪枝的实现依赖于如下的衡量标准:
![](https://img.haomeiwen.com/i15629873/e475135f3bf05fd3.png)
上述公式,等式左侧代表最终损失,我们希望决策树最终损失越小越好。等式右侧分别为当前结点的熵或 Gini 系数,参数 α 由用户指定,Tleaf
当前结点分裂后,产生的叶子节点个数。叶子节点越多,损失越大。
注:
α
越大代表我们越不希望模型过拟合;反之α
越小,则表示我们更希望在训练集追求好的结果,过不过拟合不是很在意。
下面,小鱼以如下的决策树为例,说明后剪枝策略中的损失函数如何计算。
![](https://img.haomeiwen.com/i15629873/0c2b06a3bd6c5b40.png)
图中,红色节点在分列前的损失为:0.4444 * 6 + α
;分裂后的损失需要计算左子树(蓝色)和右子树(绿色)的 gini 系数之和:0*3 + 0.4444*3 + α*2
。
以上就是决策树剪枝策略的所有内容啦~其中,前剪枝策略是需要我们重点掌握的。
网友评论