1.背景
最近刚接了一个电池瑕疵检测的任务。标注完数据开始训练,训练到一半的时候,发现一个问题:现场拍摄的电池照片是先拍摄一张后,在翻转一下再次拍摄。这就需要分测试集、训练集的时候不能使用随机的方式来。因为此原因,学习一下常规的思考思路是怎么样的,避免再次犯同样的错误。
2. 学习材料
[How (and why) to create a good validation set(2017.11.03)][1]
3.内容
验证集、测试集的目的:
- 验证集valid为了帮助选择模型和超参数。
- 测试集test为了说明训练的模型的表现效果如何。
- 他俩都是验证模型在没见过的数据上的泛化能力,不是为了拟合现有数据。
随机选择不能符合数据设定的情况
- 时序数据,时序数据应该是选择连续时间片段作为切分依据;随机选择时间点数据就不具有代表性。
- 新内容载体,比如检测驾驶员是否违规打电话,那训练集验证集切分时,不能将同一个人分到两边去,即以人为切分数据集的依据。那验证集可能就选择了拟合这些违规的人更好的模型了。
- 交叉验证,sklearn切分数据的方法,默认是更方便使用交叉验证,最后选择在整个数据集上平均表现好的作为最后的模型。那当数据集存在不独立分布,具有某种模式的结构化时,就不能这么干了。