机器学习 交叉验证

首先,要明确交叉验证是什么?有一点很明确,交叉验证需要将数据集分为训练集和验证集(或者称测试集),在训练集上对模型训练参数,在验证集上看训练出的模型的好坏。当数据比较少的时候,验证集上的泛化误差并不可靠,所以不能表明一个模型比另一个模型要好。交叉验证通过划分数据,确保性能指标是所有数据给出的。 
交叉验证分为三种: 
- held-out: 
最简单,将数据集分成两部分,一部分作为训练集,一部分作为验证集,由于分法不同,验证集上的结果也会有差异。本质上不能称为交叉验证,因为没有涉及数据的交叉使用,只划分了一次。 
- k-fold cross validation 
将数据集分为k份,总共训练k次,每次以k-1份作为训练集,1份作为验证集,得到验证集上的性能,将k次结果平均,作为模型的性能指标。 
- leave-one-out cross validation 
每次留一个样本作为验证集,剩下的作为训练集,这样需要训练N(样本数)次,将验证集上的所有性能做个平均作为模型的评价指标。

交叉验证可以用来选择超参。对一个超参确定不同的取值,对每种取值进行交叉验证,即在进行k次训练和测试,得到k个性能指标,可以求出这k个性能指标的均值和方差作为此超参值的性能。

猜你喜欢

转载自blog.csdn.net/qq_36336522/article/details/79456944