首页 > 解决方案 > 决策树过拟合检验

问题描述

我目前正在处理容易过拟合的数据,所以当我在 sklearn 上读到 max_depth 通常是树过拟合的原因时,我通过测试每个深度的 roc_auc 分数来实现功能。但我不确定我的想法是否正确,这里有我的结果图片:

我的 roc_auc 与深度图

xgb 和 rfc 图

我也尝试使用后修剪方法,但我的图表看起来与我在互联网上找到的其他图表完全不同,所以我不确定它给了我什么

在此处输入图像描述

标签: pythonclassificationdata-sciencedecision-tree

解决方案


您正在寻找的术语是cross-validation。基本思想很简单:将数据集拆分为训练和验证(或测试)集。然后在训练集上训练一个模型并在验证集上对其进行测试。如果您的模型过度拟合,它将在训练集上表现良好,但在验证集上表现不佳。在这种情况下,最好降低模型复杂性或添加所谓的正则化(例如树修剪)。也许,在 SciKit Learn 中执行交叉验证的最简单方法是使用此处cross_val_score描述的函数。

注意 1:在某些情况下(例如在神经网络中),既有验证集,也有测试集(除了训练集)。我不会在这里详细介绍,但不要在不同的上下文中与这些术语混淆。

注意 2:交叉验证是如此标准的东西,它甚至给另一个 StackExchange 站点命名 - Cross Validated,在那里您可以获得更多关于统计的答案。另一个可能更合适的站点有一个不言自明的名称——数据科学


推荐阅读