交叉验证 Cross validation

时间:2022-07-19 08:15:23

来源:CSDN: boat_lee

简单交叉验证 hold-out cross validation

  • 从全部训练数据S中随机选择s个样例作为训练集training set,剩余的作为测试集testing set;
  • 通过对测试集训练 ,得到假设函数或者模型;
  • 在测试集中对每一个样本根据假设函数或者模型,得到训练集的类标,求出分类正确率;
  • 选择具有最大分类率的模型或者假设。

测试集和训练集分开,避免过拟合现象。

k折交叉验证 k-fold cross validation

  • 将全部训练数据S分成k个不相交的子集,假设S中的训练样例个数为m,那么每一个子集有m/k个训练样例,相应的子集为 {s1,s2,…,sk};
  • 每次从分好的子集中中拿出一个作为测试集,其它k-1个作为训练集;
  • 根据训练训练出模型或者假设函数;
  • 把这个模型放到测试集上,得到分类率;
  • 计算k次求得的分类率的平均值,作为该模型或者假设函数的真实分类率。

这个方法充分利用了所有样本。但计算比较繁琐,需要训练k次,测试k次。

留一法 leave-one-out cross validation

留一法就是每次只留下一个样本做测试集,其它样本做训练集,如果有k个样本,则需要训练k次,测试k次。留一法即k=1的k折交叉验证。
留一法计算最繁琐,但样本利用率最高。适合于小样本的情况。