交叉验证来评价模型的性能

 构建学习模型之后,我们需要对模型的性能进行评估。如果一个模型过于简单,就会导致欠拟合(高偏差)问题,如果模型过于复杂,就会导致过拟合(高方差)问题。下面介绍holdout交叉验证和k折交叉验证

 

一、holdout交叉验证

 holdout交叉验证(holdout cross-validation)是评估机器学习模型泛化能力一种常用的方法。holdout方法是将数据集划分为训练集和测试集,训练集用于训练模型,测试集用于评估模型的性能。

 但是,如果我们在模型选中过程中不断的重复使用相同的测试数据,容易导致模型的过拟合。

 使用holdout交叉验证时,为了避免过拟合,数据集可分为三部分:训练集、测试集和验证集。训练集用于不同模型的拟合,验证集作为模型性能的评估和选择标准,测试集是当模型的参数优化完成之后,再用来评估模型的泛化误差。

 

 holdout方法的缺点:模型性能的评估对于训练集和验证集的划分是敏感的,评价的结果会随着样本的不同而发生变化

 

二、k折交叉验证

 k折交叉验证(k-fold cross-validation),不重复的将训练集划分为k个,其中k-1个用于模型的训练,剩下的一个用于测试。重复k次,可以得到k个模型及对应模型的性能评价。

 通过这些独立且不同的数据子集来获取评价结果,最后取这些结果的平均性能,与holdout方法相比,这样的结果对于数据集的划分敏感度相对较低。

 通过k折交叉验证来验证模型参数的调优,从而找到模型泛化性能最优的参数,找到满意的参数之后,就使用整个训练集作为训练数据来训练模型,然后通过测试集来评价模型的性能。

 在k折交叉验证中,每一个样本都会被划分为训练集或者测试集(验证集)的机会,与holdout方法相比,这样模型可以获得一个较小的方差。

 在k则交叉验证中,常用的k值是10,即训练数据被划分为10块,其中9块用于训练,1块用于测试评价模型的性能,每一次评价都能获得一个评价指标Ei(分类的准确率或者误差),最后我们选取模型平均指标的平均值。

 当训练数据相对较少的时候,我们可以增加k的大小,使得每次迭代中将会有更多的数据可以用于训练,这样可以获得较小的偏差。

 在增加k值的同时,也会导致交叉验证的算法运行时间较长,而且由于训练块之间高度相似,从而导致评价结果的方差较高。

 如果训练数据较大的时候,我们可以减少k值,这样不仅能够较少交叉验证需要消耗的时间还可以降低模型在不同数据上的重复拟合,从而获得一个较准确的模型评估结果。

posted @ 2018-11-02 18:23  1直在路上1  阅读(1625)  评论(0编辑  收藏  举报