为了评估模型,我们需要在测试集运行模型,因为在训练集上表现优秀的模型可能会出现过拟合。但如果我们使用测试集去调整模型的参数,优化模型的话会让我们的模型学习到测试集的信息,这是不符合实际的,因为测试集对应的是我们待预测的数据集,是未知的,这个时候我们就需要从训练集中分割出一部分作为验证集来优化调整我们的模型,避免过拟合。但这样又会导致我们的数据集不够,交叉验证可以用来解决数据不够的问题。
CV的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集 (training set),另一部分做为验证集(validation set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。常见的交叉验证方法如下:
第一种,简单交叉验证
所谓的简单,是和其他交叉验证方法相对而言的。首先,我们随机的将样本数据分为两部分(比如: 50%的训练集,50%的验证集),然后用训练集来训练模型,在验证集上验证模型及参数。接着,我们再把样本打乱,重新选择训练集和验证集,继续训练数据和检验模型。最后我们选择损失函数评估最优的模型和参数。
特点:在分割训练集和验证集的时候,一般是随机的,这也正是容易出猫腻的地方。同一个模型和参数,分别在两次分割中,验证结果可能会出现很大的差距。所以,不太有说服力。
第二种,K折交叉验证(K-Folder Cross Validation&