交叉验证(Cross Validation)

基础不牢,地动山摇。

交叉验证(Cross Validation)是常用的模型选择(模型评估)方法。在实际问题中,如果给定的样本数据充足,进行模型选择的方法是随机地将数据集划分成三部分,分别为训练集、验证集、测试集。在训练集上用不同的学习方法训练多个模型,将训练到的多个模型在验证集上验证,选择验证误差最小的模型作为最终的模型,最后用测试集对选出的最终模型进行测试,相应的思路流程图如下所示。而在数据不充足的情况下,为了选择好的模型,我们可以采取交叉验证法。个人认为,交叉验证的一个显著特点是:摒弃了独立验证集,仅将数据划分为训练集和测试集。交叉验证又可细分为:简单交叉验证、K折交叉验证、留一交叉验证。

 1. 简单交叉验证

简单交叉验证方法是:首先随机地将已给数据分成两部分:训练集、测试集;然后在训练集上用不同的学习方法训练多个模型,在测试集上评价各个模型的测试误差,选择测试误差最小的模型作为最终的模型,这个模型可以用来预测新数据。思路流程图如下所示。

2. K折交叉验证 

K折交叉验证法:首先将数据集D划分为K个大小相似的互斥子集,即:D=D_{1}\cup D_{2}\cup \cdots\cup D_{K}\ ,\ D_{i}\cap D_{j}=\varnothing (i\neq j)。对同一种学习方法,每次用K-1个子集的并集作为训练集,余下的那个子集作为测试集,可以获得K组训练集+测试集的组合,从而可以进行K次训练和测试,最终返回这K次测试误差的平均值,这时,我们称完成了一次K折交叉验证。下图展示的是对学习方法1进行一次10折交叉验证的流程图。我们知道,将数据集D划分为K个子集存在多种划分方式,为了减小因样本划分不同而引入的差别,K折交叉验证通常要随机使用不同的划分重复p次,最终返回这pK折交叉验证测试误差的平均值。

我们对学习方法1,学习方法2\cdots,学习方法n进行同样的pK折交叉验证,选择平均测试误差最小的学习方法作为我们最终的学习方法,在数据集D上用这种学习方法训练模型,即可得到最终的模型,这个模型可以用于预测新数据。

注意点:不能将交叉验证中测试误差最小的一折对应的模型直接作为最终的模型使用,而应该用全部数据集重新训练一个模型。

3. 留一交叉验证

假设数据集D中包含m个样本,如果在K折交叉验证中令K=m,就得到了K折交叉验证法的一个特例:留一交叉验证。显然,留一交叉验证不受数据集划分方式的影响,因为m个样本划分成m个子集只有一种划分方式——每个子集中只包含一个样本。类似地,对不同的学习方法进行留一交叉验证,选择平均测试误差最小的学习方法作为最终的学习方法,在数据集D上用这种学习方法训练模型,即可得到最终的模型,这个模型可以用于预测新数据。

参考:

http://alithink.com/2018/12/25/%E6%AD%A3%E7%A1%AE%E4%BD%BF%E7%94%A8%E4%BA%A4%E5%8F%89%E9%AA%8C%E8%AF%81/
《统计学习方法》李航 著
《机器学习》周志华 著

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SongGu1996

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值