拟合得越好,越可能什么都没学到(A better fit is not a better model)
2026-08-29 · 方法与限度
一个模型对着已有数据拟合得越漂亮,它对明天说的话往往越不值钱。这不是修辞——它是一条可以画出来、也确实被画出来过的曲线。
每到年底,总有人把这一年的市场、这一年的公司、这一年的世界局势复盘一遍,讲得严丝合缝:因为那件事,所以这件事;因为这个结构,所以那个结果。你听完会觉得"确实是这样"。而同一批人在年初写下的预测,事后翻出来看,错得相当整齐。
这两件事同时成立,本身就是这一期要解释的现象:解释得通和猜得中不是同一种能力,甚至常常是互相拆台的。一个模型(或一套说辞)对着已经发生的事拟合得越紧,它能剩下多少对没发生的事的约束,就越少。
前面四十一期都在造工具:幂律、网络、临界、韧性、复杂度的度量。这一期是回头检查这些工具怎么用会用错。它不讲新机制,讲的是四道关卡——过拟合、事后叙事、"看起来像幂律"的统计误判、以及一个模型要怎样才算被真正检验过。第 43 期会接着问一个更大的问题:这门学科整体上被指控了什么。
先从最小的例子开始。你手上有八个点,想找出它们背后的规律。你可以画一条直线穿过它们中间,也可以画一条弯弯绕绕的曲线,让它恰好经过每一个点。
第二条曲线在这八个点上的误差是零。按"拟合得好"这个标准,它完胜。但如果你再去测第九个点,它多半会离那条弯曲线很远——远到还不如那条笨拙的直线。
原因不复杂:这八个点里既有真实的规律,也有测量误差、偶然波动、当天的心情。而模型不知道哪部分是哪部分。你给它足够的自由度(也就是足够多可以调的参数),它就会把误差也一并记住,当成规律。这叫过拟合(overfitting)。
物理学家冯·诺伊曼(John von Neumann)有一句被反复引用的话,据费曼的同事戴森转述:"给我四个参数,我能拟合出一头大象;给我五个,我还能让它甩鼻子。"这句话后来真的被人当成挑战做了出来——2010 年有篇论文用四个复数参数画出了一头可辨认的大象。参数不是知识,参数是自由度。
所以判断一个模型好不好,不能看它在已经用来调参的那批数据上表现如何。那批数据叫样本内(in-sample),它上面的误差只反映"你记住了多少"。真正有信息的是样本外(out-of-sample)——一批模型从未见过、也从未参与过任何调参的数据。把这两条误差画在同一张图上,事情就清楚了。
最要命的一点是:如果你只看蓝线,你会一直觉得自己在进步。过拟合没有痛感。它在发生的时候,所有指标都在变好。
任何模型上线前,留出一段从未参与过任何调参的数据,只在它上面报一次误差。而且这段数据要按时间切(拿最靠后的那一段),不要随机抽——随机抽会把同一天、同一批、同一个来源的样本分到两边,等于让模型偷看答案。如果你手上根本没有这样一段数据,那就不要报"准确率"这个数,报了也不成立。
EN With enough free parameters a model memorises noise as if it were signal — von Neumann's four-parameter elephant, later actually drawn. In-sample error falls monotonically with complexity; out-of-sample error is U-shaped. Google Flu Trends picked 45 search terms out of 50 million, fit history beautifully, then overshot the 2012–13 season by more than a factor of two.
上一节的参数是数字。而人做预测和复盘时用的不是数字,是词——"团队有韧性""领导果断""时机成熟""行业风口"。这些词有一个数字参数没有的性质:它们不要钱,数量也没有上限。
后果是直接的。既然可用的词无限多,那么无论结果是什么,你总能拼出一套顺畅的解释。而且用的往往是同一批事实。
把这张图和上一节的图叠起来看,就得到本期最有用的一句话:事后叙事是过拟合的极限情形。参数无限多、成本为零、误差恒等于零——它落在上一张图橙线的最右端,那里样本外误差最高。这不是比喻,这是同一条曲线上的同一个位置。
心理学上还有一个东西在给它加固:后见之明偏误(hindsight bias)。事情发生之后,人会真心实意地记错自己当初的判断,觉得"我早就觉得会这样"。所以你甚至意识不到自己在事后编——记忆已经替你把参数调好了。
那怎么区分一个真解释和一套顺畅的话?只有一个操作性的判据:解释必须提前排除某些结果。如果一套说法在结果相反的情况下同样成立,它的信息量就是零——不管它听起来多有道理。这就是"可证伪"(falsifiable)这个词在日常里的全部含义:不是"能被推翻"这个哲学姿态,而是"它事先划掉了哪些可能"。
把解释力和预测力分开记账,别让前者冒充后者。任何一套解释——公司的、市场的、别人行为的——先做一次反向测试:"如果结果是反的,这套说法还能不能同样顺畅地讲一遍?"能,就把它从决策依据里删掉,它只是让你舒服,不提供约束。剩下来那些做不到反向讲的,才是你真正学到的东西。
EN Verbal explanations have unlimited free parameters at zero cost, so any outcome — and its opposite — can be fitted from the same facts. Post-hoc narrative is therefore the limiting case of overfitting: zero in-sample error, maximal out-of-sample error. Hindsight bias hides the fitting from the fitter. The only operational test: would this account run just as smoothly if the outcome had been reversed?
本站前面反复出现过一条直线:把事件规模和出现频率都取对数(也就是画在双对数坐标上),很多现象会排成一条直线。这条直线叫幂律(power law) → 参考 · 幂律分布,它意味着没有"典型规模",大事件比直觉常见得多。
问题出在"看起来像"这三个字上。在双对数坐标下,人眼判断直线的能力差得离谱。对数把差异压扁了,一段缓慢弯曲的曲线看上去和直线几乎没区别。而好几种完全不同的分布画出来都是这个样子——最常见的竞争者是对数正态分布(log-normal,取对数之后变成钟形)和指数截断的幂律(尾巴到某处突然掉下去)。
更糟的是,常见的画法会制造直线。尾部的数据天然稀疏,如果你按等宽的区间去数每个区间里有几个事件,尾部那些区间大多是零零一一,画出来抖成一片,然后人就开始"看趋势"。(专业做法是画互补累积分布,也就是"大于等于 x 的事件占比",它不需要分箱,尾部要干净得多。)
2009 年,Aaron Clauset、Cosma Shalizi 和 Mark Newman 三个人把这件事系统化了,给出一套统一的检验流程(下文简称 CSN 流程),并用它重审了二十多个被广泛引用的"幂律"数据集。结论相当扫兴:只有少数几个能干净地通过,相当一部分根本无法和对数正态区分开。
这里要说清两个术语。最大似然法(maximum likelihood)就是"在所有可能的参数里,挑出让这批数据最不意外的那个";它比在双对数图上拉一条回归直线可靠得多,因为后者默认了每个点的误差一样大,而尾部的点显然不是。p 值(p-value)在这里的意思是:如果这批数据真的是幂律生成的,那么出现"偏离程度不小于我们实测到的这么大"的情况,概率有多少;概率很小,就说明幂律这个假设撑不住。
但真正值得琢磨的不是统计,而是:为什么大家这么想要那条直线?因为幂律不只是一个分布形状,它在本站前面几期里一直挂着机制故事——自组织临界、优先连接、分形。宣称幂律,等于顺手宣称了那个机制。而在决策层面,幂律和对数正态的区别其实小得多:两者都是重尾(heavy-tailed),都意味着均值不可靠、尾部风险被低估、不能拿历史平均值定杠杆。所以人们坚持要"幂律"这两个字,往往不是因为决策需要它,是因为故事需要它。
下次想说"这是幂律"时,先做一次降级测试:把这句话改成"这是重尾",你的决策会变吗?绝大多数时候不会变——那就说"重尾",这个更弱的断言你有证据支持。只有当你确实要靠幂指数 α 的具体数值做事(比如推断某个机制、外推尾部概率),才值得跑完整套 CSN 流程,并且必须一起报出 x_min ——因为 α 是可以靠挪动 x_min 调出来的。
EN On log-log axes the eye cannot separate a power law from a log-normal or an exponentially truncated tail, and equal-width binning manufactures straight lines out of sparse tails. Clauset, Shalizi and Newman (2009) gave a five-step test and found that only a minority of widely cited datasets survive it. Note also what is at stake: for most decisions "heavy-tailed" carries the same implications, so insisting on "power law" is usually the mechanism story talking, not the decision.
前三节都在拆。这一节说建设性的那半:一个关于复杂系统的模型,究竟怎样才算被真正检验过?
复杂系统的预测大多不是"明天是多少",而是"多大可能"。而"多大可能"这种话,单看一次是没法判对错的——你说明天 70% 下雨,结果没下,这不能算你错。但看一百次就能判。在你说过 70% 的那一百天里,如果只有三十天真下了雨,那你说的就不是概率,是修辞。
这个性质叫校准(calibration):你给出的概率,在长期频率上要兑现。它可以画成一张图——横轴是你说的概率,纵轴是那些日子里实际发生的比例。完美校准就是那条对角线。
而复杂系统里"多大可能"这个数是怎么算出来的?主流做法是集合模拟(ensemble simulation):既然初始条件测不准、模型也不完美,那就不要只跑一遍。把初始状态做上百次微小扰动,每次都跑一遍,看这些轨迹散得多开 → 参考 · 蒙特卡罗与集合模拟。散得窄,就是这次可以说得比较肯定;散得宽,就该说不确定——宽度本身就是预报的一部分,不是预报的瑕疵。
把校准做成产业的,目前基本只有天气预报一家。原因不神秘:它每天都被记分。预报发布,第二天真相揭晓,成千上万次积累下来,可靠性图自然就画出来了。业内还有一个专门的分数叫 Brier 分数(Brier score,1950 年由 Glenn Brier 提出):把每次"你说的概率"和"实际发生与否(1 或 0)"的差取平方再平均,越小越好。它有一个漂亮的性质——可以精确拆成"校准得好不好"和"分辨力强不强"两部分。说得准和说得有内容是两件事:天天说 50% 的人校准可能不差,但毫无分辨力。
这也顺带说清了为什么本站前面那些机制模型很少给出"准确率"这个数:它们大多没有被记分的机会。而一旦有机会,就该去要。
汇报模型的时候,把失效条件和结论一起汇报——"这个结论依赖三个前提:A、B、C;其中 B 一旦不成立,结论反向"。没有这段话的模型汇报,读者无法判断该信到什么程度。第二件事:所有带概率的判断(你的、团队的、供应商的)都留档,攒够几十条就画一次可靠性图。这件事的成本是一个表格,收益是你第一次知道自己的"大概率"到底值多少。
EN Most complex-system forecasts are probabilistic, and a single probabilistic statement cannot be scored — a hundred of them can. Calibration means the 70% days rain about 70% of the time; a reliability diagram makes it visible, and the Brier score decomposes cleanly into calibration and resolution. Ensemble simulation produces the probability in the first place: perturb the initial state a hundred times and let the spread be the answer. Weather forecasting is the one field that industrialised this, for the boring reason that it is scored every single day.
前面四节都在要求模型接受检验。现在说反面:这套要求本身有几处会用错,而且用错的方式相当常见。
第一,不是所有模型都以预测为目的,拿预测精度去评价它们是用错了尺子。谢林的隔离模型 → 参考 · 谢林隔离模型 从来没打算预测任何一座城市的隔离程度,它证明的是一个充分性命题:非常温和的邻居偏好,足以产生高度隔离的格局,不需要谁抱有敌意。这个命题不靠拟合数据成立,靠的是它推翻了"看到隔离就说明有强烈歧视"这个默认推论。这类模型该被检验的不是准确率,而是三件事:前提有没有被偷偷加强、结论是不是真的从规则推出来的、以及换一批合理的参数会不会翻盘(也就是稳健性)。
第二,"所有模型都是错的,但有些是有用的"被滥用成了免责声明。这句话出自统计学家 George Box,他的原意是提醒你把力气花在"错得要紧不要紧"上——而不是给任何模型发一张通行证。这句话的正确用法是后面必须跟上两个具体的量:错在哪个方向(系统性地高估还是低估)、量级多大。说不出这两样,就说明这个模型压根没被检验过,那句话只是在提前挡住提问。
第三,校准在一次性事件上做不到。气候的百年演化、一次金融危机、一个国家的转型——这些事只发生一次,不存在"一百次里兑现了七十次"。所以第 4 节那套标准在这里直接失灵。能做的是替代品,而且要说清它们更弱:在已知的历史片段上能不能重现关键的定性行为(不是数值,是"有没有出现那个转折");换一批合理的参数结论会不会翻;以及事先写下一句"如果观察到 X,这个模型就完了"。这三样都比可靠性图弱,但比什么都不做强得多。
第四,过拟合有一个同样致命的镜像:过度简化。本期一路在批"参数太多",容易读成"越简单越好"——这是错的。上一张误差图的左半边同样在爬坡:一个漏掉了关键变量的模型不会因为简洁而变得安全,它只是把错误藏得更深。2008 年之前主流宏观经济模型的问题不是参数太多,恰恰相反:那一类被称为动态随机一般均衡模型(dynamic stochastic general equilibrium,缩写 DSGE)的框架里,普遍没有金融中介和杠杆这两个变量。真正的选择从来不是"简单还是复杂",是丢掉什么。
第五,样本外数据是消耗品。它只在"从未见过"的时候有效。你拿它评估了第一版模型,看到结果不满意,回去改一版再评估——从第二次开始,那批数据就已经通过你的手参与了调参,它不再是样本外的了。这就是公开排行榜和共用基准数据集的通病:整个社区在同一批测试数据上反复迭代,集体地、无人察觉地过拟合到了它上面。
给你手上每一个模型贴一个标签,标签只有三种:点预测(该报样本外误差)、概率预测(该报可靠性图,攒不够次数就明说"还没被检验过")、机制演示(该报前提和稳健性,不该报准确率)。贴错标签是本期所有陷阱里最省事也最常见的一个——用机制模型的口气去做点预测,或者用点预测的精度去嘲笑机制模型,都是同一个错误的两面。
EN Four caveats. Some models are sufficiency demonstrations, not predictors — Schelling's segregation model should be judged on premises and robustness, never on accuracy. "All models are wrong, but some are useful" is a demand for the direction and size of the error, not a licence. Calibration is impossible for one-off events, so weaker substitutes must be labelled as weaker. And the mirror image of overfitting is a model missing the variable that matters — pre-2008 DSGE frameworks generally had no financial intermediation at all. Finally, held-out data is consumable: reuse it and it quietly becomes in-sample.
剩下的恰恰是它最不像叙事的那部分:确定发生了什么、什么时候、谁在场、当时的人手上有哪些信息。这些是可以被新证据推翻的,因此携带信息。真正没信息的是那一层"因此他必然会那样做"的因果连缀。一个可用的判据:把这段历史讲给一个不知道结局的人听,他能不能排除掉某些结局?排不掉,那段就是叙事而不是史实。
因为金融数据的"新样本"极其昂贵:可用的历史就那么长,而且非平稳——制度、参与者、交易机制都在变,二十年前的样本外未必和今天同分布。更麻烦的是策略研究的社会性过拟合:全行业在同一段历史上试过无数种策略,能被发表和流传的天然是那些恰好拟合了这段历史的。所以在金融里,"这个策略回测很好"这句话的先验信息量比在其他领域还要低。
不一定,但它必须在某处承担风险。演化论对具体物种的演化路径预测力很弱,可它做了大量可被推翻的断言——化石出现的地层顺序、不同物种基因组的相似度排序。所以判据不是"能不能报数",是"有没有一类可观察的结果会让它出局"。说不出这类结果的模型,无论多精致,都还没进场。
一个常见的解释是代价不对称:在信息稀少、必须马上行动的处境里,一个错的因果故事往往比一片空白更划算——它至少给出一个可执行的动作。但这解释了它的起源,没有为它在今天的用法背书。值得注意的是,现代决策环境恰好把这个代价结构反过来了:数据不再稀少,行动也大多不必即刻。
目前几种做法都不完美:定期换新测试集(成本高,且旧结果不可比)、把测试集完全封存只允许提交一次(限制了迭代)、或者用只公布聚合结果的隐藏集。更根本的一条是记录"这批数据被查询过多少次"——因为过拟合的程度和查询次数直接相关,而这个次数在今天几乎从来没有人统计。