作者:Rachel Thomas
编译:ronghuaiyang
导读
验证集的划分真的就是调用一个train_test_split函数这么简单么,其实并不是。
一个非常常见的场景:一个看起来非常好的机器学习模型在现实的生产环境中使用时是完全失败的。其后果包括老板对现在的机器学习持怀疑态度,不愿再尝试。怎么会这样呢?
导致开发结果与生产结果之间脱节的最可能的原因之一是错误地选择了验证集(甚至更糟,根本没有验证集)。根据数据的性质,选择验证集可能是最重要的一步。虽然sklearn提供了一个train_test_split方法,但该方法只获取数据的一个随机子集,对于许多实际问题来说,这是一个糟糕的选择。
训练集、验证集和测试集的定义可能非常微妙,而且这些术语有时使用不一致。在深度学习社区中,“测试时间推断”通常指的是对生产中的数据进行评估,这不是测试集的技术定义。如前所述,sklearn有个train_test_split方法,但没有train_validation_test_split方法。Kaggle只提供训练和测试集,但是要做得好,你需要将它们的训练集分解为你自己的验证集和训练集。此外,Kaggle的测试集实际上被细分为两个子集。许多初学者可能会感到困惑,这一点也不奇怪!我将在下面讨论这些微妙之处。
首先,什么是“验证集”?
当创建一个机器学习模型时,最终的目标是使它在新数据上是准确的&