k-fold cross validation(k-折叠交叉验证)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hxcaifly/article/details/79954493

交叉验证的目的

在实际训练中,模型通常对训练数据好,但是对训练数据之外的数据拟合程度差。用于评价模型的泛化能力,从而进行模型选择。

交叉验证的基本思想

把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对模型进行训练,再利用验证集来测试模型的泛化误差。另外,现实中数据总是有限的,为了对数据形成重用,从而提出k-折叠交叉验证。

对于个分类或回归问题,假设可选的模型为M={M1,M2,M3……Md}。k-折叠交叉验证就是将训练集的1/k作为测试集,每个模型训练k次,测试k次,错误率为k次的平均,最终选择平均率最小的模型Mi。

1、 将全部训练集S分成k个不相交的子集,假设S中的训练样例个数为m,那么每一个子集有m/k个训练样例,相应的子集称作{S1,S2,S3……Sk}。

2、 每次从模型集合M中拿出来一个Mi,然后在训练子集中选择出k-1个

{S1,S2,Sj-1,Sj+1,Sk}(也就是每次只留下一个Sj),使用这k-1个子集训练Mi后,得到假设函数hij。最后使用剩下的一份Sj作测试,得到经验错误。

3、 由于我们每次留下一个Sj(j从1到k),因此会得到k个经验错误,那么对于一个Mi,它的经验错误是这k个经验错误的平均。

4、 选出平均经验错误率最小的Mi,然后使用全部的S再做一次训练,得到最后的hi。

猜你喜欢

转载自blog.csdn.net/hxcaifly/article/details/79954493