训练误差(training error):模型在训练数据集上表现出的误差。
泛化误差(generalization error):模型在任意一个测试数据样本上表现出的误差的期望,常常通过测试数据集上的误差来近似。
机器学习模型应该关注泛化误差。
模型选择(model selection)
1. 验证数据集(validation set):预留一部分在训练数据集和测试数据集以外的数据进行模型选择 ,例如我们可以从给定的训练集中选取一小部分作为验证集,剩余部分作为真正的训练集。
2. k折交叉验证(k-fold cross-validation):由于验证数据集不参与模型训练,当训练数据不够用时,预留大量的验证数据显得太奢侈,并且人们发现用同一数据集,既进行训练,又进行模型误差估计,对误差估计的很不准确,这就是所说的模型误差估计的乐观性。为了克服这个问题,提出了交叉验证:我们把训练数据集分割成k个不重合的子数据集,然后我们做k次模型训练和验证。每一次我们使用一个子数据集验证模型,并使用其他k-1个子数据集来训练模型。最后,我们对这k次训练误差和验证误差分别求平均。
欠拟合和过拟合
欠拟合(underfitting):模型无法得到较低的训练误差。
过拟合(overfitting):模型的训练误差远小于其在测试集上的误差。
- 造成过拟合和欠拟合的主要原因是模型复杂度和训练数据集的大小。
模型复杂度:
1. 给定训练数据集,如果模型的复杂度过低,很容易出现欠拟合。
2. 如果模型的复杂度过高,容易出现过拟合。
训练数据集大小:
一般来说,训练数据集中样本过少(特别是比模型参数数量更少时),过拟合更容易发生。
测试如下:
1. 正常拟合,虽然这里测试集上的误差比训练误差还好