训练集,验证集,测试集
训练集用于训练模型参数
验证集用于调整超参数(学习率or批量大小),判断模型欠拟合或者过拟合,以便终止训练,也不能跟训练集混一起
测试集是用于表示模型泛化误差(这是我们最关心的), 因此测试集一旦选定就不会参与任何训练过程(绝对不能参与)
总结:
训练集 | 验证集 | 测试集 | |
使用频率 | 大量 | 少量 | 一次 |
作用 | 更新参数 | 判断模型状态,更改超参数 | 表示泛化能力 |
模型初始化参数后,即可以开始训练优化过程。
k折交叉验证
先将数据集分成训练集和测试集,测试集丢一边
模型初始化
将训练集分成k折(15折)
第1次,将第1折作为验证集,其余作为训练集,训练后,得到模型1,训练误差1,测试误差1
第i次,将第i折作为验证集,其余作为训练集,训练后,得到模型i,训练误差i,测试误差i
第二个epoch,已上述模型为初始模型
重复epoch_num次
根据训练误差,测试误差,从15个模型中选择最优模型
一般流程
训练集和验证集:表示模型的性能
测试集:一般明确有预测任务的时候使用
模型过拟合,欠拟合
对训练误差和测试误差的gap进行分析:
一般情况训练误差总是小于测试误差,出现特殊情况可能是因为训练数据和测试数据分布不相同
gap会随着训练次数的增加而增大,具体表现为模型对训练数据表现越来越好,因此在测试数据(验证集)的表现也会好,但是程度不会超过训练数据
gap最大时得到最优模型,但由于判断需要,我们通常会选取稍微过拟合的模型