Skip to content

自由度——统计学里你只剩这么点自由了 ​

我问你一个很简单的问题:三个数的平均数是10。前两个数是8和12,第三个数是多少?

10。对吧。

你没"选"第三个数——你被平均数和前两个数共同决定了。你只有两个自由数,第三个是被锁死的。

这就是自由度。

在一个有约束的系统里,你还能自由变化的维度,叫自由度。

统计学里几乎每个重要公式都跟它有关——但你翻十本教科书,可能找不到一个能用人话解释它的人。


01 为什么是n-1,不是n ​

你第一次遇到自由度,大概率是在学样本方差的时候。

(样本方差)=∑i=1n(xi−x¯)2n−1

教科书会说:因为无偏估计,所以要除以n-1。你点点头,记下来,做题,过了。

但"无偏估计"四个字遮盖了一个更深的问题:为什么在算方差之前,你先算了一个平均数?

每算一个平均数,你就消耗了一个自由度。

你有n个数。你先算了它们的平均数——这花掉了"一个独立信息的额度"。剩下能自由变动的,只有n-1个数了。当你用这n个数算方差的时候,它们其实已经不是n个完全独立的数了——它们有一个共同的身份:它们的平均数是我告诉你的那个。

你每估计一个参数,就损失一个自由度的信息。 这个损失不是技术缺陷,是数学的底层规则——就像你不能既知道一件事的结果、又假装不知道。


02 一个参数 = 一份代价 ​

自由度不是一个抽象概念。它是一个严格的记账系统。

每个模型的参数数量,就是它消耗的自由度数量。

模型参数数消耗的自由度
简单平均11
线性回归(2个变量)3(截距+2系数)3
线性回归(10个变量)1111
神经网络成千上万成千上万

你只有n个数据点。每一个参数都在花你的预算。剩余的自由度是多少?

剩余自由度 = 样本量 - 参数数

剩下的自由度去哪了?用来估计误差、计算标准误、做统计推断。你剩下的自由度越少,你对自己估计的"信心"就越弱——因为没有足够多的信息来确认这个估计到底准不准。


03 过拟合就是预算超支 ​

过拟合在说什么?

你有100个数据点。你建了一个有95个参数的模型。

剩余自由度 = 100 - 95 = 5

只剩5个自由度来估计误差。你的模型几乎记住了每一个数据点——它包括信号,也包括噪声。你在测试集上表现很差,不是因为你的模型错了,是因为你把预算全花在了拟合训练集上,没有留钱做验证。

你以为自己在建一个复杂的、聪明的模型。实际上你在把数据背下来。

数据科学里最反直觉的一件事:如果我能用一个参数解决一个100样本的问题,我可能比用50个参数的人更懂这组数据。


04 自由度是一面镜子 ​

自由度这个框架可以回答很多"数据从业者的深夜问题":

为什么模型在训练集上表现完美,一上线就崩?

因为你把自由度花光了。你的模型有记忆,没有理解。

为什么同一套数据,有的人用简单模型比你用复杂模型效果还好?

因为他剩下的自由度比你多。他留了预算给对误差的估计。

为什么统计学家警告不要"数据挖掘"?

因为每一次你看着数据调整模型,都在消耗隐形的自由度。你以为是数据告诉你的规律,其实是你看着数据挤出来的答案。

这最后一个问题,有一个专门的名字:数据窥视。你在决定"加哪个特征"的时候看了数据——这本身就在消耗自由度。你只是在用肉眼代替算法做特征选择,你的自由度消耗没有被计数。


05 自由 vs 准确 ​

这是最核心的哲学问题。

自由度是零和的。你多估计一个参数,就少一份自由来评估误差。你追求模型的复杂度和灵活性,你就牺牲了对模型精度的判断力。

你不能同时拥有自由和确定性。

这跟人生里的很多问题一模一样。你越自由——选择越多、变量越多——你越难确定你的选择对不对。你越确定——规则越严格、变量越少——你越不自由。

自由度不是一个统计概念。它是一个关于"选择与约束"的最基本事实。

你知道的越多,你能自由发挥的就越少。这不是悲伤的事。这是数学在告诉你:每一次学习,本质上都是在用自由换确定。


下次你在代码里看到n-1的时候,可以停一秒。那个1不是数学家的强迫症,是一笔账——你已经花掉了一个独立信息的代价,来知道那组数据的平均值。

关注公众号:QIAN数据