交叉验证(cross validation)
交叉验证是经常使用的模型性能评估方法,从而进行模型选择。对不同的模型参数进行训练得到的模型也不一样,所有交叉验证也可以用于模型参数选择。
当数据集充足时,进行模型选择的一种简单的方法是,将数据集分成三部分:训练集(train set),验证集(validation set),测试集(test set)。训练集用于训练模型,验证集用于选择模型,测试集对模型做最后的评估。在不同的模型中选择在验证集上表现最好的模型。由于验证集有足够多的数据,他对模型的选择也是有效的。
但是,许多实际应用中数据不充足。不能分出足够多的数据对模型进行选择。这时候可以考虑交叉验证。交叉验证的基本思想是:重复的使用数据;把给定的数据集分成几个部分,每次选择其中一部分用于测试,其余部分用于训练数据。这样重复的进行训练和测试,最后根据在测试集上的平均性能进行模型选择。
保持方法(hold-out )
保持方法是:随机的将数据集分成两部分,一部分用作训练集,一部分用作测试集;然后用训练集在各种条件(例如不同的参数)下训练模型,用测试集验证模型的性能,选择效果最好的模型。保持并没有重复使用数据
保持方法有一些局限性;第一,训练的样本较少,因为要保留一部分用于检验。第二,模型依赖训练集合测试集的构成。训练集越小,模型的方差越大;如果训练集太大,根据较小的测试集估计模型的效果就不可靠。S折交叉验证(s_fold cross validation)
应用最多是S折交叉验证。该方法是:把数据集分成不相交的S个子集,选择S-1个子集训练模型,使用剩下的一个子集测试模型性能。一种有S中选择方法,最后选择在S次测试集上平均表现最好的模型。- <