Modle Selection

Concept and Principle

  • 训练误差和泛化误差
    • 训练误差:模型在训练数据上的误差(不太关心)
    • 泛化误差:模型在新数据上的误差(很关心)
  • 验证数据集和测试数据集
    • 验证数据集
      用于在训练过程中评估模型好坏的数据集,一般从训练集中划分出一部分,验证数据集不能作为训练集让模型训练,用来动态调整模型超参数
    • 测试数据集
      模型最终训练完毕后,使用测试集测试模型泛化能力,不能使用测试集来调整模型超参数,大多数情况下不会被打上标签
  • K-折交叉验证
    通常情况下,我们都没有足够富裕的数据去从训练集中划分验证集,这是使用K-折交叉验证能较简单的解决问题
    • 思想:一般情况将K折交叉验证用于模型调优,找到使得模型泛化性能最优的超参值。找到后,在全部训练集上重新训练模型,并使用独立验证集对模型性能做出最终评价。
    • 算法:K折就将训练集分为K块,训练代价为原来的K倍
      1. 将原始数据集划分为相等的K部分(“折”)
      2. 将第i部分作为验证集,其余作为训练集
      3. 训练模型,计算模型在验证集上的准确率
      4. 每次用不同的部分i作为验证集,重复步骤2和3 K次
      5. 将平均准确率作为使用当前超参时的模型准确率
      6. 找到一个较好的超参数后,再用全部训练集训练模型,并在一个全新的验证集上验证,不用调超参数,达到一个较好的验证准确率时,直接去测试
  • 过拟合和欠拟合
    • 模型容量的影响
      数据集复杂程度应该与模型复杂程度正相关,否则就会出现过拟合与欠拟合。举例来说,当模型很复杂而数据很简单时,模型可以直接就把所有数据记住而丧失泛化能力;而模型过于简单时,如感知机模型,无法正确划分异或的数据
      模型足够复杂时,有其他手段减少过拟合;模型太简单没前途
  • 估计模型容量
    模型种类确定时(如神经网络),模型容量由两个因素估计:参数个数、参数取值范围
  • 数据复杂度
    有多个重要因素:
    • 样本个数
    • 特征个数
    • 时间、空间结构
    • 多样性