看到测试数据的结果后更改模型是否有效?

机器算法验证 机器学习 假设检验 模型评估
2022-02-28 05:27:09

我看过这个问题,它说使用测试数据来调整超参数不是一个好的决定,并且会阻止你推广模型。

我的问题与上面的问题不同,我知道观察测试数据并不是一件好事。

问题:在用旧模型评估后更改模型并获得更好的结果是否是有效的工作?为什么?

例如,您开发了线性模型,但在使用测试数据对其进行评估后,将其更改为二阶多项式并报告结果(比线性更好)。

4个回答

如果你这样做,那么你的“测试”数据不再完全是测试数据——它现在是部分训练数据。事实上,这两类之间的全部区别在于训练数据用于制定假设和模型,然后使用测试数据对模型下的这些假设进行推断。出于这个原因,在训练阶段注意制定一个足够通用的模型是一个好主意,请注意,您可能希望包含允许比训练数据中显示的更通用功能形式的高阶效应。

无论如何,如果您使用“测试”数据来调整模型,但仍将其视为测试数据,那么您实际上是两次使用数据,首先是训练数据,然后是测试数据。这里的危险是模型选择可能与感兴趣的假设有关,在这种情况下,这种方法会在您的分析中引起确认偏差,即测试偏向于接受假设。如果您的建模更改与感兴趣的假设无关,那么您可能会在不施加偏见的情况下侥幸成功(或者至少不会施加太多偏见),但很难确定。如果您决定这样做,我建议您至少进行一次敏感性分析,将您首选模型的结论与原始模型的结论进行比较。这样,您可以检查模型中的更改是否影响了与感兴趣的假设相关的任何结论(或者它是否在其他方面更适合)。

解决问题的一种方法是在整个集合中使用交叉验证,而不是正常的测试训练拆分。ESL 的第 7 章解释了其工作原理的理论细节直观地说,测试列车拆分只是 1 折交叉验证,因此,在样本量允许的情况下,您可以尝试使用 k 折交叉验证。

通道。ESL 的第 7 章还提到了其他可能性,例如使用信息标准(AIC、BIC 等)或结构风险最小化作为样本外模型性能的代理。

不过,您的帖子中隐含了一个更有趣的“全局”问题。如果您打算将您的模型用于解决现实世界的问题,那么您的生产数据分布很可能最终会漂移,相应地重新估计您的模型的挑战是ML Ops的更广泛主题的一部分,其中如果您有兴趣将 DS 和 ML 应用于现实世界的用例,我绝对建议您看看。

你描述的过程不合适。通过两次使用测试集,您允许该数据影响您的模型选择。因此,该数据成为您建模过程的一部分,而不是作为外部验证的手段。

如果这样做,您在训练过程中添加了“附加信息”,这会在最终模型中引发过度参数化问题。
假设您正在为您的任务执行监督学习技术,从经验风险最小化的角度来看,我们尝试寻找一个函数h最小化预测之间的损失y^和真实的结果y,换句话说,我们寻找一个最能代表地图的函数XY. 我们需要更多数据来更好地逼近我们的模型的原因是 CLT 保证n,风险将收敛到0,这为我们需要更多的例子来训练我们的模型在监督学习问题中的原因奠定了理论基础。
回到你的例子,如果多项式函数比线性模型更适合怎么办?我假设这种差异来自两种可能的情况:
1 类分布是不平衡的。
2 训练数据不能代表整个数据集。
为了处理这些问题,您显然可以尝试交叉验证程序,以便全面了解整个数据分布。此外,过采样或欠采样方法是处理类不平衡问题的替代方法。但是测试数据应该只在模型已经训练好的时候使用,否则,它应该独立于任何预先的步骤。希望这个答案有帮助。