XGBoost - 过度拟合控制
XGBoost 能够处理大型数据集并构建高度准确的模型,这使其非常强大。与任何其他机器学习模型一样,XGBoost 也容易出现过度拟合。
由于过度拟合的模型从训练集中收集了太多信息,这些信息可能包含噪声和不重要的模式,因此它在新的、未见过的数据上表现不佳。在本章中,我们将介绍 XGBoost 中过度拟合的管理。
什么是过度拟合?
在讨论 XGBoost 和其他梯度提升模型中过度拟合是如何发生的之前,让我们先解释一下什么是过度拟合。当机器学习模型过于关注特定于训练数据的细节时,就会发生过度拟合。模型不学习适用于其他数据的一般模式,而是只关注训练数据中的特殊模式。这使得它在尝试对新数据进行预测时不那么有用。
为什么过度拟合是一个问题?
过度拟合是一个问题,因为它限制了模型在新数据中良好运行的能力。如果模型过于关注特定于训练集的模式,它将无法找到适用于其他数据的模式。这意味着该模型在用于新数据或不同数据时不会产生良好的结果。
这是一个问题,因为大多数机器学习模型都是专门为识别可应用于广泛人群的广泛模式而设计的。当应用于未观察到的数据时,与训练数据集过度拟合的模型将无法生成准确的预测。
如何使用 XGBoost 检测过度拟合
好消息是,机器学习模型的过度拟合很容易识别。您所要做的就是确定您的机器学习模型是否过度拟合,是否对训练期间未遇到的数据集进行预测。
如果您的模型在对未知数据集进行预测时表现良好,则它可能不会过度拟合训练集。如果您的模型对未知数据的预测比对训练数据的预测差得多,则您的模型很可能过度拟合了训练数据。
XGBoost 是否存在过度拟合的问题?
在大多数情况下,XGBoost 模型会过度拟合训练数据集。在开发具有多个深树的复杂模型或在有限的训练数据集上训练 XGBoost 模型时,这种情况尤为常见。
与其他基于树的模型(如随机森林模型)相比,XGBoost 模型更容易过度拟合它们所训练的数据集。总体而言,随机森林模型对训练期间使用的超参数的选择比 XGBoost 和梯度提升树模型不太敏感。这意味着,为了评估具有各种超参数设置的模型的性能,进行超参数优化并使用交叉验证或验证数据集非常重要。
如何使用 XGBoost 避免过度拟合
在创建 XGBoost 或梯度提升树模型时,您可以遵循以下一些准则来防止过度拟合。
1. 使用更少的树
处理 XGBoost 模型中过度拟合的一种方法是减少模型中的树数量。大型多参数模型通常比简单的小型模型更容易过度拟合。您可以通过减少模型中的树数量来简化模型并降低过度拟合的概率。
2.使用浅树
简化 XGBoost 模型并防止其过度拟合的另一种方法是限制模型仅使用浅树。因此,每棵树经历的分裂次数更少,从而降低了模型的复杂性。
3. 使用较低的学习率
降低学习率也会让您的 XGBoost 模型不易过度拟合。这将作为一种正则化技术,防止您的模型专注于无意义的细节。
4. 减少特征数量
简化机器学习模型的另一种出色技术是限制其可以使用的特征。这是阻止 XGboost 模型过度拟合的另一种有用方法。
5. 使用大型训练数据集
训练数据集的大小是一个重要因素,可能会影响您的模型过度拟合的可能性。使用更大的数据集将降低模型过度拟合的概率。如果您发现 XGBoost 模型过度拟合,并且您可以获得更多训练数据,请尝试增加用于训练模型的数据量。
控制 XGBoost 中过度拟合的技术
为了防止 XGBoost 中的过度拟合,我们可以使用几种方法。让我们在这里看看每一个 −
正则化:正则化是防止模型变得过于复杂的一种方法。由于复杂性受到惩罚,模型发现存储数据更加困难。
提前停止:如果在预定义的循环次数之后,模型在验证集上的性能没有改善,您可以使用称为"提前停止"的技术停止训练过程。这可以防止模型长时间训练并过度拟合训练集。
限制树的深度:如前所述,非常深的树会捕获太多细节,这可能导致过度拟合。可以限制树的深度以防止模型过于复杂。
学习率 (Eta):模型的学习率决定了它学习的速度。学习率越高,学习速度越快,但模型突然改变其非普遍分布的学习模式的能力可能会导致过度拟合。