天天看点

DL--交叉验证

Wikipedia:​​https://en.wikipedia.org/wiki/Cross-validation_(statistics)​​

交叉验证(有时称为旋转估计​​[1] ​​​​[2] ​​​​[3]​​或样本外测试)是各种类似的​​模型验证​​​技术中的任何一种,用于评估​​统计​​​分析的结果将如何推广到一个独立的数据集。它主要用于设置,其目的是预测,和一个想要估计如何​​准确地​​​一个​​预测模型​​在实践中执行。在预测问题中,通常会给模型一个已知数据的数据集(训练数据集)和一个未知数据的数据集(或首先测试的数据),然后针对该数据测试模型(称为​​验证数据集​​或测试集)。​​[4] ​​​​[5]​​​交叉验证的目的是测试模型预测未用于估计其数据的新数据的能力,以发现诸如​​过度拟合​​​或​​选择偏差之类的问题​​​​[6]​​,并对如何进行建模提供深刻见解。该模型将推广到一个独立的数据集(例如,未知数据集,例如来自实际问题的数据集)。

一轮交叉验证涉及​​分割​​​一个​​样品​​​的​​数据​​​到​​互补​​的子集,在一个子集执行所述分析(称为训练集),以及验证在另一子集中的分析(称为验证集合或测试集)。为了减少​​可变性​​,在大多数方法中,使用不同的分区执行多轮交叉验证,并将验证结果组合(例如取平均值)在各轮中,以估计模型的预测性能。

总之,交叉验证结合(平均)预测中的适应度度量以得出模型预测性能的更准确估计。​​[7]​​

类型[编辑]

交叉验证可以分为两种类型:穷举交叉验证和非穷举交叉验证。

非穷举交叉验证

k-fold cross-validation

在k重交叉验证中,原始样本被随机分为k个大小相等的子样本。在k个子样本中,保留一个子样本作为测试模型的验证数据,其余k-1子样本用作训练数据。然后,交叉验证过程重复k次,其中每个k个子样本仅使用一次作为验证数据。然后,对k个结果进行平均以产生单个估计。与重复随机子抽样(见下文)相比,该方法的优点在于,所有观测值都用于训练和验证,而每个观测值仅用于一次验证。通常使用10倍交叉验证,[11],但通常k仍然是一个不固定的参数。

例如,设置k=2将导致两次交叉验证。在2倍交叉验证中,我们将数据集随机洗牌为两个集d0和d1,以便两个集大小相等(这通常是通过洗牌数据数组然后将其分成两个来实现的)。然后我们在d0上进行培训并在d1上进行验证,然后在d1上进行培训并在d0上进行验证。

当k=n(观察次数)时,k倍交叉验证等同于遗漏一个交叉验证。[12]