当我在 model.fit_generator 中包含validation_data=(x_val, y_val) 时,我应该为准确性测量创建另一个测试数据集吗?

数据挖掘 预测建模 范围
2022-02-18 02:28:57

在 keras 中建模时,我经常看到validation_data=(x_val, y_val)model.fit_generator中的用法,它(x_val, y_val)通常占数据集的 10%。在训练时,模型是否从计算的验证损失中获取提示(x_val, y_val),我需要创建另一个 test_data 来测量最终的准确性?或者,我可以在最后(x_val, y_val)的输入model.fit_generator和测量精度中使用相同的。

混淆源于这样一个事实,即我们经常被建议在建模时创建训练、验证、测试数据集。验证数据集是否已经用于判断何时停止(提前停止)等参数;使用 validation_data 来计算各种准确度度量不是不公平吗?

1个回答

你说这不公平是正确的 - 如果可以避免,你不应该这样做。

为了真正能够声称(在统计意义上)模型达到了例如 90% 的准确度,必须对看不见的数据执行测试。那就是应该使用您的测试数据的地方。

训练神经网络需要验证数据(正如您提到的,在fit_generatorKeras 模型的方法中),以便计算错误并将权重引导到正确的方向。您报告的最终准确性需要基于训练管道从未暴露过的数据。

建议尽可能创建训练/验证/测试拆分;然而,由于缺乏数据和不平衡的数据集等原因,它有时可能是一个挑战您可以尝试诸如交叉验证之类的事情 - 这是一个使用 Keras 的示例在类似的问题中,她是另一个例子。