趣投稿浅析机器学习中的自由度( 二 )


yhat = x1 * beta1 + x2 * beta2
该线性回归模型具有两个自由度 , 因为它有两个参数必须从训练数据集中估计得到 。 在数据中再增加一列(增加一个输入变量)将为模型增加一个度自由度 。
模型自由度 = 根据数据估算的参数数量
人们通常根据模型训练的参数数量来表达一个模型的复杂程度 。 例如 , 具有两个参数的线性回归模型的复杂度等于自由度 , 在这种情况下为2 。 相对于较高复杂度的模型 , 我们通常更喜欢较低复杂度的模型 。 简单的模型通常更有普适性 。
自由度是对模型估计多少参数的解释 , 也是对线性回归模型的复杂度的衡量
— P71 , 应用预测建模 (2013)
线性回归误差的自由度
训练集的数据量很重要 , 并且会影响回归模型的总体自由度 。
假设使用包含100个样本的训练集拟合线性回归模型的系数 , 通过最小化模型预测值与实际值之间的误差来拟合模型 。 考虑该模型的误差时 , 误差值对于模型训练集的每一个样本具有一个自由度 , 同时需要减去参数的个数 。
在这种情况下 , 模型误差的参数个数为100减2 , 即98个自由度 。

  • 误差自由度 = 样本数量 - 参数数量
  • 误差自由度 = 100 - 2
  • 误差自由度 = 98
在模型分析的报告中通常要提及线性模型的误差以及其误差自由度是有益的 , 或者至少可以汇报训练数据中的样本量 , 以便确定模型误差的自由度 。
线性回归的总体自由度
线回归模型的总体自由度就是模型自由度与模型误差自由度的和 。
  • 线性回归自由度 = 模型自由度+模型误差自由度
  • 线性回归自由度 = 2 + 98
  • 线性回归自由度 = 100
通常 , 自由度等于用于训练集的样本量 。 现在仍然考虑一个包含100个样本的数据集 , 但是假设现在我们有70个输入变量 。 这意味着该模型现在有70个拟合的参数 。 因此 , 模型误差将为30 (100 – 70 ) 自由度 。
而模型的总自由度仍等于样本量 , 即70 + 30 = 100 。
负自由度
当我们的数据集列多于行时会发生什么?
例如 , 我们可能有100行数据和10000个变量 , 例如100位患者的基因标记 。 这种情况下 , 线性回归模型将具有10000个参数 , 这意味着该模型将具有10000个自由度 。
我们可以如下计算模型误差的自由度:
  • 模型误差的自由度 = 样本量 – 参数量
  • 模型误差自由度 = 100 – 10000
  • 模型误差自由度 = -9900
我们可以如下计算总自由度:
  • 线性回归自由度 = 模型自由度 + 模型误差自由度
  • 线性回归自由度 = 10000 + (–9900)
  • 线性回归自由度 = 100
该模型仍具有100个总自由度 , 但是模型误差具有负的自由度 。 负自由度是有效的 。 这表明我们计算出的统计量多于我们有的变量 。 在这种情况下 , 模型中的参数要多于要训练集样本量 。 这就是所谓的p >> n , 即参数远大于样本量 。
自由度和过拟合
当我们的参数量比样本量大时 , 模型就存在过拟合训练集的风险 。 如果我们将模型中的每个系数都视为一个控制点就很容易理解 。 如果在模型中的控制点多于观察点 , 则理论上我们可以通过调参来百分百正确的预测实际值 。 过度学习训练集的细节 , 从而降低了准确预测新数据的性能 , 这就是过拟合的定义 。
统计学家们普遍担忧深度学习神经网络模型容易过拟合 。 深度学习模型通常有比样本量更多的参数(模型权重) 。 如果按照我们对线性模型的理解 , 这是很可能过拟合的 。 然而 , 通过仔细选择模型架构和采用正则化技术 , 可以防止它们过度拟合并保持较低的误差 。
此外 , 在深度模型中 , 有效自由度可以与模型中参数的数量分开讨论 。


推荐阅读