交叉验证介绍

交叉验证(Cross Validation,有时简称cv)


基本介绍:

1、简单交叉验证
将数据随机打乱分成两份,一部分作为训练集,另一部分作为测试集。(比例一般为训练集70%,测试集30%)。使用训练集在各种条件下训练模型,得到不同的模型,在测试集上验证各个模型的测试误差,从而选出误差最小的模型。

2、K折交叉验证
应用的最多,最实用的就是K折交叉验证(K-fold cross validation)。随机将已给的数据平均切分为K个互不相交的大小相同的子集;然后利用K-1个子集的数据来训练模型,利用余下的1份子集作测试模型;将这一过程对可能的S种选择重复进行,就是说训练K次,产生K个模型;最后选出K次评测中平均测试误差最小的模型。

3、留一交叉验证
K折的特殊情形是K=N(N是给定的数据集容量),称为留一交叉验证。比如样本数量N为1000个,则分成1000份,每份都进行训练。往往在数据缺乏的情况下使用。

(介绍参考自李航的《统计学习方法》)





个人使用经验:

1、一般在使用深度学习算法进行训练时就用简单交叉验证,train和val的比例看情况,保证数据量情况下,即训练不会发生欠拟合的情况下,验证集当然越大越好。k-fold较少使用。因为数据量一般比较充足,如果数据量少的话,就不适合使用dnn进行训练了,会发生欠拟合;数据量如果很大,使用k-fold时间成本又太高,而且如果数据集和模型适合深度学习的话,train loss曲线一般比较丝滑,相
比传统机器学习不易发生过拟合现象, 发生了过拟合,根据loss曲线也能及时切断。

k折交叉验证主要用在传统机器学习上,数据量一般较小,训练集易发生过拟合的情况下。据说10是经验数值,5折用的也比较多,毕竟快。如果2折测试集精度也很高的话,那说明模型泛化能力超好。使用k-fold会产生k个模型,可以挑一个精度最高的模型,不过有时在验证集里精度越高也可能导致泛化性能较差,最好的方法是staking这k个模型,鲁棒性更好,但若用在深度学习时间成本也极高。

留一法,每折中基本所有的样本都用于训练模型,因此最接近原始样本的分布。至今没有用到过,感觉能用到这种验证方案的数据集得有多小,训练出的模型似乎也不是很可靠,不排除吹毛求疵的情况。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值