训练集,验证集,测试集,泛化误差总结

能不能只要训练集,不要测试集?

模型参数包含两类:模型参数,超参数;我们的任务是通过调整超参数使得模型参数更好的拟合数据
如果不需要调整模型的超参数,那可以不用验证集;
验证集的作用是模拟测试集,我们是在验证集上调参的,如果超参适合验证集,那大概率也适合测试集;如果在训练集上调参,调出的参数是适合训练集的,训练集上的好性能泛化不到测试集(overfitting);验证集和测试集对于模型来说都是未知的;
任何来自测试集的反馈都属于作弊;
举个形象的例子:训练集可以比作例题,测试集可以比作模拟题,可以刷很多遍,测试集可以比作期末考试,只能做一遍;

训练集,验证集,测试集的区别

训练集:参与训练,模型通过拟合训练数据,调整模型参数
训练误差:训练集上预测值和真实值之间的差异,然后通过最小化loss functional来减小训练误差,最后得到一组最佳参数
验证集:不参与训练,调整超参数;判断是否发生过拟合,停止训练(训练集表现上升,验证集表现下降)
测试集:不参与训练,评估模型泛化能力
泛化误差:验证集或测试集上预测值和真实值之间的差异,用于衡量一个模型的性能
什么是模型?
模型是指不同的假设函数,比如二次函数,三次函数或更高次的函数,次数越高表示模型的复杂度也越高;每个模型都对应着一组最佳的参数,通过优化loss得到,然后通过验证集来得到泛化误差。

过拟合的本质是模型学习到了训练集中的噪声然后表达到了模型参数上。

交叉验证:

当样本数据不充分的时候,我们可以将全部数据分成训练集和测试集;然后训练集分成k折,其中k-1折作为训练数据,剩下1折作为验证数据;然后训练k次,在这k次的在训练中超参数都是固定的,最后取k次验证成绩的平均作为某个参数的最终验证成绩。

网格搜索:

通常与交叉验证一块使用
网格搜索就是将不同类别的超参数(一般小于三四个,多了的话使用随机搜索)组合,按照一定的步长去搜索最优超参数组合。

模型调参:

模型追求的是在测试集上的泛化误差最小,我们用验证集的泛化误差来近似代替测试集上的泛化误差;
随着训练程度的加深,模型的训练误差会一直减小,泛化误差会先减小后增大;
最优的模型是泛化误差的最小处,往左属于模型欠拟合,往右属于过拟合。

深度学习常见的超参数:

learning rate,batchsize,dropout rate,epochs,隐藏层神经元的数量,激活函数,正则化超参数

GBDT模型的超参数:

树的深度,基分类器的数量

你可能感兴趣的:(统计机器学习,深度学习,人工智能)