有时候,模型在训练数据集上更准确时,这个模型在测试集上不一定更准确,这是为什么呢?
训练误差是指在训练集上表现出的误差,而返回误差是指在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。
我的理解:由于训练误差是经过模型在训练集上反复训练的,它的结果会更倾向于训练集的结果。那么如果将其损失值降得过低,就好像是这个模型专门为这个训练集训练了一组参数。显然,这组参数就不那么容易去适应测试集中随机出现的一组数据。如此,训练误差低的,返回误差就可能还更高一些了。
在机器学习中,通常需要评估若干个候选模型,从中找出适合的模型。这个过程称为模型选择。下面总结几个模型选择中的概念。
严格意义上,测试集只能在所有超参数和模型参数选定之后使用一次。不能看哪个模型在测试集上的效果好就选哪个,因为测试集是用来测试模型的。有鉴于此,我们可以预留一部分训练集和测试集以外的数据来进行模型选择。比如,我们可以将训练集中的一部分作为验证集,而剩余部分作为真正的训练集。
由于数据不容易获取,预留大量的验证数据显得太奢侈。 折交叉验证是一种改善的方法。该方法的做法是:
这种做法充分利用了现有的数据集。
出现这两种现象的因素有很多。这里重点讨论两个因素:模型复杂度、训练数据集大小
其实这个我感觉和“我的理解”里面说的差不多。假如一个模型过于复杂,就相当于是专门为这个数据集找了个模型一样,不具有普适性,就会出现过拟合。但是如果过于简单,又会出现欠拟合。
一般来说,如果训练集样本过少,特别是模型参数数量更少时,过拟合更容易发生。