交叉验证集
平时我们常用的是把数据集分成训练集和测试集,但是每训练一次就用测试集测试一次,如果测试结果不好还要再训练,这样就比较麻烦,因此就要用到交叉验证集了,那么什么是交叉验证集呢?
如下图,把原来的训练集分出一小部分作为验证集,在验证时使用训练集和验证集中的所有数据,那么这两部分数据集组合在一起就叫交叉验证集。
我的理解是,训练集的精度高,代表训练的偏差小,验证集的精度高,说明方差小,也就是鲁棒性好。一般来说我们肯定希望偏差还方差都小,但是方差和偏差的变化是一个反向关系,偏差小了,方差就大了,就好像训练函数是专门为当前训练集定制的,换一份不同的训练集效果就会变差,甚至很差,也就是常说的过拟合问题。反之,如果方差小了,偏差就会增大,当方差很小,偏差很大时,就是欠拟合的想象。为此需要在这两者之间找到一个平衡,这也是交叉验证集的意义所在,他的结果既反应了偏差,又反映了方差,这是测试集所不能做到的。
转自:https://www.bilibili.com/video/BV1rq4y1p7nJ?p=21
那么划分训练集和验证集如何划分呢?如下图,可以把交叉验证集划分成n份,选择其中的一份作为验证集。
因为交叉验证集的作用主要是用来调参的,所以测试一次、调整一次、训练一次很繁琐,此时可以中sklea