交叉验证法
一般在我们训练模型的时候如果数据量够大,我们可以随机地将数据集分为训练集、验证集和测试集。训练集用于训练模型,验证集用于选择模型(看模型在验证集上的效果来选择较好的模型,所谓较好一般是指模型的损失较小),测试集用于最终对模型的评估。所以一般在神经网络训练的时候一般会有“validation”这个参数,其就是将输入的训练集再进行分割,从而得到验证集以选择模型。
但实际情况下,我们的数据往往不够充足。这个时候我们就可以使用交叉验证法了,其基本思想是重复地使用数据:把给定的数据进行切分,将切分后的数据组合为训练集与测试集,然后进行训练和测试来选择模型。
常见交叉验证法有
- 简单交叉验证
随机地将已知数据分为两部分,一部分用作训练,一部分用于测试(通常将80% (或70%)用作训练,20%(或30%)用作测试)。然后在各种条件下训练模型然后测试误差,通常选择误差最小的模型 - S折交叉验证(S-fold cross validation)
比较常用的一种方法,做法为将数据分为互不相交的 S S S等份;然后将 S − 1 S-1 S−1份数据用于训练, 1 1 1份用作测试;将这一过程重复 S S S次;最后选择出 S S S次测评中平均测试误差最小的模型。 - 留一交叉验证
还是S折交叉验证的方法,不过留下的不是 1 1 1份做测试,而是 1 1 1个数据做测试;这样的话如果我们有 n n n个样本,我们需要训练 n n n次,测试 n n n次。
Reference:
李航.《统计学习方法》[M].2012.3.北京:清华大学出版社,2019.5(重印):14-15.
boat_lee.交叉验证(交叉验证(简单交叉验证、k折交叉验证、留一法)).https://blog.youkuaiyun.com/u010451580/article/details/51373081.20160.5.11