try ai
科普
编辑
分享
反馈
  • 防止模型过拟合:原理与实践

防止模型过拟合:原理与实践

SciencePedia玻尔百科
核心要点
  • 当模型记忆了训练数据中的噪声而非学习其背后真实的潜在模式时,便会产生过拟合,这一问题可以通过偏差-方差权衡来解释。
  • 交叉验证是一项基础技术,它使用一个预留的测试集来对模型在未见过数据上的性能进行无偏估计。
  • 正则化通过在学习目标中增加对模型复杂度的惩罚项来防止过拟合,从而迫使算法倾向于选择更简单、泛化能力更强的解。
  • 诸如正则化等防止过拟合的技术,通常具有直接的物理或科学解释,这使得研究人员能够将先验知识融入到他们的模型中。

引言

在数据时代,统计模型是科学发现的引擎,有望揭示从基因序列到宇宙信号等万事万物中隐藏的模式。然而,这种力量伴随着一个根本性的风险:创造出具有欺骗性的完美模型。这些模型在它们所训练的数据上能达到无可挑剔的性能,但当面对全新的、未见过的信息时,却会惨败。这种关键性的失败被称为​​过拟合​​,即模型没有学到系统的基本原理,而仅仅是记住了特定数据集中的噪声和特质。

解决过拟合问题不仅仅是一项技术琐事,它是在追求可泛化知识过程中的一个核心挑战。我们如何才能信任我们的模型?我们如何区分一个真正的发现与一个统计学上的幻象?本文将直面这些问题,为构建稳健、可信的模型提供一份艺术与科学的指南。

我们将分两大部分来探究这些核心概念。第一章,​​原理与机制​​,通过探索基础性的偏差-方差权衡、将交叉验证作为我们最诚实的批评者引入、以及详细介绍将正则化作为惩罚复杂度的一种优雅策略,来揭开过拟合的神秘面纱。第二章,​​应用与跨学科联系​​,将展示这些原理如何应用于从结构生物学和工程学到流行病学等不同的科学领域,揭示防止过拟合如何与科学方法本身交织在一起。读毕全文,读者不仅能理解对抗过拟合的技术,还能领悟到将数据转化为真正理解所需的更深层次的怀疑精神和严谨哲学。

原理与机制

完美的幻象与怀疑的艺术

想象一个学生,通过背诵答案来在每次模拟考试中都取得满分。他能倒背如流地复述他见过的每一个问题的解法。看起来很聪明,对吧?但在期末考试中,面对他从未见过的新问题,他却束手无策。这个学生已经对练习材料“过拟合”了。他没有学会基本原理,而是学会了训练集的特定产物。我们的统计模型,在寻求数据模式的过程中,也可能陷入完全相同的陷阱。这就是​​过拟合​​的幽灵:一个在构建它的数据上表现完美,但在真实世界中却毫无用处的模型。它成了过去的大师,却对未来视而不见。

这个问题的核心在于所有学习(无论是人类还是机器)中的一个基本困境:​​偏差-方差权衡​​。这是一种宇宙级的平衡行为。一方面,你可能有一个过于简单、过于僵化的模型。如果你试图用一条直线来描述一组呈优美弧形的数据,你的模型就会系统性地出错。它具有高​​偏差​​,因为它缺乏捕捉真相所需的复杂度。另一方面,你可能有一个极其复杂的模型,一条扭曲蠕动的线,能完美地穿过每一个数据点。这样的模型在它见过的数据上偏差很低,但它却有高得可怕的​​方差​​。如果你收集一组略有不同的数据,你画出的那条扭曲线将完全不同。这个模型是不稳定的。它没有学到真正的信号,而是记住了数据中随机、无意义的抖动——即噪声。这种高方差状态就是过拟合。

那么,我们如何识破这种完美的幻象呢?我们不能等到模型在真正重要的时候失败。我们需要一个诚实的批评者,一种内建于我们流程中的健康怀疑精神。在科学中,这个批评者被称为​​测试集​​。让我们进入一个结构生物学家的世界,他正试图利用X射线晶体学来绘制一种新酶的三维形状图 ``。他构建了一个分子原子结构的计算机模型,并通过计算对其进行优化,以最佳匹配其实验衍射数据。拟合优度通过一个称为R因子的分数来衡量。这个值越低越好。原则上,人们可以无休止地增加参数并执着地调整模型,将这个R因子降到一个惊人的低值。但这会是酶的真实结构,还是一个恰好能完美解释某次特定实验的噪声和特质的复杂虚构呢?

这个绝妙的解决方案,现已成为该领域的金标准,其实做法极其简单:在开始之前,他们拿出一小部分随机数据——比如5%——并将其锁在保险库里。这些数据从不用于构建或优化模型。它在整个过程中保持“自由”。这就是​​测试集​​。当模型在剩下的95%的数据(“工作集”)上训练完毕后,保险库被打开,模型将在这些原始的、未见过的数据上进行第一次也是唯一一次的评估。在这个测试集上的得分被称为​​R-free​​ ``。

这两个数字的比较讲述了一个至关重要的故事。如果R因子(在训练数据上)和R-free(在测试数据上)都低且彼此非常接近,你就可以相信你的模型已经捕捉到了真实的信号。它的泛化能力很好。但如果你的R因子非常低,而R-free却居高不下,警钟就应该大作了。你的模型已经过拟合了。它完美地记住了模拟考试的答案,却在期末考试中不及格。这种留出一份“自由”数据集的简单行为,一种被称为​​交叉验证​​的技术,是整个现代科学和机器学习中最强大和最基本的思想之一。它是我们对抗自欺欺人的主要武器。

寻找“最佳点”:智慧的U形曲线

交叉验证不仅仅是一场期末考试,它还是一个指南针。它帮助我们在偏差-方差权衡的险恶水域中航行,找到那个“金发姑娘”模型——不太简单,不太复杂,恰到好处。

让我们想象一个经典任务:我们有一张散点图,数据点似乎遵循一条曲线,我们想找到一个数学函数来描述这种关系 ``。我们可以尝试一条简单的直线(一个阶数为 d=1d=1d=1 的多项式)、一条平缓的抛物线(阶数 d=2d=2d=2)、一个更“扭曲”的三次函数(阶数 d=3d=3d=3),依此类推。阶数的每一次增加都给了模型更多的灵活性。哪一个最好呢?

如果我们只看每个函数拟合训练数据点的好坏(即​​训练误差​​),我们将会被严重误导。随着我们增加更多的扭曲,训练误差几乎总会下降。一个足够复杂的多项式可以被构造成精确地穿过每一个点,从而得到零训练误差。但这将是对数据的讽刺描绘,是过拟合的完美例子。

相反,我们听取我们诚实的批评者:交叉验证。我们可能将数据分成10个“折”,在其中9个上训练模型,在第10个上测试,然后轮换哪个折作为测试集,直到每个折都轮到一次。这10次测试误差的平均值就是我们的交叉验证得分。现在,如果我们将这个得分与模型的复杂度(这里是多项式阶数 ddd)作图,一个优美且几乎普遍的模式便会浮现:一条​​U形曲线​​。

  • 对于非常简单的模型(低 ddd),误差很高。模型偏差太大,无法捕捉到底层的曲线趋势。
  • 随着我们增加复杂度,误差下降。模型越来越能拟合真实的信号。
  • 但在某个点之后,误差又开始上升!模型变得过于灵活,开始拟合训练折中的随机噪声。方差开始占主导地位。

这个‘U’形的底部就是最佳点。这是在未见数据上预期性能最好的模型,是达到偏差和方差最佳平衡的模型。

这个想法是如此基础,以至于它不仅仅是一个计算技巧;它有深刻的数学基础。考虑一种叫做留一法交叉验证(LOOCV)的方法,即你在除了一个数据点之外的所有数据点上训练模型,然后在那单个点上测试,并对数据集中的每个点重复此过程。这听起来效率极低,但对于某些类型的模型,有一个惊人优雅的捷径。对于一个线性模型,例如一个预测工程学中受载悬臂梁尖端位移的模型,我们可以在完全不重新训练的情况下计算任何数据点的LOOCV误差 ``。这个神奇的公式是: LOO Errori=(Ordinary Residuali1−Leveragei)2\text{LOO Error}_i = \left( \frac{\text{Ordinary Residual}_i}{1 - \text{Leverage}_i} \right)^2LOO Errori​=(1−Leveragei​Ordinary Residuali​​)2 这个方程式揭示了一些深刻的东西:如果你没有在某个点上训练,你在这个点上会犯的错误,仅仅是它正常的预测误差,被一个与其“杠杆作用”相关的因子放大了——杠杆作用是衡量该数据点输入有多不寻常或多有影响力的一个指标。这是一个数学证明,证明了我们的直觉,即我们的模型将最难预测那些它们未曾见过的离群值和“奇怪”案例。这是统计直觉与严谨数学统一的美丽篇章。

简约原则:惩罚复杂度

通过找到交叉验证‘U’形曲线的底部来选择模型是一个强大的策略。但还有另一种,也许更优雅的方法:​​正则化​​。我们不是构建一整个具有不同复杂度的模型家族然后挑选最好的一个,而是可以采用一个单一的、高度复杂的模型,并“驯服”它。我们通过改变对“好”模型的定义来做到这一点。

我们修改了我们的目标。我们不再只寻求最小化训练数据上的误差。相反,我们最小化一个包含两部分的组合目标函数:误差,以及一个对过于复杂的惩罚。 Total Cost=Data Mismatch Error+α×Model Complexity\text{Total Cost} = \text{Data Mismatch Error} + \alpha \times \text{Model Complexity}Total Cost=Data Mismatch Error+α×Model Complexity 参数 α\alphaα 是一个调节旋钮,决定了我们对简单性的重视程度。这是奥卡姆剃刀的数学体现:在所有其他条件相同的情况下,最简单的解释是最好的。

这个单一、统一的原则在科学和工程的无数形式中出现。一位生物学家训练一个决策树来根据基因表达数据预测癌症表型,他可能会将复杂度定义为其树中的“问题”(或分支)数量 。一棵巨大、繁茂的树可能完美拟合训练数据,但很可能[过拟合](/sciencepedia/feynman/keyword/overfitting)了。通过为每个分支增加一个惩罚,他们可以“修剪”这棵树,只保留最稳健和信息量最大的决策点。这与一位基因组科学家试[图构建](/sciencepedia/feynman/keyword/graph_construction)一个预测性基因面板直接类似。他们可能不是使用全部20,000个基因,而是惩罚模型中包含的每个基因,迫使[算法](/sciencepedia/feynman/keyword/algorithm)只选择最必要和最具预测性的子集 。目标函数的形式是相同的。正则化是鼓励简单性和防止过拟合的通用语言。

贝叶斯联系:作为正则化器的先验

在这里,我们达到了现代统计学中最深刻和最美丽的联系之一。我们刚刚描述的作为增加惩罚项的频率派正则化思想,在贝叶斯推断的世界里有一个深刻而强大的对偶。在贝叶斯的观点中,正则化等同于在你看到数据之前陈述你对模型参数的​​先验信念​​。

让我们回到基因调控的世界,我们正在将一个基因的表达水平建模为各种转录因子活性的线性组合 ``。我们的模型有参数 βj\beta_jβj​,代表每个因子 jjj 的影响。一个常识性的出发点,或“先验信念”,可能是大多数因子可能几乎没有或完全没有影响。换句话说,βj\beta_jβj​ 参数可能很小并且集中在零附近。我们可以通过在每个 βj\beta_jβj​ 上放置一个高斯(钟形曲线)先验来形式化这个信念。

当我们使用贝叶斯定理将这个先验信念与我们的数据结合起来时,我们寻求​​最大后验​​(MAP)估计——即在给定我们的数据和我们的先验的情况下最合理的参数集。事实证明,找到这个MAP估计在数学上等同于最小化一个正则化成本函数! ∥y−Xβ∥22⏟Data Mismatch (Least Squares)+λ∥β∥22⏟Penalty on Complexity\underbrace{\lVert y - X \beta \rVert_{2}^{2}}_{\text{Data Mismatch (Least Squares)}} + \underbrace{\lambda \lVert \beta \rVert_{2}^{2}}_{\text{Penalty on Complexity}}Data Mismatch (Least Squares)∥y−Xβ∥22​​​+Penalty on Complexityλ∥β∥22​​​ 参数上的高斯先验等同于一个​​L2正则化​​惩罚(也称为​​岭​​惩罚),它惩罚参数值的平方和。我们先验钟形曲线的宽度(τ2\tau^2τ2)与惩罚的强度(λ=σ2/τ2\lambda = \sigma^2 / \tau^2λ=σ2/τ2)成反比。一个窄的先验(强烈相信参数接近于零)对应于一个大的惩罚,强制对参数进行强烈的“收缩”使其趋向于零。

这不仅仅是一个哲学上的好奇心;它非常实用。在许多现代生物学问题中,我们处于一个“高维”状态,我们的特征(例如,p=20,000p=20,000p=20,000个基因)远远多于样本(例如,n=100n=100n=100个病人) 。在这个 $p > n$ 的世界里,标准的[最小二乘法](/sciencepedia/feynman/keyword/method_of_least_squares)完全失效——存在无限多个“完美”解。正则化,无论是被看作一个惩罚还是一个先验,都增加了必要约束,使问题变得适定并产生一个唯一的、稳定的解 。正是它使得许多现代基因组学和数据科学成为可能。

这种贝叶斯视角为更复杂的正则化形式打开了大门。如果我们使用不同的先验呢?一个拉普拉斯先验(看起来像两个背对背连接的指数尾)对应于一个​​L1正则化​​惩罚(​​LASSO​​),它以能将许多参数驱动到恰好为零而闻名,从而执行自动特征选择。或者,在像进化生物学中那些真正复杂的模型里,我们可以使用​​层次化先验​​ ``。想象一下我们有几个想要估计的隐藏进化速率。我们可以建立一个模型,假设所有这些速率都来自某个共同的、总体的分布。这“捆绑”了参数,使得数据很少的类别可以从数据较多的类别中“借力”。这是一种自适应正则化,数据本身告诉模型应该多大程度上收缩参数和强制简化。

现代前沿与最后的警告

交叉验证和正则化的原则是永恒的,但它们的化身在不断演变。在深度学习的世界里,最有效的正则化形式之一是​​数据增强​​。当我们训练一个图像分类器时,我们不只是给它看原始图像。我们给它看轻微旋转、裁剪、增亮或翻转的版本。这不仅仅是获得“更多”数据的一种方式。它是一种深刻的正则化形式 ``。我们正在明确地教模型不要关心什么。我们正在植入先验知识,即一个物体的身份(例如,一只猫)对于这些无关紧要的变换是不变的。

我们甚至可以更聪明地应用这种正则化。就像你不会用高等微积分来开始一个孩子的教育一样,从训练的第一步就用极端的数据增强来冲击一个神经网络可能适得其反。一个现代的想法是​​课程学习​​,即增强的严重性随着时间的推移而逐渐增加。我们从低严重性开始,让模型稳定地学习基本模式,然后提高难度,迫使它变得更稳健,对噪声更不敏感 ``。最佳的计划表通常遵循一条凸形的、加速的曲线,这反映了我们在任何复杂领域中建立专业知识的方式。

最后,我们必须以一个警告结束,这是一条支撑我们所讨论的一切的科学诚信原则:​​测试集的神圣性​​。交叉验证的全部威力都依赖于测试集是真正未曾见过的。如果你用你的验证数据来调整模型的超参数(如多项式阶数 ddd 或正则化强度 α\alphaα),然后报告在该相同验证数据上的性能,你报告的性能将会有乐观的偏差 ``。你在学习的时候偷看了期末考试的答案。

严谨的解决方案是在我们划分数据的方式上更加自律。人们可能使用三向划分:一个​​训练集​​来拟合模型,一个​​验证集​​来调整超参数和选择模型,以及一个最后的、只用一次的​​测试集​​来获得对真实世界性能的无偏估计。更好的方法是一种称为​​嵌套交叉验证​​的程序,其中整个模型选择过程被嵌套在一个外部交叉验证循环中,以估计整个流程的真实泛化误差 。像**[交叉](/sciencepedia/feynman/keyword/decussation)拟合**这样的聪明方法也应用了同样的原则,确保复杂分析的不同阶段(如估计权重然后在线性回归中使用它们)在数据的不同分区上执行,以避免偏差 。

这些程序可能看起来复杂,但它们都服务于一个简单而至关重要的目的:确保我们的模型不仅仅是在记忆过去,而是在真正学习可泛化的原则。它们是让我们从完美的幻象走向虽然混乱但诚实的知识追求的工具。

应用与跨学科联系

有一个著名的故事,从Lewis Carroll到Jorge Luis Borges的作家都讲述过,说的是一个帝国如此痴迷于制图的精确性,以至于它的制图师们创造了一幅一比一比例的领土地图。这幅地图是一件完美而无用的杰作。它完美地描述了它所覆盖的土地,但它无法告诉你任何其他地方的情况,而且它笨重到甚至无法展开。这就是过拟合的悖论。一个能够解释它所见过的数据的每一个细节——每一个特质、每一个随机波动、每一个噪声——的模型,是一个没有学到任何实质性东西的模型。它记住了某一次特定考试的答案,并因此对学科本身变得全然无知。

这个挑战并非计算机科学中某个深奥的角落。这是一个深刻而普遍的问题,每当我们试图从有限的经验中进行泛化时,都会面临它。它是现代科学机器中的一个幽灵。无论我们建立一个蛋白质、一颗恒星、一座桥梁还是一个生物细胞的模型,我们都必须面对这个恶魔。我们如何确保我们的模型捕捉到的是一个普遍的真理,而不仅仅是我们特定数据集的偶然细节?事实证明,答案在于一系列跨越学科的美妙思想,从物理学的硬约束到科学方法的严谨逻辑。

“新”的定义:泛化的症结所在

防止过拟合的第一道防线看似简单:我们必须在模型从未见过的数据上测试它。但“未见过”究竟意味着什么?这个问题的答案不是统计学的,而是科学的。它完全取决于我们试图解决的问题的性质。

想象一下,我们正在教一台机器根据蛋白质的氨基酸序列预测其三维结构。这是生物学中的一个巨大挑战。我们在数千个已知的蛋白质结构上训练我们的深度神经网络。为了测试它,我们可以随机保留一些序列。我们的模型可能会达到惊人的90%的准确率!我们可能会忍不住庆祝。但我们进行的是有意义的测试吗?在蛋白质的世界里,序列通过进化而相互关联,分组为家族。一个“随机”的划分几乎肯定会将来自同一家族的蛋白质同时放入训练集和测试集。我们的模型可能根本没有学会蛋白质折叠的微妙生物物理规则;它可能只是学会了识别它已经见过的蛋白质的近亲。

这里真正的泛化测试是问:模型能否预测一个它从未遇到过的全新家族的蛋白质结构?当我们这样构建我们的测试集时——通过确保与训练集的序列同一性较低——准确率可能会骤降至68%。高训练准确率与这个低得多、更现实的测试准确率之间的巨大差距,是过拟合明确无误的标志。我们的模型记住了特定家族的特征,而不是折叠的一般原则。“随机划分”是一个令人安慰的幻觉;“聚类划分”才是艰难的、科学的真相 ``。

我们在一个完全不同的领域看到了同样的故事:自动语音识别。假设我们训练一个模型来转录口语。如果我们在由训练数据中的人说出的新句子上测试它,它可能会表现得非常出色。但如果我们在它从未听过的说话者上测试它,其性能可能会显著下降。模型在追求最小化错误的过程中,可能已经过拟合了训练说话者独特的音高、节奏和口音,将这些个人特质误认为是语言的基本属性。同样,科学家必须决定泛化的含义:目标是为特定的人构建一个更好的转录器,还是一个对任何人都有效的转录器?测试必须与目标相匹配 ``。

在这两种情况下,教训是相同的。科学家必须充当自己模型最尖锐的批评者。他们必须设计能够探测模型最深层假设的测试,最有可能揭示其失败的测试。因为只有通过寻找失败,我们才能对成功获得信心。

作为物理直觉的正则化:编码我们所知的真理

当一个模型过拟合时,它产生的解不仅是错误的,而且常常是物理上荒谬的。防止这种情况的一个强有力的方法是教给模型一些基本的物理知识。这就是许多正则化技术的精髓:它们不仅仅是让数字表现良好的数学技巧,而且常常是编码我们关于世界如何运作的先验知识的深刻方式。

考虑结构生物学领域,科学家们使用低温电子显微镜(cryo-EM)来创建分子的三维密度图。这些图像模糊且充满噪声,就像一张模糊的照片。任务是建立一个能放入这张图中的原子模型。如果我们指示计算机简单地寻找最能拟合模糊密度图中每一个角落和缝隙的模型,我们就会得到一场灾难。模型会追逐噪声,导致一个具有不可能的键长、扭曲的键角和处于物理上荒谬位置的原子的结构。它对图的噪声过拟合了。

但是我们知道关于蛋白质的事情。我们知道碳-碳键有特定的长度。我们知道肽键是平面的。这是一百年化学知识的结晶。我们可以将这些知识编码为“立体化学约束”,即模型目标函数中的数学惩罚项。我们告诉模型:“找到一个拟合密度图的结构,但在这样做的时候,你不能违反化学的基本定律。”这种约束,这种正则化,将模型从噪声的细节中拉回,引向一个物理上合理的解。这是一个在面对不确定性时,使用已建立的科学原则来指导推断的优美范例 ``。

这个想法在各个科学领域都有回响。

  • 当工程师根据振动测量更新一座桥梁的有限元模型时,一个天真的优化可能会建议某个钢梁具有负刚度——这在物理上是不可能的。为了防止这种情况,他们添加了正则化。他们可以施加硬约束,例如强制所有刚度参数为正。他们还可以添加“平滑度”惩罚,这反映了物理直觉,即连续梁的属性不应从一点到下一点发生剧烈变化(除非有裂缝,在这种情况下需要另一种正则化,如总变差!)``。
  • 当化学家模拟别洛乌索夫-扎鲍廷斯基反应的复杂振荡时,一个过度参数化的模型可能会为了拟合噪声数据而产生各种奇异的假象。最强大的正则化器是自然法则本身。我们可以强制模型遵守质量守恒,保持浓度非负,并确保熵产生始终为正,以符合热力学第二定律。这些不是任意的惩罚;它们是不可侵犯的物理真理,它们限制了可能解的宇宙,并防止模型陷入幻想 ``。

在所有这些情况下,正则化被揭示出来,它不仅仅是一个统计设备,而是一种为我们的模型注入一点常识,或者更确切地说,是物理学和化学积累的常识的方式。

复杂性的危险:驯服多头蛇

有时,敌人不是缺乏物理直觉,而是模型本身压倒性的复杂性。当我们允许我们的模型有太多的自由参数——太多的“灵活性”——它们就会变成一个多头蛇,每个头都试图拟合一块不同的噪声。

这是现代进化生物学中一个常见的头痛问题。为了理解物种是如何相关的,科学家们构建系统发育树,并模拟DNA序列是如何沿着分支进化的。一个简单的模型可能会假设进化过程在整个树上都是相同的。但如果不是呢?我们可以提出一个高度复杂的模型,其中生命之树的每一个分支都有其独特的进化过程,有其自己的一套参数。这导致了参数的爆炸性增长。对于树上一个代表少量进化时间的短分支,几乎没有数据来可靠地估计这些参数。模型将不可避免地对发生在该分支上的少数随机突变过拟合。

解决方案不是放弃并回到简单的模型,而是要更聪明一些。我们不是假设每个分支的参数都是完全独立的,而是可以使用一个层次化模型。我们假设所有分支特定的参数本身都来自某个全局的、总体的分布。这个框架允许参数在不同分支间变化,但它会温和地将数据贫乏分支的估计“收缩”回全局平均值。这是一种统计上谦逊的方法,它说:“允许复杂性,但要持怀疑态度。除非数据提供了压倒性的证据,否则不要相信在一个微小分支上存在一个极其不寻常的进化过程。”这种在整个树上借用统计力量的方法是一种强大的正则化形式,它驯服了参数这只多头蛇 。

我们在结构生物学的另一个领域也发现了类似的原理:低温电子断层扫描(cryo-ET)。在这里,科学家们平均数千张极其嘈杂的分子三维图像以获得清晰的图像。一个关键的挑战是每个分子都处于不同的方向。如果我们给对齐算法完全的自由,它可能会迷失方向,开始将噪声与噪声对齐。但如果我们有先验知识——例如,从独立的实验中,我们知道分子具有六重对称性——我们就可以施加这个约束。通过告诉算法强制执行这种对称性,我们大大减少了它需要求解的自由参数的数量。这个约束作为一个强大的正则化器,有效地提高了信噪比,并防止模型迷失在噪声的细节中 ``。

作为真理冒名顶替者的过拟合

也许过拟合最大的危险在于它能创造出引人入胜的幻觉。它可能导致我们宣称发现了一种新的科学现象,而实际上,我们只是在我们自己数据集的噪声中发现了一个奇特的模式。这将我们从预测领域带到了因果推断领域,这里的风险最高。

考虑一项流行病学研究,调查一种营养暴露是否会导致一种模仿已知遗传病的疾病(“表型模拟”)。一个研究团队可能会在他们的数据集上使用一个强大、灵活的机器学习模型,并发现一个强烈的统计关联。他们可能会宣称他们发现了一种疾病的环境原因。然而,他们的发现可能完全是一个幻影。如果他们使用相同的数据集来选择模型的重要变量并评估模型的最终性能,他们就已经掉入了过拟合的陷阱。

此外,数据收集方式中的微妙偏差可能会产生虚假的关联。如果服用营养补充剂的人和患有该疾病的人都更有可能参与研究,这种“选择偏差”即使在普通人群中两者之间不存在任何联系,也可以创造出两者之间的统计联系。这是一种“对撞机偏倚”,是因果推断中一个臭名昭著的陷阱。一个过度热情的模型,如果被赋予寻找任何模式的自由,将很乐意发现这种虚假关联并将其呈现为真理 ``。

我们如何保护自己免受这些冒名顶替者的侵害?答案在于方法论的严谨性,这是科学方法的基石。

  1. ​​严格的数据分离:​​ 模型的性能必须在真正从模型构建过程的任何部分(包括初始特征选择)中分离出来的数据上进行评估。这可以通过一个完全独立的测试集,或者通过像嵌套交叉验证这样模拟这种分离的严谨协议来实现 。
  2. ​​零假设检验:​​ 我们可以使用置换检验。通过随机打乱我们数据集中的结果标签,我们切断了与预测变量的任何真实关系。如果我们的完整建模流程在这些打乱的数据上运行时,仍然频繁报告“显著”的发现,我们就知道我们的流程是有缺陷的,容易发现不存在的东西 ``。
  3. ​​简约性与模型选择:​​ 我们可以使用像赤池信息准则(AIC)或贝叶斯信息准则(BIC)这样的工具。这些形式主义不仅奖励模型对数据的拟合优度,还会减去一个对模型复杂度的惩罚。它们强制执行奥卡姆剃刀原则,迫使更复杂的模型证明其价值。它必须能更好地解释数据,以至于其解释力足以克服对其自身复杂度的惩罚。这为在相互竞争的科学叙事之间做出选择提供了一种有原则的方法,例如一个性状是最初的适应还是后来的外适应,从而防止我们总是倾向于更复杂故事的诱惑 [@problem_-id:2712149]。

归根结底,对抗过拟合的战斗就是捍卫科学诚信的战斗。这是一门区分我们真正学到的知识和我们仅仅记住的东西的学科。它要求我们诚实面对我们数据的局限性,将我们对世界的知识融入到我们的模型中,并将我们的结论置于严谨、独立的验证之火中考验。机器中的幽灵永远存在,但通过理解它的本性,我们学会了如何将其拒之门外。