大数跨境
0
0

什么是自由度?-通俗理解版本

什么是自由度?-通俗理解版本 数据分析学习与实践
2025-06-03
2
导读:自由度是一个非常有意思的概念,一方面他是很多学科的公共概念,例如统计,线性代数,但每个学科都是一笔带过,似乎每

自由度是一个非常有意思的概念,一方面他是很多学科的公共概念,例如统计,线性代数,但每个学科都是一笔带过,似乎每个学科都默认另外一个学科已经把他讲明白了。另一方面,他没有一个特别定理性质的概念,当大家讨论的时候都在谈论他,没有人去穷究他的本质,有种“只可意会不可言传”的感觉,暗含的意思就是“你懂的“,似乎我说我不懂就破坏了这件“皇帝的新衣”。

上一篇为什么样本方差除以 n-1 而不是 n? ,我们要解决两个问题,本文讲清楚如何理解自由度的概念,下一篇给出样本方差公式的严格意义的证明。

在我们的学习中,不可避免地出现了方差和标准偏差这两个重要概念。这时,我们的老朋友   出现了,并被命名为 "degree of freedom"。 翻译成中文就是自由度

通常会有很多答案,有wiki百科也有知乎。

在这个回答中,我们必须计算数字组成的 Python list 的标准差,在配置参数的过程中,ddof 需要进行配置,也是本文的问题出发点。

np.std(some_python_list, ddof = 1)
  • 首先,自由度选择 0 还是 1?
  • 配置为 1 是否意味着我们只有 1 个自由度?
  • 我如何能够真正理解自由度?

当然,我们通常的方法是按图索骥,做的第一件事就是检查 Numpy std函数帮助部分,让我们来看看:

然后,你再寻找ddof 的关键词:

在这种情况下,它说得更具体,它说的是 Delta 自由度。总之......一点用都没有,对吧?

继续往下看,查看 "注释 "部分。

他还是没有解释什么是自由度!给我们的教训是,当我们使用数据科学的工具时,我们不会仅仅依靠工具的API文档就能获得更好的理解。你需要了解理论。换句话说,我们需要接受**适当的回炉。

这就是本文的开头。

我们将充分理解 "自由度 "这个看似简单的概念。此外,还会顺便理解在它的背后有很多数学概念,学习它的主要思想数学结构将对职业的长远发展大有裨益。

为了给自己一些动力,让我们知道为什么要开始这个看似复杂,其实一点也不简单的topic,当然是为了践行费曼学习方法。

读者会明白我在思考的时候脑子里在想些什么:

我该如何解释这个概念?什么才是通俗易懂的解释?足够通俗与优雅是本文追求的核心写作特点。因此,我认为这是**重要的。

同时也让大家看看对于大多数人来说,要为一个看似简单的话题找到一个**体面的答案是多么困难。

然后,我会告诉你,虽然统计学中出现过多次,但在统计学教科书中寻找答案都不能令人满意。他们的解释通常不够优雅,可能是因为以下原因之一:

  • 它们假定你已经知道了。例如,也许你学过线性代数,他们就认为你能回答自己的问题,你理应知道,因为这是数据科学的支柱之一。不过,对于 "同济大学"的学生来说,这可能的,因为只有他们能编出这种神书。
  • 他们不想浪费时间教你在这里要教的所有概念,否则,教科书会有一百万页。

然后,我们展示一些统计学和数据科学、机器学习方面的例子。这可能会告诉你,将数学课程中学到的知识应用到应用领域并不总是那么容易,只有足够理解才能熟练运用。

希望在你学习了这些数学概念后,每当df再次出现时,第一反应不是 dataframe的简写,而是自由度,你可以讲给你的读者听的知识点。

好了,我们开始吧。

我们也可以说,这个概念有一个非常简单的定义,事实上也确实如此:

这其实与 "自由度 "一词在其他领域的用法没什么不同。例如,假设你有四个变量:长方形的长、宽、面积和周长。你真的知道四个变量吗?不,因为只有两个自由度。如果你知道长和宽,就可以推导出面积和周长。知道了长和面积,就能推导出宽和周长。如果知道面积和周长,就可以推导出长度和宽度(直至旋转)。如果掌握了所有四个变量,就可以说这个系统是一致的(所有变量都相互一致),或者说是不一致的(实际上没有一个矩形能满足所有条件)。正方形是去掉了一个自由度的矩形;如果你知道正方形的任何一边、周长或面积,你就能推导出所有其他变量,因为只有一个自由度。

在统计学中,事情变得更加模糊,但想法仍然是一样的。如果你用作函数输入的所有数据都是独立变量,那么你有多少个自由度,就有多少个输入。但如果这些数据在某种程度上存在依赖关系,比如你有 n  个输入变量,就能算出剩下的 k 个变量,那么你实际上只有 n - k 个自由度。有时,你需要考虑到这一点,以免因为计算的数据点多过你真正拥有的独立数据,而让自己相信数据比实际数据更可靠或更有预测能力。

让我们重新理解并表述数学部分,理解这句话的意思。同时,让我们一起来学习一些重要的概念,它们将在数据科学角度上充分的审视这个问题。

假设我们要计算一个矩形的面积和周长。你首先需要问的是:

  • 这里的基本数学问题是什么?

因为毕竟有一个,解决一个问题。让我们来看看:

我给你 l(长)和 w(宽)。如上图所示,你可以通过计算得出面积和周长。

不过,这里的是:

  • 为了找到这个问题的可能解决方案,我们实际上需要什么支撑?

我们需要 l 和 w 的值,而且只需要 l 和 w 的值。这就是自由度的核心。为了说明这一点,我们需要回到线性代数

因此,我们现在需要先思考一下,花时间学习线性代数的一些概念。然后,我们再回到线性代数上来。

线性代数浅谈

线性代数的核心问题是求解方程组。

1. 什么是线性方程组

也称为线性方程组,是一组涉及多个变量的方程,其中每个方程都是线性方程。

2. 什么是线性方程?

它是一个代数方程,其中的每个项都是一个常数或一个线性项(即常数与变量的一次幂的乘积)。

例如,方程 2x - 3 = 0 是一个线性方程,因为它只有一个变量 x,而且每个项都是一个常数或一个线性项(即 2x 是一个常数 2 和一个变量 x 为 1 的幂的乘积)。

3. 线性 的概念从何而来?

它来源于一种叫做 "线性"的数学性质,简单地说,就是在底层结构中发生了两件事情:

  • 加法
  • 事物被一个常数相乘(或被 "缩放")。

这就是为什么下面是线性方程的一般形式(事物相加和/或相乘于一个常数):

方程里面融合了 加法 和 常数乘法。

例如,这是一个线性方程:

  • 4x + 2y - 6 = 0 或 4x + 2y = 6 或更好的是 y = -2x+3,这也可以解释为 x-y 平面上的线
  • 如果你还记得在高中时,直线的等式通常有以下格式y =ax+b

4. 什么是线性方程组

首先,请回想一下,如果只有两个变量( ),我们通常假定是在   平面上,即在二维空间中。

二维空间中的一个例子:

......其中每个等式都是 x-y 平面上的线

 和 

然而,如果我们有三个变量( ),那么我们通常会假设我们在三维空间中,即在三维空间中。

三维空间中的一个例子:

......其中每个方程都是三维空间中的一个**平面!

(在这种情况下,图片也向您展示了解法)

如果我们有 4 个未知数或更多,比如n个未知数呢?

对于n个变量,每个线性方程都决定了n维空间中的一个**超平面。

这是需要线性代数的范围了。

5.如何求解?

我们不讨论如何求解的代数过程,而是向你展示各种可能性,最重要的是,基本的几何直觉

二维空间中的系统可能有:

  • 一个唯一解,即两条直线(或方程)的交点。
  • 无限多个,都在蓝线上。
  • 没有解,三条线没有共同点。

6. 相容是 什么?

如果一个线性系统没有解,那么它就是不相容的,否则它就是相容的。

 平面上不相容系统的一个例子就是平行线

7. 如果世界并不那么完美,我们的方程多于(或少于)未知数呢?

i)未知数 < 等式 => 过确定方程组

现在没那么容易理解了

ii) 未知数 > 等式 => 欠确定方程组

这就是三维空间中的欠确定方程组。为什么?

因为即使这个系统是相融的(即肯定有解--没有平行线!),我们也找不到这个系统的唯一解。

我们可以这样做,但我们需要隔离其中一个未知数。这就是所谓的参数化,即我们用参数来代表。

请看下面来完整示例:

这张图片展示了处理一个包含三个变量( )的二元线性方程组的步骤。

初始的方程组是:

第 1 步:将方程 1 乘以 4,方程 2 乘以 2,以消去 z 变量:

  • 方程 1 变为: 


  • 方程 2 变为: 

    第 2 步:从(新的)方程 1 中减去(新的)方程 2,以消去 x 变量:


  • 执行的运算是:


  • 化简为:


  • 结果是:

    (此步骤成功消去了 x 变量)


第 3 步:我们可以用 z 来表示 y:

  • 从   开始
  • 整理得到:
  • 解出 y 得到:

该方法最终将给定方程组中的变量   可以用变量   表示。

所以,我们有无限多个解,用参数   表示。我们选择的任何   值都会通过方程   给我们一个对应的   值。此外,我们可以将这些   和   的值代入方程 1 或方程 2 来找到对应的   值。

例如,我们选择  ,其中   是任意实数。那么, ,并且可以通过将   和   的值代入方程 1 来确定 

所以,这个未确定系统的通解由以下给出:

因为它是一条直线,所以有无穷多的解,以变量   为参数,这反映了系统的未定性:因为方程的解取决于   。

我想告诉大家的是,如果我们给   赋值,就会发现   和   ,也就是这个数学系统的不同解。

因此,在这种情况下,   是 "自由变化",自由度=1。

现在,抽象一下!

因为它是一条线,所以你只能在个方向上移动!

这与1个自由度的概念有着内在联系!

8.约束计数的概念

约束条件计数是指计算约束条件的数量,以便与变量、参数等的数量进行比较。

未定和过定的概念可以用约束计数的概念来进行统一概括。每个未知数都可以看作是一个可用的自由度。引入系统的每个方程都可以看作是一个约束,限制了一个自由度!

现在自由度开始有意义了!

回到矩形问题:

同样的问题,我们用约束计数的视角来思考。

这里问题可以抽象为数学问题是:

我们的未知数比方程多,所以我们有一个未定系统。

根据我们选择的   和   的值,我们可以得到无穷多个答案 a 和 p:

"自由变化"思想:如果知道   和   (长和宽),就可以找到   或   (面积和周长)。因此,我们说因为   和   是 "自由变化的"(即它们可以 "取任意值"),所以我们可以说我们的系统有 2 个自由度。 我们可以说,我们的系统有两个自由度。

等等,还有一件有趣的思考方式会让你受益匪浅。

当我们想将自由度以几何方式可视化时。

假设还告诉我们   (长等于宽 + 2)。如果我们这样进行假设,就等于给我们的数学系统添加了一个约束条件

我们之所以说我们的新数学体系有约束,是因为这个问题的可能解决方案现在约束为更少项。

在这种情况下,自由度会发生变化吗?

会。为什么?

既然你知道   ,我们就通过这个约束条件得到 

这样,我们的数学问题就发生了变化。

现在,我们有

将   带入之后,改写为:

因此 现在,只有   是 "自由变化 "的。因此,只有 1 个自由度。

我们没有必要 "知道"   ,因为只要我们知道  ,我们就会通过等式得到他。 这意味着   取决于  ,或者更好地说,  与   有关。

"在我们的数学系统中添加约束条件,会减少自由度的数量,因为可能的解决方案将被限制在新的较少解中"。

因此,我们可以像处理矩形示例一样处理最初的方程组中:

我们从 2 个方程和 3 个未知数( )的方程组开始,正如我们从 2 个方程和 4 个未知数( )的系统开始,就像在矩形思想中一样。

然而,我们做了一些代数运算,最终用   来表示   ,正如我们能够用   和   来表示   和   一样。

因此,由于只有   可以变化,我们发现这个系统有一个自由度。此外,正如我们在图中所看到的,由于 "解集"是一条线(由三维空间中两个平面的交点产生、那么我们也可以说解就是这条线上的点"

"解就是这条线上的点,它们只能在这个方向移动!"

如果我们有一个包含 3 个变量的方程,那么三维空间中就会有一个平面。因此,可能的解就是限制在平面上的点(2 个自由度自由度)

然而,另一个方程引入了一个约束条件(你没有注意到,但这就是我们如何构建这个想法的),所以我们现在在三维空间中有了一条直线、因此我们又失去了一个自由度。因此,可能的解是点限制在直线上!

最后,我们在意识中达成了一个非常好的自由度定义:

自由度,或称df,是指我们需要知道多少个独立成分(或有多少个独立成分可以 "自由地变化"),才能完全确定我们数学系统中值得关注的东西。

我们还有其他收获:

自由度与数学系统的基本几何有着内在的联系。这个数学系统的将在底层空间的可能方向上 "自由变化",这与我们系统的**约束程度有关。

让我们看看 Wikipedia 的一些定义:

  1. 非常数学化的定义:

在数学中,一个线性方程组或多项式方程组如果方程的数量少于未知数的数量,则被认为是未定的(与超定系统相反,超定系统是指方程的数量多于未知数的数量)。这个术语可以用约束计数的概念来解释。每个未知数可以看作是一个可用的自由度。系统引入的每个方程可以看作是一个限制一个自由度的约束。

因此,关键情况(介于超定和欠定之间)发生在方程的数量和自由变量的数量相等时。对于每一个提供自由度的变量,都存在一个相应的约束条件移除自由度。一个不定系统会添加额外的非方程约束条件,例如限制解为整数。相比之下,欠定情况发生在系统欠约束时——也就是说,未知数的数量多于方程的数量。

  1. 更数学化的定义:

在数学上,自由度是随机向量域的维数,或者说是 "自由 "分量的数量(在完全确定向量之前需要知道多少分量)。

  1. 更具统计学意义的定义:

在统计学中,自由度的数量是统计最终计算中可自由变化的数值的数量.

  1. 另一个更具统计意义的定义:

统计参数的估计可以基于不同数量的信息或数据。用于估计参数的独立信息的数量称为自由度。

看来本文快要结束了!

实际上,我们已经了解了自由度的主干,这些都是非常好的定义

我想要的定义是要能涵盖多种语境下的自由度:

  • 当我们计算样本方差时(就像我在数据科学课程中提到的那样,使用 Numpy std 函数)
  • 当我们评估卡方分布时
  • 当我们学习 PCA(主成分分析)时
  • 等等等等......

最重要的是,通过学习这些内容,你不仅能了解什么是自由度,还能学到很多其他重要的概念。

我知道的一件事是:热衷于学习概念背后的原因,对我的职业生涯很有帮助。🙃

感谢阅读,敬请期待!


【声明】内容源于网络
0
0
数据分析学习与实践
数据分析,数据科学,线性代数,统计学,AI,python,可视化,excel
内容 343
粉丝 0
数据分析学习与实践 数据分析,数据科学,线性代数,统计学,AI,python,可视化,excel
总阅读94
粉丝0
内容343