【问题标题】:How to know when an overfitting is taking place?如何知道何时发生过拟合?
【发布时间】:2021-04-24 02:26:49
【问题描述】:

我有一个包含 3961 行和 32 列的训练数据,我想将其拟合到随机森林和梯度提升模型中。在训练时,我需要微调模型的超参数以获得最佳的 AUC。为此,我使用 Scipy 中描述的 Basin-Hopping 算法将数量 1-AUC(Y_real,Y_pred) 最小化;所以我的训练和内部验证子样本是一样的。

优化完成后,随机森林的 AUC=0.994,而梯度提升的 AUC=1。我是否过度拟合这些模型?我怎么知道训练过程中何时发生过拟合?

【问题讨论】:

  • 这是用于您的测试或训练数据集吗?
  • 您是否检查过测试/验证准确度并将其与训练准确度进行比较?过度拟合意味着您的模型不能推广到看不见的数据。检查模型是否过拟合的唯一方法是训练模型并在未见过的数据上比较其结果。
  • 我用数据训练模型并用相同的训练数据计算 AUC。然后我通过最小化差异 1-AUC 来优化超参数,其中 AUC 是使用相同的训练数据和训练数据上的预测值计算得出的。

标签: python scikit-learn overfitting-underfitting


【解决方案1】:

要知道你是否过度拟合,你必须计算:

  • 训练集准确度(或在您的情况下为 1-AUC)
  • 测试集准确度(或在您的情况下为 1-AUC)(如果有,您可以使用验证数据集)

计算完这些分数后,进行比较。 如果训练集分数比您的测试集分数好得多,那么您就过拟合了。这意味着您的模型正在“记忆”您的数据,而不是从中学习以做出未来的预测。

要知道你是否过拟合,你总是需要做这个过程。但是,如果您的训练准确度或分数过于完美(例如准确度为 100%),您会感觉到自己也过拟合了。

因此,如果您没有训练和测试数据,则必须使用 sklearn.model_selection.train_test_split 创建它。然后,您将能够比较两者的准确性。否则,您将无法自信地知道您是否过度拟合。

【讨论】:

    猜你喜欢
    • 2019-01-31
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多