机器学习要点:为什么要训练、验证和测试数据?

有没有想过为什么我们将数据分割成train-validation-test?

这张表概括了这一切

机器学习要点:为什么要训练、验证和测试数据?

这就是架构的样子

机器学习要点:为什么要训练、验证和测试数据?

重点:

  1. 验证数据是迭代循环的一部分。我们经常从验证错误中获取洞察力来调整我们的机器学习模型。因此,我们隐含地将验证数据中的信息泄露给我们的机器学习模型。
  2. 高级验证方法模糊了单一拆分验证数据的重要性。K-fold交叉验证非常强大,可能是当前模型性能验证和参数调整的行业标准。因此,如果您在分析中使用交叉验证技术,则可以忽略验证数据拆分。
  3. 测试数据的主要目的是给出机器学习模型精度的无偏差估计。它应该在最后使用,并且只能使用几次。如果在查看测试精度后调整模型,则技术上会泄漏信息并因此作弊。
  4. 出于与上述相同的原因(信息泄漏),尽管编程方便,但我们不应将训练、验证和测试数据集结合起来以形成共同的预处理流程。有些人可能会争辩说,根据基本假设,训练 - 验证 - 测试数据来自相同的种群分布,因此将它们组合成共同的预处理流程应该没有任何害处。这在理想情景中是正确的,但实际生活远非如此,因为您永远不知道您的实时生产系统何时开始获得不断发展的数据(其分布与训练数据略有不同)。作为一名优秀的数据科学家,您应该努力创建一个可推广且表现良好的模型流程(无需任何其他更改)无论未来数据的不确定性如何。
  5. 我们假设开发了两个独立的预处理管道。(A)用于训练数据,(B)用于验证和测试数据。但是应该注意,这些管道并不是完全独立的。您可以从训练数据中学习转换特征(平均值/range/标准偏差),并使用它来转换验证和测试数据。
  6. 最后,永远不要在验证或测试数据上训练机器学习模型。当编写项目代码时,确保验证和测试dataframe远离model.fit()函数。

希望这篇文章可以帮助您避免机器学习中的一些陷阱。

相关推荐