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]
在分层k-折叠交叉验证中,选择分区,使得平均响应值在所有分区中大致相等。在二进制分类的情况下,这意味着每个分区包含两种类型的类标签的比例大致相同。
在重复的交叉验证中,数据被随机分成k个分区若干次。因此,模型的性能可以在几次运行中平均化,但这在实践中很少是可取的
来源:CSDN
作者:born-in-freedom
链接:https://blog.csdn.net/bornfree5511/article/details/103829989