【机器学习】k-fold cross validation(k-折叠交叉验证)

来源:互联网 发布:python实现神经网络 编辑:程序博客网 时间:2024/04/30 06:37

另一篇博客http://blog.csdn.net/evillist/article/details/76009632

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

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

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

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

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

{clip_image026}(也就是每次只留下一个clip_image028),使用这k-1个子集训练clip_image010[4]后,得到假设函数clip_image030。最后使用剩下的一份clip_image028[1]作测试,得到经验错误clip_image032

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

4、 选出平均经验错误率最小的clip_image010[6],然后使用全部的S再做一次训练,得到最后的clip_image012[4]


参考


0 0
原创粉丝点击