在 SKLearn 关于决策树的文档中,他们说我们应该特别注意不要过度拟合树。我们应该怎么做?我知道使用随机森林可能会阻止它,但我通常如何判断它是否过度拟合?你能通过准确度分数来判断吗?
例如,0.99 的准确度分数是过度拟合的指标吗?在这种情况下,0.95 是否意味着不过度拟合?除了平衡输入以避免过度拟合(尤其是使用 SKLearn)之外,还有哪些最佳实践?
在 SKLearn 关于决策树的文档中,他们说我们应该特别注意不要过度拟合树。我们应该怎么做?我知道使用随机森林可能会阻止它,但我通常如何判断它是否过度拟合?你能通过准确度分数来判断吗?
例如,0.99 的准确度分数是过度拟合的指标吗?在这种情况下,0.95 是否意味着不过度拟合?除了平衡输入以避免过度拟合(尤其是使用 SKLearn)之外,还有哪些最佳实践?
过度拟合意味着您的模型正在从数据中学习噪声,并且其概括结果的能力非常低。在这种情况下,您的训练误差很小,但验证误差很大。如果您检查(例如,通过绘制)训练和验证错误的演变,您会看到训练错误总是在下降,但验证错误在某些时候会上升。这就是你需要停止训练以避免过度拟合的地方。我强烈建议您阅读此内容。
所以,你提到的 0.98 和 0.95 的准确度可能是过拟合的,不能!关键是您还需要检查它们旁边的验证准确性。如果验证准确度下降,那么您就处于过度拟合区域!
除了平衡输入之外,还有哪些避免过度拟合的最佳实践?
它被称为修剪。除了避免过度拟合的一般 ML 策略之外,对于决策树,您可以遵循此处(更理论上)和(更实际地)在此处描述的修剪思想。在 SciKit-Learn 中,您需要处理诸如树的深度或最大叶子数之类的参数。
你能通过准确度分数来判断吗?
衡量过拟合或欠拟合的一般概念是通过验证曲线。
我们应该怎么做?
不仅仅是决策树,(几乎)每个 ML 算法都容易过拟合。需要特别注意 sklearn(或任何 ML 库)中算法的参数,以了解它们中的每一个如何导致过度拟合,例如在决策树的情况下,它可能是深度、叶子的数量等。
我知道使用随机森林可能会阻止它
只是一个提示,集成的概念有助于更好地泛化模型(这有助于控制过度拟合)。