Skip to content

决策树总是会过拟合(overfitting)!

Decision Trees ALWAYS Overfit!

除了上述检查之外,使用决策树时还有一件事需要小心,那就是过拟合。问题在于,默认情况下,决策树(例如在 sklearn 的实现中)会被允许一直生长,直到所有叶节点都纯净。这是因为标准决策树算法在每个节点上贪婪地选择最佳分裂。

ds p272 1

这使它的节点随着我们沿树向下遍历变得越来越纯净。由于模型正确分类了所有训练实例,它会导致 100% 的过拟合以及糟糕的泛化。例如,考虑这个虚拟数据集:

ds p272 2

在这个数据集上拟合决策树,得到如下的决策区域图:

ds p273 1

从决策区域图以及训练和测试准确率可以很清楚地看出,模型已经完全过拟合了我们的数据集。代价复杂度剪枝(CCP)是防止这种情况的有效技术。

CCP 在剪枝决策树时综合考虑两个因素:

  • 代价(C):误分类数量
  • 复杂度(C):节点数量

核心思想是迭代地删除那些在移除后导致分类代价增加最小、同时复杂度(或节点数)减少最大的子树。换言之,如果两棵子树导致分类代价的增加相近,那么删除节点更多的那棵子树是明智的。

ds p273 2

在 sklearn 中,你可以使用 ccp_alpha 参数来控制代价复杂度剪枝:

  • ccp_alpha 值较大 → 导致欠拟合
  • ccp_alpha 值较小 → 导致过拟合

目标是确定 ccp_alpha 的最优值,从而得到更好的模型。代价复杂度剪枝的效果从下图中可见一斑:

ds p274 1

如上所示,CCP 得到了一个更简单、更可接受的决策区域图。

本站内容仅供学习交流,版权归原作者所有。