原文:https://machinelearningmastery.com/degrees-of-freedom-in-machine-learning/
最后更新于 2020 年 8 月 19 日
自由度是统计学和工程学中的一个重要概念。
它通常用于总结统计计算中使用的值的数量,如样本统计或统计假设检验。
在机器学习中,自由度可以指模型中的参数数量,例如线性回归模型中的系数数量或深度学习神经网络中的权重数量。
令人担忧的是,如果机器学习中有更多的自由度(模型参数),那么模型将会过度训练训练数据集。这是统计学上的共识。这种期望可以通过使用正则化技术来克服,例如正则化线性回归和适用于深度学习神经网络模型的一套正则化方法。
在这篇文章中,你将发现统计学和机器学习的自由度。
看完这篇文章,你会知道:
- 自由度通常代表系统控制点的数量。
- 在统计学中,自由度是用于计算统计量的观测值的数量。
- 在机器学习中,自由度是模型的参数数量。
用我的新书机器学习统计启动你的项目,包括分步教程和所有示例的 Python 源代码文件。
我们开始吧。
机器学习自由度的温和介绍 图片由达维宁提供,保留部分权利。
本教程分为三个部分;它们是:
- 自由度
- 统计学中的自由度
- 机器学习中的自由度
- 线性回归模型的自由度
- 线性回归误差的自由度
- 线性回归的总自由度
- 负自由度
- 自由度和过拟合
自由度表示系统、模型或计算的控制点数量。
每个可以改变的独立参数都是 d 维空间中的一个独立维度,它定义了可能影响系统的值的范围,其中特定的观察值或指定值是该空间中的单个点。
数学上,自由度通常用希腊字母 nu 来表示,看起来像小写的“v”。
它也可以缩写为“d.o.f”、“dof”、“d.f”或简称为“df”。
自由度是统计学和工程学中的一个术语,可以用在机器学习中。
在统计学中,自由度是用于计算可以改变的统计量的值的数量。
自由度:粗略地说,计算一个统计数据所需的最小数据量。更实际地说,它是一个或多个数字,用于估计数据集中的观测值数量,以确定统计显著性。
—第 60 页,简写统计,2010 年第 3 版。
它的计算方法是计算统计数据时使用的独立值的数量减去计算的统计数据的数量。
- 自由度=独立值的数量–统计数据的数量
例如,我们可能有 50 个独立样本,我们希望计算样本的统计量,如平均值。计算中使用了所有 50 个样本,并且有一个统计量,因此在这种情况下,平均值的自由度计算如下:
- 自由度=独立值的数量–统计数据的数量
- 自由度= 50–1
- 自由度= 49
自由度通常是数据分布和统计假设检验的重要考虑因素。例如,过去常见的是为不同的公共自由度计算统计测试临界值的表格(在直接计算统计数据之前是容易和常见的)。
到目前为止,一切都很好,但是一个适合数据的模型呢,比如在机器学习中?
在预测建模中,自由度通常是指模型中根据数据估计的参数数量。
这也可以包括模型的系数和用于计算模型误差的数据。
理解这一点的最佳案例是线性回归模型。
考虑具有两个输入变量的数据集的线性回归模型。
对于每个输入变量,我们需要模型中的一个系数,例如,模型将有两个参数。
该模型如下图所示,其中 x1 和 x2 为输入变量,β1和β2为模型参数。
- yhat = x1 * beta1 + x2 * beta2
这个线性回归模型有两个自由度,因为模型中有两个参数必须从训练数据集中进行估计。向数据中多添加一列(多一个输入变量)将为模型增加一个自由度。
- 模型自由度=根据数据估计的参数数量
根据拟合参数的数量来描述模型拟合的复杂性是很常见的。
例如,具有两个参数的线性回归模型的复杂度等于自由度,在这种情况下是 2。与高复杂度模型相比,我们通常更喜欢低复杂度模型。更简单的模型概括得更好。
自由度是对模型估计了多少参数的一种计算,并且,通过扩展,是对线性回归模型复杂性的一种度量。
—第 71 页,应用预测建模,2013 年。
还没有结束。
训练示例的数量很重要,并且影响回归模型的总体自由度。
考虑使用具有 100 行或示例的训练数据集拟合线性回归模型的系数。
通过最小化模型预测和预期输出值之间的误差来拟合模型。对于训练数据集中的每个示例,模型的总误差为一个自由度减去从数据中估计的参数数量。
在这种情况下,模型误差为 100 减去模型的 2 个参数,即 98 个自由度。
- 模型误差自由度=观测值数量–参数数量
- 模型误差自由度= 100–2
- 模型误差自由度= 98
像线性回归一样,报告线性模型的误差,包括误差的自由度,通常是很好的做法。
至少,可以包括训练数据中的观测数,从而可以确定模型误差自由度。
线性回归模型的总自由度被视为模型自由度加上模型误差自由度的总和。
- 线性回归自由度=模型自由度+模型误差自由度
- 线性回归自由度= 2 + 98
- 线性回归自由度= 100
通常,自由度等于用于拟合模型的训练数据的行数。
像以前一样考虑一个有 100 行数据的数据集,但是现在我们有 70 个输入变量。
这意味着模型有 70 个系数或参数适合数据。因此,模型误差为 100–70,或 30 个自由度。
模型的总自由度仍然等于行数,即 70 + 30。
当数据的列数多于行数时会发生什么?
例如,我们可能有 100 行数据和 10,000 个变量,例如 100 个患者的基因标记。
因此,线性回归模型将有 10,000 个参数,这意味着模型将有 10,000 个自由度。
我们可以如下计算模型误差自由度:
- 模型误差自由度=观测值数量–参数数量
- 模型误差自由度= 100–10,000
- 模型误差自由度= -9,900
哦哦。
我们可以计算总自由度如下:
- 线性回归自由度=模型自由度+模型误差自由度
- 线性回归自由度= 10,000±9,900
- 线性回归自由度= 100
模型总共有 100 个自由度,但模型误差为负自由度。
负自由度是有效的。
这表明我们有更多的统计数据,而不是可以改变的价值观。在这种情况下,模型中的参数比训练模型的数据行或观测值多。
这就是所谓的 p > > n 或者比我们采样的 n 有更多的预测因子 p 。
问题是,当我们的参数比观测值多时,就有过度拟合训练数据集的风险。
如果我们将模型中的每个系数视为一个控制点,这是直观的。如果模型中的控制点比观察点多,理论上我们可以配置模型来正确准确地预测训练数据集。以在新数据上表现良好为代价来学习训练数据集的细节就是过拟合的定义。
这是统计学家对深度学习神经网络模型的普遍关注。
也就是说,深度学习模型的参数(模型权重)通常比样本(例如数十亿个权重)多得多,使用我们对线性模型的理解,预计会过度拟合。
然而,通过仔细选择模型结构和正则化技术,可以防止它们过度拟合并保持较低的泛化误差。
此外,在深度模型中,有效自由度可以与模型中的参数数量解耦。
我们表明,对于简单的分类模型,自由度等于模型中的参数数量。在深度网络中,自由度通常比模型中的参数数量少得多,深度网络的自由度往往更少。
——深度神经网络中的自由度,2016。
因此,统计学家和机器学习从业者越来越倾向于放弃自由度,因为自由度既是模型复杂性的代表,也是过度拟合的预期。
对于大多数应用统计学家来说,拟合过程的自由度等同于其模型的复杂性,或者说它对数据的过度拟合能力。[……]我们认为,相反,模型的复杂性和自由度可能对应得很差。
——有效自由度:一个有缺陷的比喻,2013。
如果您想更深入地了解这个主题,本节将提供更多资源。
- 深度神经网络中的自由度,2016。
- 有效自由度:一个有缺陷的比喻,2013。
在这篇文章中,你发现了统计学和机器学习的自由度。
具体来说,您了解到:
- 自由度通常代表系统控制点的数量。
- 在统计学中,自由度是用于计算统计量的观测值的数量。
- 在机器学习中,自由度是模型的参数数量。
你有什么问题吗? 在下面的评论中提问,我会尽力回答。