我有一个包含 3961 个不同行和 32 个列的训练数据,我想适应随机森林和梯度提升模型。在训练时,我需要微调模型的超参数以获得最佳的 AUC。为此,我使用 Scipy 中描述的 Basin-Hopping 算法将数量 1-AUC(Y_real,Y_pred) 最小化;所以我的训练和内部验证子样本是一样的。
优化完成后,随机森林的 AUC=0.994,而梯度提升的 AUC=1。我是否过度拟合这些模型?我怎么知道训练期间何时发生了过度拟合?
我有一个包含 3961 个不同行和 32 个列的训练数据,我想适应随机森林和梯度提升模型。在训练时,我需要微调模型的超参数以获得最佳的 AUC。为此,我使用 Scipy 中描述的 Basin-Hopping 算法将数量 1-AUC(Y_real,Y_pred) 最小化;所以我的训练和内部验证子样本是一样的。
优化完成后,随机森林的 AUC=0.994,而梯度提升的 AUC=1。我是否过度拟合这些模型?我怎么知道训练期间何时发生了过度拟合?
要知道您是否过度拟合,您必须计算:
一旦你计算了这个分数,比较一下。如果训练集分数比你的测试集分数好得多,那么你就过拟合了。这意味着您的模型正在“记忆”您的数据,而不是从中学习以做出未来的预测。
要知道你是否过拟合,你总是需要做这个过程。但是,如果您的训练准确度或分数太完美(例如准确度为 100%),您会感觉到自己也过拟合了。
因此,如果您没有训练和测试数据,则必须使用sklearn.model_selection.train_test_split
. 然后,您将能够比较两者的准确性。否则,您将无法自信地知道您是否过度拟合。