训练集,验证集,测试集

关键字:普通参数,超参数,训练集,验证集,测试集   

很多机器学习过程实际上就是选择模型,由于模型只是参数未知,所以就需要得到一个最优参数,使得模型可以比较准确的描述自变量到因变量的变化情况。对于模型的训练和度量,就需要用到已知的数据集。

    数据集一般分为以下3种。如果已经有了一个大的标注数据集,那么通过随机抽样获得三种数据集,三者的比例为8:1:1。如果有标注的话,也可以只随机抽样出训练集和验证集。如果无标注,就用作训练集。(这部分写的不清楚,会后续更新)

    通常的方法就是先训练训练集,即最小化代价函数,然后再把测试集代入代价函数看看效果如何。

1.训练集

    确定模型后,用于训练参数,注意训练的是普通参数(每多加入一个数据对模型进行训练,模型中就会受到影响的参数,通过多次迭代不断更新,是一个梯度下降的过程)而不是超参数(超参数是指训练开始之前设置的参数,超参数的选择与训练过程实际上是独立的,训练过程不会影响超参数。但是训练结束后可以根据训练结果考虑超参数是否可优化,可优化的话就调整超参数的值开始下一次训练)

2.验证集(交叉验证集CV)

    用训练集对模型训练完毕后,再用验证集对模型测试,测试模型是否准确而不是训练模型的参数

3.测试集

      虽然验证集没有对模型的参数产生影响,但是我们却根据验证集的测试结果的准确度来调整参数(这里调整超参数?),所以验证集对结果还是有影响的,即使得模型在验证集上达到最优。就是在很多个模型中,验证集选择了代价函数最小的一个模型。虽然在这个模型上代价很小,但并不代表在其他数据上代价也小。所以需要一个完全没有经过训练的测试集来再最后测试模型的准确率。

4.高偏差和高方差

4.1 定义

下图是训练集和验证集的误差比较


高偏差:欠拟合,此时训练集和验证集的误差都比较大(像图里面的d=1的情况)

高方差:过拟合,对训练集拟合的好,但是对验证集拟合不好(像d=4那样)

4.2 与正则化

三种数据集的代价函数定义如下:



下图反映高偏差时候的随着训练数据的增大,训练集和验证集的误差变化情况,最后都趋向平缓

所以对于高偏差的情况,无论增加多少训练集都不会使得误差减小。所以如果预感到模型为高偏差,最好的办法就是停下来换一个模型。


高方差情况:增加训练数据有用


5.模型优化

在各个情况下应该做什么?(从右往左看)


参考:https://baike.baidu.com/item/%E8%B6%85%E5%8F%82%E6%95%B0/3101858