我正在尝试使用机器学习来估算系列缺失的数据。
我一直在用 python 测试一些自动 ML 库来试验这个项目(到目前为止:dabl、FLAML、auto-sklearn和AutoKeras)。
我知道以“经典”方式检测过度拟合的方法:那就是在调整模型的同时绘制测试/训练指标。但是在我的情况下,我想到了我不能使用它的两个原因:
- 首先,出于物理考虑,我希望调整多个模型(至少一千个);
- 其次,自动机器学习库返回“即用型”模型(有或没有某种日志);所有指标评估都是在后台完成的。
然后我选择拆分我的数据集并比较训练/测试样本上的分数(r2 + rmse)并在以下情况下拒绝模型:
- 均方根误差 (test+train) 优于 serie 的标准差;
- r2_train < .7;
- r2_test / r2_train < .8。
注意:第一个测试是我在自动化背景下唯一能想到的测试(即将 rmse 与以与污染物相同单位表示的一个测量值相匹配)。也许有更好的行动方案,在这种情况下,我愿意接受建议。
话虽如此,这些准则并没有阻止我的算法呈现那种结果(我为法语的图例和轴标题道歉......:Y轴上是预测,X轴上是真实值; 图例中的“entraînement”对应于训练集):
如您所见,该模型不是一个好的模型。我什至不确定这是否属于通常的过拟合问题,但该模型显然已经过训练以记住两个值(大约 5.7pH 和 7.4pH)。 (我可以完全理解为什么在查看原始数据集后会出现这些结果:不止一个 autoML 库导致了这些异常......但这不是重点)。
有没有办法在自动化过程中丢弃这些模型?我可以很容易地增加用于 r2 和 rmse 的阈值来丢弃这个模型;但我不相信它会允许每个这样的模型被丢弃......