问题引入

决策树的过拟合的风险很大,因为理论上来说可以将数据完全分的开,如果树足够大,每个叶子节点就剩下了一个数据。那么,这就会造成模型在训练集上的拟合效果很好,但是泛化能力很差,对新样本的适应能力不足。所以,对决策树进行剪枝,可以降低过拟合的风险。那么大家都知道剪枝分为预剪枝和后剪枝,两者有啥差别呢?

问题回答

预剪枝

预剪枝使得决策树的很多分支没有展开,也就是没有一步一步计算然后分裂下去了,这不仅降低了过拟合的风险,还显著减少了树模型的训练时间开销。但是另一方面,有些 分支 的当前划分虽不能提升泛化性能、甚至可能导致泛化性能暂时下降,但是在其基础上进行的后续划分有可能导致性能显著提升(但是我们简单嘛,就不继续划分了)。预剪枝基于贪心本质,抱着能多剪就多剪枝从而招来欠拟合的风险。采用这种方法得到的决策树可能就是如下这种:

知道为啥决策树后剪枝比预剪枝要好?_java

可以看到在这棵树比价简单,泛化性能比较好,也不会过拟合,但是就是太太简单了,会导致预测的时候偏差较大,也是我们说的欠拟合。

后剪枝

在决策树生成后进行剪枝,这也符合我们做事的逻辑和条理。后剪枝决策树通常比预剪枝决策树保留了更多的分支(所以说计算开销还是比较大滴)。一般情况下,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。所以剪枝后的树大概就是你看到的下面的这个样子:

知道为啥决策树后剪枝比预剪枝要好?_java_02



总结

预剪 :构建树的时候就开始剪,分支没有详细展开,模型泛华能力较高,但容易欠拟合,计算开销较小。

后剪 :构建树之后开始剪,分支详细展开,模型泛化能力较好,计算开销较大。


参考

https://blog.csdn.net/weixin_44451032/article/details/100056195
https://blog.csdn.net/weixin_44451032/article/details/100055886
https://www.cnblogs.com/luban/p/9412339.html

https://blog.csdn.net/zfan520/article/details/82454814


扫描二维码

获取更多精彩

百面机器学习

知道为啥决策树后剪枝比预剪枝要好?_java_03