NGBoost 和过拟合 - 使用哪种模型?

数据挖掘 过拟合 早停 ngboost
2022-02-27 04:48:32

在训练 NGBoost 模型时,我得到了:

[iter 0] loss=-2.2911 val_loss=-2.3309 scale=2.0000 norm=1.0976

[iter 100] loss=-3.3288 val_loss=-2.8532 scale=2.0000 norm=0.7841

[iter 200] loss=-4.0889 val_loss=-1.5779 scale=2.0000 norm=0.7544

[iter 300] loss=-4.8400 val_loss=8.8107 scale=2.0000 norm=0.6710

[iter 400] loss=-5.4463 val_loss=51.7171 scale=2.0000 norm=0.5999

看起来在迭代 100 和 200 之间发生了过拟合。最好的(val_loss 明智的)模型是否保存了,或者我是否得到了最后一个报告的模型(有大量的过拟合,训练损失为 -5.4463,验证损失为 51.7171)?

如果我真的得到了过度拟合的模型,我该如何根据验证分数引入提前停止(或模型保存)?

1个回答

不,如果你不特别要求,恐怕你不会得到最好的模型。但是不要绝望 - 只需将 fit 参数设置early_stopping_rounds为一个数字 - 在验证损失变得更糟的这个轮数之后它将停止。

应该通过实验设置最适合您的轮数(即,只需调整拟合直到获得最佳结果,但不要忘记超参数过度拟合......)

PS。代码中的注释声称此轮数是连续的,但是从代码中看,每次验证损失改善时计数似乎都不会重置(计数器 val_loss_list 未重置)。

您可以手动更改此编辑ngboost.py