欠拟合时,更多特征会受到伤害?

数据挖掘 决策树 xgboost
2022-01-26 09:55:13

我正在使用 XGBClassifier 训练一个二元分类器(如果我理解正确的话,基本上是提升决策树)。我有 10K 个训练示例。我有两组不同的特征(但它们可能是依赖的),一个包含 26 个特征(称为集合 A),另一个包含 96 个特征(称为集合 B)。我尝试训练 3 个分类器,每个分类器都有不同的特征集组合,即 A、B 和 A+B。结果是只使用 A 显然比同时使用 A 和 B 更好。此时我认为它可能是过度拟合,因此使用较少数量的特征实际上可以避免过度拟合。

上述训练中使用的树数是 100。所以我使用 10 倍交叉验证来找到每个特征集组合的最佳树数,它们都超过了 100(比如 300-500)。所以在我看来,模型学习的自由度低于预期,如果你愿意的话,它们是不合适的。

所以这让我很困惑:当模型处于欠拟合(而不是过拟合)时,为什么提供附加功能会使事情变得更糟(即仅使用 A 比同时使用 A 和 B 更好)?

或者也许是一个更普遍的问题:在这种情况下,我如何找出真正的问题?

注意:我已经阅读过这个关于过拟合/欠拟合的问题,我仍然认为我的模型应该是欠拟合的,因为显然增加模型复杂性有帮助(例如从 100 棵树到 300-500 棵树)。

1个回答

从理论上讲,更多的数据会导致更好的模型。然而,在实践中,更多的特征往往会导致模型训练的困难。

假设您的数据集有 30 个“主要”特征。特征集 A 包含 20 个“主要”特征,因此在某些超参数(在您的情况下为 100 棵树)下,“选择”和“训练”一个“主要”特征可能很容易(26 个中的 20 个)。对于包含所有“主要”特征的特征集 B,很难(96 个中的 30 个)选择一个“主要”特征,而只有 100 棵树时更难(因为有 66 个“次要”特征)相对而言不应该训练的特征)。这就是我们所说的“欠拟合”。

回到你的问题,当模型拟合不足时,如果我们很幸运,在特征集 B 上训练的模型(即模型 B)包含所有这 30 个“主要”特征,那么模型会很好,我们可能无法找出它不合适。但在大多数情况下,我们并没有那么幸运,相对而言,模型可能会被所有 66 个“次要”功能破坏。

在我的 ML 实践中,当更多样本出现时,我会尝试更多的训练迭代,当更多特征出现时,我会尝试更复杂的模型,并控制过拟合/欠拟合。