在
机器学习和模式识别等领域中,一般需要将样本分成独立的三部分
训练集(train set),校验集(validation set ) 和测试集(test set)。校验集是用来做模型选择(model selection),即做模型的最终优化及确定的数据集。在实际应用中,校验集是可选的,因为校验集主要作用是辅助模型构建。
定义
在机器学习中,研究和构建算法用来对数据进行学习和预测是一个常见任务,这些算法是通过基于数据驱动的预测或决策工作,即对输入的数据搭建数学模型。用于构建最终的模型,需要三个数据集,训练集,校验集以及测试集。训练集用于用来训练模型或确定模型参数的。校验集用于用来调参、选择特征以及调整其他和学习算法相关的选项。校验集可以对经训练集训练以后的模型进行无偏评估在进行调参的时候。验证数据集可用于正规化通过提前停止:停止训练当验证数据集中的误差增加,这是训练模型出现过拟合的现象。例如在神经网络中,用验证数据集去寻找最优的网络深度(number of hidden layers),或者决定
反向传播算法的停止点;在普通的机器学习中常用的交叉验证(Cross Validation) 就是把训练数据集本身再细分成不同的验证数据集去训练模型。
测试集是用来评估模型的性能,但不能作为调参、选择特征等算法相关的选择的依据。提前停止一种当验证集上的性能不再提高时停止训练集上学习的方法,旨在克服过拟合现象。
过拟合
过拟合(overfitting,或称过度拟合)现象是指在拟合一个统计模型时,使用过多参数。对比于可获取的数据总量来说,一个荒谬的模型只要足够复杂,是可以地适应数据。过拟合一般可以视为违反
奥卡姆剃刀原则。当可选择的参数的自由度超过数据所包含信息内容时,这会导致最后(拟合后)模型使用任意的参数,这会减少或破坏模型一般化的能力更甚于适应数据。过拟合的可能性不只取决于参数个数和数据,也跟模型架构与数据的一致性有关。此外对比于数据中预期的噪声或错误数量,跟模型错误的数量也有关。
过拟合现象的观念对机器学习也是很重要的,是指学习时选择的模型所包含的参数过多,以致于出现这一模型对已知数据预测的很好,但对未知数据预测很差的现象。通常一个学习算法是借由训练示例来训练的。亦即预期结果的示例是可知的。而学习者则被认为须达到可以预测出其它示例的正确的结果,因此,应适用于一般化的情况而非只是训练时所使用的现有数据(根据它的归纳偏向)。然而,学习者却会去适应训练数据中太特化但又随机的特征,特别是在当学习过程太久或示例太少时。在过拟合的过程中,当预测训练示例结果的表现增加时,应用在未知数据的表现则变更差。
交叉验证
交叉验证是又一种模型选择方法,它与前面介绍的模型选择方法有所不同,是一种没有任何前提假定直接估计泛化误差的模型选择方法,由于没有任何假定,可以应用于各种模型选择中,因此具有应用的普遍性,又由于其操作的简便性,被人们认为是一种行之有效的模型选择方法。
交叉验证的产生是一个曲折的过程。首先是人们发现用同一数据集既进行模型训练又进行泛化误差的估计会产生一个较差的结果,也就是我们常说的训练误差估计的乐观性,为了克服这个问题,交叉验证的方法被人们提了出来,它的基本思想是将数据分为两部分,一部分数据用来进行模型的训练,通常我们叫做训练集,另一部分数据用来测试训练生成模型的误差,我们叫做测试集,由于两部分数据的不同,泛化误差的估计是在新的数据上进行,这样的泛化误差的估计可以更接近真实的泛化误差,在数据足够的情况下,我们可以很好估计出真实的泛化误差,但是在实际应用中,往往只有有限的数据可用,我们必须对数据进行重用,对数据进行多次切分来得到好的估计,自从交叉验证提出以后,人们提出了不同的数据切分方式。
Holdout 验证
常识来说,Holdout 验证并非一种交叉验证,因为数据并没有交叉使用。 随机从最初的样本中选出部分,形成交叉验证数据,而剩余的就当做训练数据。 一般来说,少于原本样本三分之一的数据被选做验证数据。
K-fold cross-validation
K折交叉验证,初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测。这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的。
无偏估计
无偏估计是用
样本统计量来估计总体参数时的一种无偏推断。估计量的数学期望等于被估计参数的真实值,则称此此估计量为被估计参数的无偏估计,即具有无偏性,是一种用于评价估计量优良性的准则。无偏估计的意义是:在多次重复下,它们的平均数接近所估计的参数真值。无偏估计常被应用于测验分数统计中。当其他量相等时,
无偏估计量比有偏估计量更好一些,但在实践中,并不是所有其他统计量的都相等,于是也经常使用有偏估计量,一般偏差较小。当使用一个有偏估计量时,也会估计它的偏差。有偏估计量可能用于以下原因:由于如果不对总体进一步假设,无偏估计量不存在或很难计算(如标准差的无偏估计);由于估计量是中值无偏的,却不是均值无偏的(或反之);由于一个有偏估计量较之无偏估计量(特别是收缩估计量)可以减小一些损失函数(尤其是均方差);或者由于在某些情况下,无偏的条件太强,而这些无偏估计量没有太大用处。