zoukankan      html  css  js  c++  java
  • 多元高斯分布(The Multivariate normal distribution)

    在数据建模时,经常会用到多元高斯分布模型,下面就这个模型的公式并结合它的几何意义,来做一个直观上的讲解。

    1, 标准高斯函数

    高斯函数标准型:

    $f(x) = frac{1}{sqrt{2π}}e^{-frac{x^2}{2}}$

    这个函数描述了变量 x 的一种分布特性,变量x的分布有如下特点:

    Ⅰ, 均值 = 0

    Ⅱ, 方差为1

    Ⅲ, 概率密度和为1

    2, 一元高斯函数一般形式

    一元高斯函数一般形式:

    $f(x) = frac{1}{sqrt{2π}σ}e^{-frac{(x-μ)^2}{2σ^{2}}}$

    我们可以令:

    $z = frac{x - μ}{σ}$

    称这个过程为标准化, 不难理解,$z ∼ N(0, 1)$,从z -> x的过程如下:

    Ⅰ, 将 x 向右移动 μ 个单位

    Ⅱ, 将密度函数伸展 σ 倍

    而标准化(x -> z)所做的事情就是上述步骤的逆向

    唯一不太好理解的是前面 $frac{1}{sqrt{2π}σ}$ 中的σ, 为什么这里多了一个 σ, 不是 2σ 或其他?

    当然,这里可以拿着概率密度函数的性质,使用微积分进行积分,为了保证最终的积分等于1, 这里必须是 σ

    这里我想说一下自己的直观感受:

    实线代表的函数是标准高斯函数:

    $f(x) = frac{1}{sqrt{2π}}e^{-frac{x^2}{2×2^{2}}}$

    虚线代表的是标准高斯函数在 x 轴方向2倍延展,效果如下:

    A(x = 1) -> D(x = 2)

    E(x = 1.5) -> F(x = 3)

    G(x = 2) -> H(x = 4)

    横向拓宽了,纵向还是保持不变,可以想象,最后的函数积分肯定不等于1

    采用极限的思想,将 x 轴切分成无穷个细小的片段,每个片段可以与函数围城一个区域,因为我的切分足够小,这个区域的面积可以近似采用公式:面积 = 底 × 高 求得:

    从 AQRS -> DTUV, 底乘以2倍,高维持不变,所以,要保持变化前后面积不变,函数的高度应该变为原来的 1/2

    所以高斯函数在 x 轴方向做2倍延展的同时,纵向应该压缩为原来的一半,才能重新形成新的高斯分布函数

    扩展到一般情形,x 轴方向做 σ 倍延拓的同时, y 轴应该压缩 σ 倍(乘以 1/σ)

    3, 独立多元正态分布

    先假设n个变量 $x = left[ egin{matrix} x_{1}, x_{2},cdots,x_{n}end{matrix} ight]^mathrm{T}$ 互不相关,且服从正态分布(维度不相关多元正态分布),各个维度的均值$E(x) = left[ egin{matrix} μ_{1}, μ_{2},cdots,μ_{n}end{matrix} ight]^mathrm{T}$, 方差 $σ(x) = left[ egin{matrix} σ_{1}, σ_{2},cdots,σ_{n}end{matrix} ight]^mathrm{T}$

    根据联合概率密度公式:

    $f(x) = p(x_{1},x_{2}....x_{n}) = p(x_{1})p(x_{2})....p(x_{n}) = frac{1}{(sqrt{2π})^nσ_{1}σ_{2}cdotsσ_{n}}e^{-frac{(x_{1}-μ_{1})^2}{2σ_{1}^2}-frac{(x_{2}-μ_{2})^2}{2σ_{2}^2}cdots-frac{(x_{n}-μ_{n})^2}{2σ_{n}^2}}$

    令 $z^{2} = frac{(x_{1}-μ_{1})^2}{σ_{1}^2}+frac{(x_{2}-μ_{2})^2}{σ_{2}^2}cdots+frac{(x_{n}-μ_{n})^2}{σ_{n}^2}$, $σ_{z}= σ_{1}σ_{2}cdotsσ_{n}$

    这样多元正态分布又可以写成一元那种漂亮的形式了(注意一元与多元的差别):

    $f(z) = frac{1}{(sqrt{2π})^nσ_{z}}e^{-frac{z^2}{2}}$

    因为多元正态分布有着很强的几何思想,单纯从代数的角度看待z很难看出z的概率分布规律,这里需要转换成矩阵形式:

    $z^2 = z^mathrm{T}z = left[ egin{matrix} x_{1} - μ_{1}, x_{2} - μ_{2}, cdots,x_{n} - μ_{n}end{matrix} ight] left[ egin{matrix} frac{1}{σ_{1}^2}&0&cdots&0\
    0&frac{1}{σ_{2}^2}&cdots&0\
    vdots&cdots&cdots&vdots\
    0&0&cdots&frac{1}{σ_{n}^2}
    end{matrix} ight]left[ egin{matrix} x_{1} - μ_{1}, x_{2} - μ_{2}, cdots,x_{n} - μ_{n}end{matrix} ight]^mathrm{T}$

    等式比较长,让我们要做一下变量替换:

    $x - μ_{x} = left[ egin{matrix} x_{1} - μ_{1}, x_{2} - μ_{2}, cdots,x_{n} - μ_{n}end{matrix} ight]^mathrm{T}$

    定义一个符号

    $∑_{}^{} = left[ egin{matrix} σ_{1}^2&0&cdots&0\
    0&σ_{2}^2&cdots&0\
    vdots&cdots&cdots&vdots\
    0&0&cdots&σ_{n}^2
    end{matrix} ight]$

    $∑_{}^{}$代表变量 X 的协方差矩阵, i行j列的元素值表示$x_{i}$与$x_{j}$的协方差

    因为现在变量之间是相互独立的,所以只有对角线上 (i = j)存在元素,其他地方都等于0,且$x_{i}$与它本身的协方差就等于方差

    $∑_{}^{}$是一个对角阵,根据对角矩阵的性质,它的逆矩阵:

    $( (∑_{}^{})^{-1} = left[ egin{matrix} frac{1}{σ_{1}^2}&0&cdots&0\
    0&frac{1}{σ_{2}^2}&cdots&0\
    vdots&cdots&cdots&vdots\
    0&0&cdots&frac{1}{σ_{n}^2}
    end{matrix} ight]$

    对角矩阵的行列式 = 对角元素的乘积

    $σ_{z}= left|∑_{}^{} ight|^frac{1}{2} =σ_{1}σ_{2}.....σ_{n}$

    替换变量之后,等式可以简化为:

    $z^mathrm{T}z = (x - μ_{x})^mathrm{T}  sum_{}{}^{-1} (x - μ_{x})$

    代入以z为自变量的标准高斯分布函数中:

    $f(z) = frac{1}{(sqrt{2π})^nσ_{z}}e^{-frac{z^2}{2}} = frac{1}{(sqrt{2π})^{n}left|∑_{}^{} ight|^frac{1}{2}}e^{-frac{ (x  -  μ_{x})^mathrm{T}  (sum_{}{})^{-1}  (x  -  μ_{x})}{2}}$ 

    注意前面的系数变化:从非标准正态分布->标准正态分布需要将概率密度函数的高度压缩 $|∑_{}^{}|^frac{1}{2}$倍, 从一维 -> n维的过程中,每增加一维,高度将压缩 $sqrt{2π}$倍

    维度不相关正太分布函数图像类似这样(以二元分布函数为例):

    4, 相关多元正态分布

    前面也说了,我们讨论多元正态分布的前提是多元变量之间是相互独立的,实际上,有很多应用场合,变量与变量之间是有关联的。以二元正态分布为例:

                      

    向输入平面作投影后的平面图:

    以现在的坐标系来看,X1,X2是相关的,但是如果我们换一个角度,它们就是互不相关的了:

    上述过程被称为去相关性,更专业一点叫做归化

    假设新坐标系 $x_{1}' = left[egin{matrix}u_{x1}^{0}, u_{x1}^{1}end{matrix} ight]^T$, $x_{2}' = left[egin{matrix}u_{x2}^{0}, u_{x2}^{1}end{matrix} ight]^T$那么原坐标系上的任意一点 $[x_{1}, x_{2}]^T$ 投影到新坐标系上的结果为:

    $left[egin{matrix}x_{1}'\
    x_{2}'end{matrix} ight] = left[ egin{matrix} u_{x1}^{0}, u_{x1}^{1}\
    u_{x2}^{0}, u_{x2}^{1} end{matrix} ight]left[ egin{matrix} x_{1}\
    x_{2} end{matrix} ight]$

    为了简单起见,定义矩阵:

    $U = left[ egin{matrix} u_{x1}^{0}, u_{x2}^{0}\
    u_{x1}^{1}, u_{x2}^{1} end{matrix} ight]$

    U的列空间由新坐标向量组成,坐标映射之后:

    $X’ = U^{T}X$

    现在我们的自变量X’是相互独立的了,满足维度不相关高斯分布模型,现在我们想套用公式:

    $f(z) = frac{1}{(sqrt{2π})^nσ_{z}}e^{-frac{z^2}{2}} = frac{1}{(sqrt{2π})^{n}left|∑_{}^{} ight|^frac{1}{2}}e^{-frac{ (x  -  μ_{x})^mathrm{T}  (sum_{}{})^{-1}  (x  -  μ_{x})}{2}}$ 

    $x->x'$, 这个很容易,$μ_{x} -> μ(x')$这个也不难, 但是这里还有一个 $∑_{}^{}$是未知的! 按照定义,这里的$∑_{}^{}$应该是X’的协方差,我们已知X,已知映射矩阵,如何求解X’的协方差?

    从定义出发:

    $μ_{x'} = E[U^TX] = U^TE[x] = U^Tμ_{x}$ $ ag{$1$}$

    映射之后的协方差:

    $egin{align*}
    σ(X') &= E[(X' - μ_{X'})(X' - μ_{X'})^T]\
    &=E[ (X' - μ_{X'}) (X'^T - μ_{X'}^T) ]\
    &=E[X'X'^T - μ_{X'}X'^T - X'μ_{X'}^T + μ_{X'}μ_{X'}^T]\
    &=E[U^TXX^TU-E[U^TX]X^TU - U^TXE[U^TX]^T + E[U^TX]E[U^TX]^T]\
    &=U^TE[XX^T - E(X)X^T - XE[X]^T + E[X]E[X]^T]U\
    &=U^Tσ(X)U\
    end{align*}$

    坐标映射前后的协方差矩阵满足关系:

    $(sum_{}^{})_{x'} = U^{T}(sum_{}^{})_{x}U$ $ ag{$2$}$

    再进一步观察,U的列向量是单位向量,而且是相互正交的,U是正交矩阵,$U^T = U^{-1}$

    $(sum_{}^{})_{x'} = U^{-1}(sum_{}^{})_{x}U$ 

    也就是说$(sum_{}^{})_{x'}$ 是 $(sum_{}^{})_{x}$的相似矩阵,相似矩阵的行列式相等

    $|(sum_{}^{})_{x'}| = |(sum_{}^{})_{x}|$  $ ag{$3$}$

    并且还有一个重要结论:

    $(sum_{}^{})_{x'}^{-1} = (U^T(sum_{}^{})_{x}U)^{-1} =  (U^{-1}(sum_{}^{})_{x}U)^{-1}=U^{-1}(sum_{}^{})_{x}^{-1}U = U^{T}(sum_{}^{})_{x}^{-1}U$ $ ag{$4$}$

    有了上述1、2、3、4四个结论,我们就可以放心套用标准化公式了:

    $egin{align*}
    f(z) &= frac{1}{(sqrt{2π})^nσ_{z}}e^{-frac{z^2}{2}} \
    &= frac{1}{(sqrt{2π})^{n}left|(∑_{}^{})'_{x} ight|^frac{1}{2}}e^{-frac{ (x' - μ_{x'})^mathrm{T} (sum_{}{})_{x'}^{-1} (x' - μ_{x'})}{2}}\
    &=frac{1}{(sqrt{2π})^{n}left|(∑_{}^{})_{x} ight|^frac{1}{2}}e^{-frac{ (U^Tx - U^Tμ_{x})^mathrm{T} U^T (sum_{}{})_{x}^{-1} U (U^Tx - U^Tμ_{x})}{2}}\
    &=frac{1}{(sqrt{2π})^{n}left|(∑_{}^{})_{x} ight|^frac{1}{2}}e^{-frac{ (x - μ_{x})^mathrm{T} (sum_{}{})_{x}^{-1} (x - μ_{x})}{2}}
    end{align*}$

     总结一下我们做了什么。

    Ⅰ, 我们先定义了新的坐标系,通过矩阵 $U^{T}$ 将元素映射到新的坐标系,目的是去相关性

    Ⅱ, 在新的坐标下,我们定义了新的期望、协方差、协方差的逆,他们都可以通过 $U$ 与 $U^T$计算出来,当然我们不用计算

    Ⅲ,   套用标准公式,将新的期望、协方差的逆、协方差的行列式代入,发现最后的结果与$U$、$U^T$无关

    为什么会这样?我的理解是这样:

    前提条件:概率模型已经构建

    假设空白平面上有一点A, 这个点A是客观存在的,一旦A指定了,那么它的概率大小P(A)就已经确定了

    现在我们添加了一个坐标系,添加坐标系的好处只是使得P(A)可以被量化 $P(A) = f(u1, u2)$

    同理,使用其他坐标系,可以得到其他坐标系下的另外一种量化 $P(A) = f(v1, v2)$

    不管使用哪个坐标系,A点的概率始终是不变的,所以$f(u1, u2) = f(v1, v2)$(感觉这有点像哲学问题哈)。

    5, 实例分析

    $sum_{}^{} = left[ egin{matrix} 1&0.8\
    0.8&1
    end{matrix} ight]$                     

    这个图形与参数是如何对应的?

          

    可以把那条假象的坐标轴线画出来,转换前后,坐标原点不变,很明显,这是一个旋转变换,假设坐标轴旋转的角度为θ,新的坐标向量矩阵将变为:

    $U = left[ egin{matrix} cosθ&-sinθ\
    sinθ&cosθ
    end{matrix} ight]$

    U的列空间组成了新坐标的坐标系

    $U^T = left[ egin{matrix} cosθ&sinθ\
    -sinθ&cosθ
    end{matrix} ight]$

    新坐标系下变量是不相关的,协方差矩阵为对角阵:

    $(sum_{}^{})_{new} = U^T sum{} U = left[ egin{matrix} cosθ&sinθ\
    -sinθ&cosθ
    end{matrix} ight] left[ egin{matrix}
    1&0.8\
    0.8&1
    end{matrix} ight] left[ egin{matrix} cosθ&-sinθ\
    sinθ&cosθ
    end{matrix} ight] = left[ egin{matrix} σ_{1}^2&0\
    0&σ_{2}^2
    end{matrix} ight]$

    计算可得: $θ = frac{π}{4}$ 

    代入计算新的协方差为:

    $(sum_{}^{})_{new} = left[ egin{matrix} 1.8&0\
    0&0.2 end{matrix} ight]$

    得出的结论: 新的坐标系是原坐标系经过 $θ = frac{π}{4}$旋转而来,在新的坐标系下,输入元素将会变得不相关,$x_{1}$方向的方差为1.8,分布比较宽, $x_{2}$方向的方差为0.2,分布比较窄,整体表现为扁平。

    同理,不难得出:

                   $sum_{}^{} = left[ egin{matrix} 1&-0.5\
    -0.5&1
    end{matrix} ight]qquadqquadqquadqquadsum_{}^{} = left[ egin{matrix} 1&-0.8\
    -0.8&1
    end{matrix} ight]qquadqquadqquadqquadsum_{}^{} = left[ egin{matrix} 3&0.8\
    0.8&1
    end{matrix} ight]$                                                                           

     --------------------------------------------------------------------------------------------------------------------------------------------------------------------------

                                                                                                                                                                                    路漫漫其修远兮,吾将上下而求索

                     

  • 相关阅读:
    Codeforces Beta Round #92 (Div. 2 Only) B. Permutations 模拟
    POJ 3281 Dining 最大流 Dinic算法
    POJ 2441 Arrange the BUlls 状压DP
    URAL 1152 Faise Mirrors 状压DP 简单题
    URAL 1039 Anniversary Party 树形DP 水题
    URAL 1018 Binary Apple Tree 树形DP 好题 经典
    pytorch中的forward前向传播机制
    .data()与.detach()的区别
    Argparse模块
    pytorch代码调试工具
  • 原文地址:https://www.cnblogs.com/bingjianing/p/9117330.html
Copyright © 2011-2022 走看看