训练集train set ,验证集validation set 或者说是交叉验证集cross validation set,测试集test set。
一、只用训练集
倘若将整个数据集当作训练集,来拟合数据。假设函数可能是一次、二次、三次甚至更多次,如下图所示:
那么其中一个假设函数使相应的损失函数为最低时,这个假设函数可能就是我们想要的,但是我们要考虑其中的一种情况,那就是出现过拟合的状况。如下如所示:
当然,这个假设函数,在这个数据集中,其对应的损失函数是最低的。但是,当不再是这个数据集或者说数据集变大时,这个假设函数还能够达到同样的效果吗?!很明显,是不能的。这个假设函数过拟合数据,不具备泛化能力,即不能很好地运用到其他数据集当中,只是在原本数据集中是看似最好的。
二、训练集和测试集
上面提到,整个数据集都是训练集,那么就相当于得到的假设函数,再用原本的数据集当做测试集测试损失函数的高低。不能不很好的说明是否具备泛化能力。因此,我们将数据集划分为训练集和测试集。
先设一些假设函数,用训练集得到这些假设函数的参数或者说权重,再用测试集测试这些假设函数,看这些函数的泛化性能如何。但是,这其中,出现一个问题,那就是怎么选取最优的假设函数,不能还用测试集既用来选取函数,又用来测试泛化性能,这不符合我们的初衷。
三、训练集、验证集与测试集
综上,我们可以得出:
训练集用来训练得出模型即假设函数,验证集用来得到验证误差,对比得到最优的假设函数,最后用测试集测试泛化性能如何。