13 交叉验证

标签:机器学习与数据挖掘
(此篇R代码对应本博客系列《12 R语言手册(第五站 多元回归》)

1.交叉验证概述

  若不采用正确的方法,数据挖掘将成为数据淤积,数据挖掘分析人员发现的是虚幻的结果,来自于随机变化而不是真正的影响。因此,至关重要的是数据挖掘人员需要避免数据淤积。实现这一目标的方法是通过交叉验证。
  交叉验证是一种技术,用于确保通过分析所发现的结果对独立的、未见的数据集具有一般性。在数据挖掘中,大多数常见的方法是两折交叉验证或k折交叉验证。采用两折交又验证时,采用随机分配方法对数据进行划分,将数据集划分为训练集和测试集。测试数据集将忽略目标变量。训练集与测试集唯一的系统性差异在于训练数据包含目标变量,而测试数据集没有包含。

1.简单交叉验证 hold -out cross validation

  首先,我们随机的将样本数据分为两部分(比如: 70%的训练集,30%的测试集),然后用训练集来训练模型,在测试集上验证模型及参数。接着,我们再把样本打乱,重新选择训练集和测试集,继续训练数据和检验模型。最后我们选择损失函数评估最优的模型和参数。

2.k折交叉验证 k-fold cross validation

  在k折交叉验证中,原始数据被划分为k个独立的、大小相似的子集。然后,模型用k-1个子集的数据构建,剩下的一个子集作为测试集。这一过程迭代执行,直到产生k个不同的模型。然后,k个模型的结果用平均或投票的方式集成形成最终的结果。

回归任务做交叉验证码_机器学习

回归任务做交叉验证码_数据_02

回归任务做交叉验证码_机器学习_03

3.留一法 leave-one-out cross validation

评价:这个方法充分利用了所有样本。但计算比较繁琐,需要训练k次,测试k次。