在机器学习中,我们需要对模型进行训练跟测试评价,那么这时候就需要用到训练集跟测试集数据,但是有时候我们的数据集比较少,资源珍贵,如何才能更加有效地利用这些数据来训练模型呢,这就是交叉验证需要解决的问题。交叉验证的思想就是数据的重复利用,具体说就是将给定的数据集进行切分,将切分的数据集组合为训练集和测试集,利用数据集的不同组合对模型进行反复训练,测试以及模型的选择。
几种交叉验证的方法:简单的交叉验证、S折交叉验证,留一交叉验证
1、简单的交叉验证:Cross-validation
具体方法是:将所有数据组成的数据集随机地分成两部分,其中的一部分作为训练集,另一部分作为测试集。一般取样本数目多的作为训练集(如70%数据作为训练集,30%作为测试集);然后利用训练集在各种条件下(如不同的参数),进行模型的训练,从而得到不同的模型,然后利用测试机进行测试评价,计算测试误差,选出测试误差最小的模型。
2、S折交叉验证:S-fold Cross-validation
这种交叉验证的方法是使用相对较多的。
具体的方法是:
3、留一交叉验证:leave-one-out cross validation
如果数据非常缺乏,可以利用该交叉验证方法。
留一交叉验证其实是S折交叉验证的特殊情形。在S折交叉验证中,令S=N,其中N是给定的数据集中的样本容量,也就是说每次只取数据集中的一个样本进行测试,剩下所有的样本都用来训练模型,这样经过N次循环之后,生成N个模型,然后取N个模型中平均误差最小的模型。
参考:李航-《统计学习方法》