五、泛化能力评估

  1. 模型泛化能力的评估:用测试集对模型进行评估。通常有下列方法:

    • 留出法hold-out
    • K 折交叉验证法cross validation
    • 留一法Leave-One-Out:LOO
    • 自助法bootstrapping

5.1 留出法

  1. 留出法:直接将数据切分为三个互斥的部分(也可以切分成两部分,此时训练集也是验证集),然后在训练集上训练模型,在验证集上选择模型,最后用测试集上的误差作为泛化误差的估计。

  2. 数据集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。若训练集、验证集、测试集中类别比例差别很大,则误差估计将由于训练/验证/测试数据分布的差异而产生偏差。

    如:在分类任务中至少要保持样本的类别比例相似。如果从采样的角度来看到数据集的划分过程,则保留类别比例的采样方式称作“分层采样“(strafified sampling)。

  3. 即使进行了分层采样,仍然存在多种划分方式对数据集进行划分(比如排序后再划分、随机划分…)。这些不同的划分将导致不同的训练集/验证集/测试集。因此单次留出法得出的估计结果往往不够稳定可靠。

    在使用留出法时,往往采用若干次随机划分、重复进行实验评估后,取平均值作为留出法的评估结果。

5.2 K 折交叉验证

  1. K 折交叉验证法:数据随机划分为K 个互不相交且大小相同的子集,利用 K-1 个子集数据训练模型,利用余下的一个子集测试模型(一共有 五、泛化能力评估 - 图1 种组合)。

    K 种组合依次重复进行,获取测试误差的均值,将这个均值作为泛化误差的估计。

  2. 与留出法相似,将数据集划分为 K 个子集同样存在多种划分方式。为了减少因为样本划分不同而引入的差别, K 折交叉验证通常需要随机使用不同划分重复p 次,这 pK 折交叉验证的测试误差均值作为最终的泛化误差的估计。

5.3 留一法

  1. 留一法:假设数据集中存在 五、泛化能力评估 - 图2 个样本,令 五、泛化能力评估 - 图3 则得到了 K 折交叉验证的一个特例。

  2. 优点:由于训练集与初始数据集相比仅仅少一个样本,因此留一法的训练数据最多。

    缺点:在数据集比较大时,训练 五、泛化能力评估 - 图4 个模型的计算量太大。

5.4 自助法

  1. 在留出法和 K 折交叉验证法中,由于保留了一部分样本用于测试,因此实际训练模型使用的训练集比初始数据集小,这必然会引入一些因为训练样本规模不同而导致的估计偏差。

    留一法受训练样本规模变化的影响较小,但是计算复杂度太高。

    自助法是一个以自助采样法(bootstrap sampling)为基础的比较好的解决方案。

  2. 自助采样法:给定包含 五、泛化能力评估 - 图5 个样本的数据集 五、泛化能力评估 - 图6 ,对它进行采样产生数据集 五、泛化能力评估 - 图7

    • 每次随机从 五、泛化能力评估 - 图8 中挑选一个样本,将其拷贝放入 五、泛化能力评估 - 图9 中,然后再将该样本放回初始数据集 五、泛化能力评估 - 图10 中(该样本下次采样时仍然可以被采到)。
    • 重复这个过程 五、泛化能力评估 - 图11 次,就得到了包含 五、泛化能力评估 - 图12 个样本的数据集 五、泛化能力评估 - 图13
  3. 显然, 五、泛化能力评估 - 图14 中有些样本会在 五、泛化能力评估 - 图15 中多次出现了; 五、泛化能力评估 - 图16 中有些样本在 五、泛化能力评估 - 图17 中从不出现。五、泛化能力评估 - 图18 中某个样本始终不被采到的概率为 五、泛化能力评估 - 图19

    根据极限 五、泛化能力评估 - 图20 ,即通过自助采样,初始数据集 五、泛化能力评估 - 图21 中约有 36.8% 的样本未出现在采样数据集 五、泛化能力评估 - 图22中。

    五、泛化能力评估 - 图23 用作训练集, 五、泛化能力评估 - 图24 用作测试集,这样的测试结果称作包外估计out-of-bag estimate

  4. 自助法在数据集较小时很有用。

    • 优点:能从初始数据集中产生多个不同的训练集,这对集成学习等方法而言有很大好处。
    • 缺点:产生的数据集改变了初始数据集的分布,这会引入估计偏差。因此在初始数据量足够时,留出法和折交叉验证法更常用。