机器学习要点:为什么要训练、验证和测试数据?
有没有想过为什么我们将数据分割成train-validation-test?
这张表概括了这一切
这就是架构的样子
重点:
- 验证数据是迭代循环的一部分。我们经常从验证错误中获取洞察力来调整我们的机器学习模型。因此,我们隐含地将验证数据中的信息泄露给我们的机器学习模型。
- 高级验证方法模糊了单一拆分验证数据的重要性。K-fold交叉验证非常强大,可能是当前模型性能验证和参数调整的行业标准。因此,如果您在分析中使用交叉验证技术,则可以忽略验证数据拆分。
- 测试数据的主要目的是给出机器学习模型精度的无偏差估计。它应该在最后使用,并且只能使用几次。如果在查看测试精度后调整模型,则技术上会泄漏信息并因此作弊。
- 出于与上述相同的原因(信息泄漏),尽管编程方便,但我们不应将训练、验证和测试数据集结合起来以形成共同的预处理流程。有些人可能会争辩说,根据基本假设,训练 - 验证 - 测试数据来自相同的种群分布,因此将它们组合成共同的预处理流程应该没有任何害处。这在理想情景中是正确的,但实际生活远非如此,因为您永远不知道您的实时生产系统何时开始获得不断发展的数据(其分布与训练数据略有不同)。作为一名优秀的数据科学家,您应该努力创建一个可推广且表现良好的模型流程(无需任何其他更改)无论未来数据的不确定性如何。
- 我们假设开发了两个独立的预处理管道。(A)用于训练数据,(B)用于验证和测试数据。但是应该注意,这些管道并不是完全独立的。您可以从训练数据中学习转换特征(平均值/range/标准偏差),并使用它来转换验证和测试数据。
- 最后,永远不要在验证或测试数据上训练机器学习模型。当编写项目代码时,确保验证和测试dataframe远离model.fit()函数。
希望这篇文章可以帮助您避免机器学习中的一些陷阱。
相关推荐
lizhengjava 2020-11-13
luyong0 2020-11-08
gyunwh 2020-11-02
EchoYY 2020-10-31
dingyahui 2020-10-30
Micusd 2020-11-19
人工智能 2020-11-19
81510295 2020-11-17
jaybeat 2020-11-17
flyfor0 2020-11-16
lgblove 2020-11-16
Pokemogo 2020-11-16
Pokemogo 2020-11-16
clong 2020-11-13
ohbxiaoxin 2020-11-13
Icevivian 2020-11-13
EchoYY 2020-11-12
CSDN人工智能头条 2020-11-11
mogigo00 2020-11-11