k折交叉验证
参考: 求解神经网络做十字交叉验证k=10,这种方法到底是得到十个模型还是一个模型。? - 王赟 Maigo的回答 - 知乎 https://www.zhihu.com/question/29350545/answer/44043075和下面的评论
五折交叉验证就是将训练集分为5份,然后分别在每四份上训练得到一个模型,在剩下一份上预测,得到一个结果,这样会训练得到5个模型,可以预测得到5个结果,得到的平均值,可以反映一定程度上反映这组超参的效果。
在现实中,我们往往在比赛中使用k折交叉验证,这是因为比赛赛方只提供训练集,测试集用于检验我们的模型不会提供。
为了让我们的模型普适性很强,又可以充分使用训练集数据,我们可以使用k折交叉验证,得到平均结果最高的模型结构和对应超参。然后再把对应超参在所有的数据集上训练一遍。【想一想真的好费GPU】
这样得到的模型可以倾向于是会得到较好结果的模型。
→求解神经网络做十字交叉验证k=10,这种方法到底是得到十个模型还是一个模型。? - 王赟 Maigo的回答 - 知乎 https://www.zhihu.com/question/29350545/answer/44043075下面的评论,感觉解释的很好。
1、在训练模型时,如果已经预先指定好超参数了,这时候k交叉验证训练出来的模型只是不同数据训练出来的参数不同的相同结构的模型。一些文章中预先指定了超参数,再用k交叉验证只能单单说明在这组超参数下,模型的准确率是这样的,并不能说明当下的这组超参数是比其他的好。
2、k交叉验证的用法是分别对自己想要尝试的n组超参数进行k交叉验证训练模型,然后比较n组超参数下用k交叉验证方法得到的n个平均误差,然后选出误差较小的那组超参数。
3、在做实验时,比如要比较不同学习算法的效果,要先分别对不同算法用k交叉验证方法确定一组较好的超参数,然后在测试集上比较他们的准确率。
可以得到较为稳定的k折超参数,然后用这个超参数在整个数据集上训练。