交叉验证

    交叉验证 Cross Validation,是一种科学的检验模型泛化能力(generalization ability)的方法。其核心思想是将原始数据一部分作为训练集(training set),另一部分作为验证/测试集(validation set or test set),并迭代交换数据集的角色。

K折交叉验证 K-fold Cross Validation

    数据集被随机的划分成k个(一般同等大小)的集合,每次使用1个集合作为测试集,剩下的k-1个集合合起来作为训练集。一些特例:

  • Double Cross Validation:将数据集平均分成两份,一份训练集,一份测试集。然后再把训练集和测试集交换。
  • Leave-one-out Cross Validation:每次使用数据集的1个元素作为测试集,剩下的n-1个元素作为训练集(n为数据集元素总数)。

交叉验证的应用场景

    交叉验证的本质作用(检验模型泛化能力)决定了其主要应用场景。

  • 模型选择:模型选择指的是选择分类器种类(如DT、RF还是SVM),而非选择分类器参数(模型参数永远是由训练集求出)。故模型选择时,其实是在考察各个分类器的泛化能力,即比较交叉验证迭代得到的所有性能结果平均值。所以使用交叉验证,并不能得到一个具体模型(如规则树)。
  • 参数选择:参数选择是选择模型超参数。往往(在训练集中)划分出训练集和验证集,然后使用不同超参数,对于同种分类器进行泛化能力评估,选择使得分类器泛化能力最强的超参数。

    最后还有一个为什么说交叉验证可以防止过拟合的问题:无论模型选择还是参数选择,都是经过交叉验证后,选取平均性能最好的模型。这说明该模型的泛化能力最好,因此能够避免过拟合(想想什么是泛化能力)。