过拟合是统计学和机器学习中的一种现象:模型过于贴合用于构建它的观测数据,不仅学到了适用于新观测的关系,还捕捉了噪声或样本特有的模式。过拟合的模型通常在训练数据上表现良好,但在来自同一总体的独立数据上表现较差。核心问题在于泛化能力不足,而不只是模型规模过大或训练误差极低。(scikit-learn.org)
统计学含义
在监督学习中,模型通过最小化有限样本上的损失函数,学习从输入到目标的映射。训练损失衡量模型在已观测样例上的表现;总体风险则是模型在从相应数据生成分布中抽取的新样例上的期望损失。由于模型是依据训练样本选出的,训练损失低本身并不能证明总体风险也低。因此,评估预测性能需要使用独立数据。(scikit-learn.org)
一个常见的例子是使用多项式特征的线性回归。低阶曲线可能无法捕捉潜在的非线性关系,而阶数很高的曲线则可能追随观测中的偶然波动。后者虽然能紧密拟合样本,却可能在观测点之间或观测范围之外做出较差的预测。与之相反的问题是欠拟合,即模型连训练数据中的重要结构也无法表示。(scikit-learn.org)
成因与模型容量
过拟合取决于模型灵活性、可用数据、噪声与学习过程之间的关系。具有大量可调自由度的模型,可以为一个小样本表示许多相互竞争的解释。如果缺乏适当约束或充分证据,拟合过程可能偏向偶然出现、而非可重复验证的关系。模型容量关注的是模型能够表达哪些函数,而不仅仅是参数数量。(doi.org)
经典的偏差-方差权衡描述了这种现象背后的一种机制。约束较强的模型可能具有较高的偏差,因为其假设限制了它们对目标关系的表达。灵活的模型则可能具有较高的方差,因为使用不同训练样本时,它们的预测会发生显著变化。在标准假设下,以平方误差衡量的期望预测误差可以分解为偏差的平方、方差和不可约噪声。过拟合通常与这一框架中的高方差情形相关。(scikit-learn.org)
过拟合也可能发生在模型选择过程中。反复使用同一份评估数据测试不同方案,会使选择过程逐渐适应该样本的特殊性,即使每个模型本身都相对简单,也可能如此。因此,除了最终模型的灵活性之外,整个搜索过程的有效灵活性也很重要。(scikit-learn.org)
检测与评估
一种常见的诊断依据是:模型在训练数据上的表现,与在预留的验证集上的表现存在明显差距。验证曲线展示这些性能指标如何随模型设置变化,而学习曲线展示它们如何随训练集大小变化。训练表现良好、验证表现却持续较差,可能说明方差过高,但仅凭这一差距并不能构成判断过拟合的通用数值标准。(scikit-learn.org)
交叉验证通过反复划分训练数据和验证数据来评估模型。在普通的 k 折交叉验证中,每一折轮流作为验证数据一次,其余各折作为训练数据。这样就能比较不同的模型配置,而不必依赖某一次任意划分。独立的测试集,或嵌套交叉验证中的外层循环,可用于模型选择完成后的评估。(scikit-learn.org)
数据划分方法必须符合预测任务的特点。相互关联的观测可能需要按组划分,而时间序列观测可能需要按时间顺序评估。如果模型构建过程中使用了预测时无法获得的信息,就会发生数据泄漏。利用预留数据学习预处理变换或进行特征工程,可能使评估结果过于乐观,从而掩盖泛化能力不足的问题。这些操作必须仅在相应的训练数据分区内进行。(scikit-learn.org)
限制过拟合的方法
正则化通过调整学习过程,使其倾向于选择预期具有更好泛化能力的解。一种常见的优化目标是
其中,第一项是训练损失, 对参数的某些性质施加惩罚, 则控制惩罚强度。L1 和 L2 惩罚以不同方式约束参数的大小。正则化过强则可能造成欠拟合。(deeplearningbook.org)
早停法限制迭代训练的过程,通常保留验证表现较好的检查点,而不是继续最小化训练损失。数据增强通过变换生成新的训练样例,同时保留与任务相关的信息,例如对图像进行适当的平移。这些变换体现了对哪些变化不应改变预测结果的假设。(deeplearningbook.org)
在人工神经网络中,随机失活会在训练期间随机停用部分单元及其连接。这能减少模型对特定单元组合的依赖,起到正则化作用。其最初的形式也可以理解为训练许多相互重叠的子网络,并以近似方式组合它们的预测。没有任何一种方法能够保证在所有数据集或架构中都消除过拟合。(jmlr.org)
过参数化与双下降
对深度学习和其他灵活模型的研究表明,精确拟合训练数据并不一定意味着泛化能力差。在某些情形下,随着模型容量增大,测试误差起初下降,在模型刚好能够对训练样本进行插值拟合的位置附近上升,随后又随着容量进一步增大而下降。这种模式称为双下降。它表明,“增加复杂度最终必然使预测变差”这一简单预期并非总是成立。因此,参数数量庞大和训练误差为零,都不足以证明存在过拟合;决定性问题仍然是模型在具有适当独立性的观测数据上的表现。(doi.org)