交叉验证的基本思想:把在某种意义下将原始数据 (dataset)进行分组,一部分做为训练集 (train set),另一部分做为验证集 (validation set or test set),首先用训练集对模型进行训练,再利用验证集来测试模型的泛化误差。
K倍交叉验证(K>=2)。将样本数据集随机划分为K个子集(一般是均分),将一个子集数据作为测试集,其余的K-1组子集作为训练集;将K个子集轮流作为测试集,重复上述过程,这样得到了K个分类器或模型,并利用测试集得到了K个分类器或模型的分类准确率。用K个分类准确率的平均值作为分类器或模型的性能指标。10-倍交叉证实是比较常用的。
留出法(Hold-out Method): 直接将数据集D划分成两个互斥的集合,其中一个为训练集S,另一个作为测试集T,这称为“留出法”。一般是7:3的比例划分。
不是,轮次不同
数据应该均衡
蒙特卡洛交叉验证法,也被称为Shuffle交叉验证法,是一种非常灵活的交叉验证策略。在这种技术中,数据集被随机地划分为训练集和验证集。
假设我们有100个样本,60%的样本被用作训练集,20%的样本被用作验证集,那么剩下的20%(100-(60+20))将不被使用。
优点1 :我们可以自由地使用训练集和验证集的大小。
优点2 :我们可以选择repetitions的数量,而不依赖于重复的fold数量。
缺点1 :少数样本可能不会被选入训练集或验证集。
缺点2 :不适合不平衡的数据集。在我们定义了训练集和验证集的大小之后,所有的样本都是随机选择的,所以可能会发生训练集没有测试集中的那一类数据的情况,而模型将无法对未见过的数据进行归纳
分层K-Fold是K-Fold交叉验证法的一个增强版,主要用于不平衡数据集。就像K-fold一样,整个数据集被分为大小相同的K-fold。但在这种技术中,每个Fold中的目标变量实例的比例与整个数据集的比例相同。
Leave One Out Cross Validation (LOOCV)可以被认为是一种K-fold验证,其中k=n, n是给定数据集的行数。
Leave P Out交叉验证是一种exhaustive的交叉验证技术,其中p个样本被用作验证集,其余n个样本被用作训练集。
假设我们在数据集中有100个样本。如果我们使用p=10,那么在每次迭代中,10个样本将被用作验证集,其余90个样本作为训练集。
这个过程重复进行,直到整个数据集被划分为p-样本的验证集和n-p训练样本。
如果训练数据的错误率低,测试数据的错误率高,那么就表示过拟合。