我更喜欢什么 - 过度拟合的模型或不太准确的模型?

数据挖掘 机器学习模型 训练 监督学习 准确性 过拟合
2021-10-05 21:15:37

假设我们训练了两个模型。假设我们正在寻找良好的准确性。第一个在训练集上的准确率为 100%,在测试集上的准确率为 84%。明显过拟合。第二个在训练集上的准确率为 83%,在测试集上为 83%。

一方面,模型#1 是过拟合的,但另一方面,它在看不见的测试集上仍然比#2 中的良好通用模型产生更好的性能。

您会选择在生产中使用哪种模型?第一还是第二,为什么?

4个回答

这里有几个细微差别。

  1. 复杂性问题非常重要 - ocams razor
  2. CV - 真的是这种情况吗 84%/83%(用 CV 进行训练+测试)

鉴于此,个人意见:第二个。

更好地捕捉一般模式。你已经知道第一个模型因为训练和测试的差异而失败了。1% 什么也没说。

这主要取决于问题的上下文。如果您只关心预测性能,并且您相信测试集可以代表未来看不见的数据,那么第一个模型会更好。(例如,健康预测可能就是这种情况。)

有很多事情会改变这个决定。

  1. 可解释性/可解释性。这是间接的,但参数模型往往不太适合过度拟合,而且通常也更容易解释或解释。如果您的问题在于受监管的行业,那么使用更简单的模型来回答请求可能会更容易。相关的,高方差模型或非直观的非单调性可能存在一些伦理问题。

  2. 概念漂移。如果您的测试集预计不能代表生产数据(大多数业务用途),那么过度拟合模型可能会更快地受到模型衰减的影响。相反,如果测试数据很差,那么测试分数可能一开始就没有多大意义。

  3. 易于部署。虽然 ML 模型部署选项现在变得更容易和更复杂,但线性模型通常仍然更容易部署和监控。

另请参阅
我们可以使用过度拟合的模型吗?
选择什么:评价分数较高的过拟合模型还是评价分数较低的非过拟合模型?
https://stats.stackexchange.com/q/379589/232706
https://stats.stackexchange.com/q/220807/232706
https://stats.stackexchange.com/q/494496/232706
https://innovation .enova.com/从传统到高级机器学习算法/

(最后一点:第一个模型很可能适合某种正则化,这将牺牲训练准确性以换取更简单的模型,并希望获得更好的测试准确性。)

第一个在训练集上的准确率为 100%,在测试集上的准确率为 84%。明显过拟合。

也许不会。确实,100% 的训练准确率通常是过度拟合的一个强有力的指标,但同样正确的是,过度拟合模型在测试集上的表现应该比没有过度拟合的模型更差。因此,如果您看到这些数字,则表明正在发生一些不寻常的事情。

如果模型 #1 和模型 #2 在相同的时间内使用相同的方法,那么我会不太信任模型 #1。(如果测试误差的差异只有 1%,那么在任何情况下都不值得冒险;1% 是噪声。)但是不同的方法在过度拟合方面具有不同的特征。例如,在使用 AdaBoost 时,经常观察到测试误差不仅没有增加,而且实际上在训练误差变为 0 后仍在继续减少(可以在Schapire 等人 1997中找到对此的解释)。因此,如果模型 #1 使用 boosting,我就不太担心过度拟合,而如果它使用线性回归,我会非常担心。

实践中的解决方案是不要仅根据这些数字做出决定。相反,重新训练不同的训练/测试分组,看看你是否得到类似的结果(时间允许)。如果您在几个不同的训练/测试拆分中始终看到大约 100%/83% 的训练/测试准确度,那么您可能可以信任该模型。如果你一次得到 100%/83%,下一次得到 100%/52%,第三次得到 100%/90%,你显然不应该相信模型的泛化能力。你也可以继续训练几个 epoch,看看测试错误会发生什么。如果它是过拟合的,测试误差可能(但不一定)会继续增加。

显然,答案是非常主观的。就我而言,显然是第二个。为什么?没有什么比看到客户在生产中运行模型但表现不如预期更糟糕的了。我曾经有一位技术 CEO,他想获得一份报告,说明在给定的月份内离开了多少客户以及客户流失预测模型。这不好玩:-(。从那以后,我强烈支持高偏差/低方差模型。