机器学习笔记之高斯分布(一)——使用极大似然估计计算最优参数

机器学习笔记之高斯分布——使用极大似然估计计算最优参数

  • 目录
    • 高斯分布介绍
      • 一维正态分布
      • 多维正态分布
    • 回顾:数据集合与概率模型
    • 使用极大似然估计计算高斯分布最优参数

目录

本节将介绍一个在统计机器学习中占据重要地位的分布——高斯分布

高斯分布介绍

高斯分布(Gaussian Distribution),又称正态分布(Normal Distribution)。该分布在数学、物理及工程等领域都占据重要地位的分布。从随机变量 X X X的维度进行划分,可以将高斯分布分为一维正态分布多元正态分布

一维正态分布

假设一维随机变量 X X X服从一个数学期望 μ \mu μ方差 σ 2 \sigma^2 σ2的高斯分布,将其记作:
X ∼ N ( μ , σ 2 ) X\sim \mathcal N(\mu,\sigma^2) XN(μ,σ2)
对应高斯分布的概率密度函数(Probability Density Function,PDF)表示如下:
f ( x ) = 1 2 π σ exp ⁡ ( − ( x − μ ) 2 2 σ 2 ) f(x) = \frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(x - \mu)^2}{2\sigma^2}) f(x)=2π σ1exp(2σ2(xμ)2)
其中( μ , σ \mu,\sigma μ,σ(标准差))为正态分布 N ( μ , σ 2 ) \mathcal N(\mu,\sigma^2) N(μ,σ2)充分统计量(若某一数据集合确定服从于高斯分布,只需要知道该分布的样本均值方差 → \to 可以从该分布中生成任意一个样本)。
充分统计量在'指数族分布'中详细介绍。

数学期望 μ \mu μ决定了概率密度函数的有效位置;方差 σ 2 \sigma^2 σ2决定了概率密度函数的有效范围。我们称 μ = 0 , σ = 1 \mu=0,\sigma=1 μ=0,σ=1的分布为标准正态分布(Standard Normal Distribution)。
具体代码如下:

import math
import matplotlib.pyplot as plt

def norm(x,mu,sigma):
    return (1 / (sigma * math.sqrt(2 * math.pi))) * math.exp(-1 * (((x - mu) ** 2) / (sigma ** 2)))

if __name__ == '__main__':
    x = np.linspace(-10,10,500)
    y = [norm(i,0,1) for i in x]
    y_1 = [norm(i,0,4.0) for i in x]
    y_2 = [norm(i,-2,4.0) for i in x]
    plt.plot(x,y)
    plt.plot(x,y_1)
    plt.plot(x,y_2)
    plt.show()

返回图像如下:
机器学习笔记之高斯分布(一)——使用极大似然估计计算最优参数_第1张图片

多维正态分布

多元正态分布是一维正态分布向多维的推广。其充分统计量数学期望协方差矩阵,分别记作: μ , Σ \mu,\Sigma μ,Σ。如果 Σ \Sigma Σ非奇异矩阵多元正态分布的概率密度函数(Probability Density Function,PDF)表示如下:
f x ( x 1 , x 2 , . . . , x p ) = 1 ( 2 π ) p ∣ Σ ∣ exp ⁡ ( − 1 2 ( x − μ ) ⊤ Σ − 1 ( x − μ ) ) f_{\mathbf x}(x_1,x_2,...,x_p) = \frac{1}{\sqrt{(2\pi)^p|\Sigma|}}\exp(-\frac{1}{2}(\mathbf x - \mu)^{\top}\Sigma^{-1}(\mathbf x - \mu)) fx(x1,x2,...,xp)=(2π)pΣ 1exp(21(xμ)Σ1(xμ))
其中:
x ∈ X \mathbf x \in \mathcal X xX,是数据集合 X \mathcal X X的一个样本,共包含 p p p个维度: ( x 1 , x 2 , . . . , x p ) (x_1,x_2,...,x_p) (x1,x2,...,xp) ∣ Σ ∣ |\Sigma| Σ表示协方差矩阵 Σ \Sigma Σ的行列式结果。
具体代码如下:

from scipy.stats import multivariate_normal

def draw_pic(mu,sigma):
    x = np.linspace(-2,2,50)
    y = np.linspace(-2,2,50)
    X,Y = np.meshgrid(x,y)
    pos = np.empty(X.shape + (2,))
    pos[:, :, 0] = X
    pos[:, :, 1] = Y
    Gaussians_l = []
    Gaussians_l.append(multivariate_normal(mu,sigma))

    fig = plt.figure()
    ax = fig.gca(projection='3d')
    ax.plot_surface(X, Y, Gaussians_l[0].pdf(pos), cmap='viridis', linewidth=0)
    plt.show()

if __name__ == '__main__':
    mu = [0, 0]
    sigma = [[0.5, 0], [0, 0.5]]
    draw_pic(mu,sigma)

返回图片结果:
机器学习笔记之高斯分布(一)——使用极大似然估计计算最优参数_第2张图片

回顾:数据集合与概率模型

上一节介绍到,数据集合是由 大量重复试验 产生的样本所组成的集合。并介绍了向量维度描述样本特征的一组值的数量
现已知一个数据集合 X \mathcal X X,它共包含 N N N个样本,每个样本包含 p p p个维度,使用数学符号表示该数据集合如下:
X = ( x ( 1 ) x ( 2 ) x ( 3 ) ⋮ x ( N ) ) = ( x 1 ( 1 ) , x 2 ( 1 ) , ⋯   , x p ( 1 ) x 1 ( 2 ) , x 2 ( 2 ) , ⋯   , x p ( 2 ) x 1 ( 3 ) , x 2 ( 3 ) , ⋯   , x p ( 3 ) ⋮ x 1 ( N ) , x 2 ( N ) , ⋯   , x p ( N ) ) N × p \mathcal X = \begin{pmatrix} x^{(1)} \\ x^{(2)} \\ x^{(3)}\\ \vdots \\ x^{(N)} \end{pmatrix} = \begin{pmatrix} x_1^{(1)},x_2^{(1)},\cdots,x_p^{(1)} \\ x_1^{(2)},x_2^{(2)},\cdots,x_p^{(2)} \\ x_1^{(3)},x_2^{(3)},\cdots,x_p^{(3)} \\ \vdots \\ x_1^{(N)},x_2^{(N)},\cdots,x_p^{(N)} \end{pmatrix}_{N\times p} X=x(1)x(2)x(3)x(N)=x1(1),x2(1),,xp(1)x1(2),x2(2),,xp(2)x1(3),x2(3),,xp(3)x1(N),x2(N),,xp(N)N×p

其中上标 1 , 2 , . . . , N 1,2,...,N 1,2,...,N表示某一样本标号,下标 1 , 2 , . . . , p 1,2,...,p 1,2,...,p表示样本内部某一维度编号任意样本内每个维度具体数值结果的定义域为全体实数(共需要 p p p个维度的实数空间),数学符号表示如下:
x i ∈ R p x_i \in \mathbb R^p xiRp
如果数据集合 X \mathcal X X服从某一正态分布 N ( μ , Σ ) \mathcal N(\mu, \Sigma) N(μ,Σ),根据上一节的逻辑,将 X \mathcal X X视为一个 概率模型,而 x i x_i xi理解为 N ( μ , Σ ) \mathcal N(\mu, \Sigma) N(μ,Σ)概率分布下,以模型参数 ( μ , Σ ) (\mu,\Sigma) (μ,Σ)产生的一个样本,并且产生的各个样本之间属于独立同分布。数学符号记作:
x i ∼ iid N ( μ , Σ ) x_i \overset{\text{iid}}{\sim} \mathcal N(\mu, \Sigma) xiiidN(μ,Σ)

使用极大似然估计计算高斯分布最优参数

我们在第一部分介绍了高斯分布,回想一个问题(以1维高斯分布为例):
为什么样本均值 μ \mu μ和方差 σ \sigma σ是高斯分布的参数,而不是其他数值?
反过来想:
如果概率模型 N ( μ , σ 2 ) \mathcal N(\mu, \sigma^2) N(μ,σ2)中的参数不是样本均值和方差,那么该概率模型产生出的样本还符合高斯分布吗?
回顾极大似然估计
θ M L E = arg ⁡ max ⁡ θ P ( X ; θ ) \theta_{MLE} = \mathop{\arg\max}\limits_{\theta}P(X;\theta) θMLE=θargmaxP(X;θ)
相应的,对高斯分布以及模型参数进行替换。为了简化计算,我们设置概率模型产生的样本维度 p = 1 p = 1 p=1
θ M L E = arg ⁡ max ⁡ μ , σ 2 N ( μ , σ 2 ) P ( X ; θ ) = N ( μ , σ 2 ) = 1 2 π σ exp ⁡ ( − ( x − μ ) 2 2 σ 2 ) \begin{aligned} \theta_{MLE} & = \mathop{\arg\max}\limits_{\mu,\sigma^2}\mathcal N(\mu, \sigma^2) \\ P(X;\theta) & = \mathcal N(\mu, \sigma^2) \\ & = \frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(x - \mu)^2}{2\sigma^2}) \end{aligned} θMLEP(X;θ)=μ,σ2argmaxN(μ,σ2)=N(μ,σ2)=2π σ1exp(2σ2(xμ)2)
目标: μ , σ \mu,\sigma μ,σ均未知的情况下,使用极大似然估计,求解 θ = ( μ , σ 2 ) \theta = (\mu,\sigma^2) θ=(μ,σ2),使得 N ( μ , σ 2 ) \mathcal N(\mu, \sigma^2) N(μ,σ2)达到最大。

  • 计算 log ⁡ \log log似然 log ⁡ P ( X ; θ ) \log P(X;\theta) logP(X;θ)(为什么添加 log ⁡ \log log,回溯机器学习笔记——频率学派与贝叶斯学派)
    由于各样本之间关系属于独立同分布,极大似然估计可以写成各项样本概率连乘形式;最后将 log ⁡ \log log带入,转换成连加形式,并将 P ( x i ; θ ) P(x_i;\theta) P(xi;θ)替换成一维概率分布的概率密度函数
    log ⁡ P ( X ; θ ) = log ⁡ P ( x 1 , x 2 , . . . , x N ; θ ) = log ⁡ ∏ i = 1 N P ( x i ; θ ) = ∑ i = 1 N log ⁡ P ( x i ; θ ) = ∑ i = 1 N log ⁡ [ 1 2 π σ exp ⁡ ( − ( x i − μ ) 2 2 σ 2 ) ] \begin{aligned} \log P(X;\theta) & = \log P(x_1,x_2,...,x_N;\theta) \\ & = \log \prod_{i=1}^N P(x_i;\theta) \\ & = \sum_{i=1}^N \log P(x_i;\theta) \\ & = \sum_{i=1}^N \log[\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(x_i - \mu)^2}{2\sigma^2})] \end{aligned} logP(X;θ)=logP(x1,x2,...,xN;θ)=logi=1NP(xi;θ)=i=1NlogP(xi;θ)=i=1Nlog[2π σ1exp(2σ2(xiμ)2)]

  • 将上式展开, log ⁡ \log log exp ⁡ \exp exp消掉,
    = ∑ i = 1 N [ log ⁡ 1 2 π σ + log ⁡ exp ⁡ ( − ( x i − μ ) 2 2 σ 2 ) ] = ∑ i = 1 N [ log ⁡ 1 2 π + log ⁡ 1 σ − ( x i − μ ) 2 2 σ 2 ] \begin{aligned} & = \sum_{i=1}^N [\log \frac{1}{\sqrt{2\pi}\sigma} + \log \exp(-\frac{(x_i - \mu)^2}{2\sigma^2})] \\ & = \sum_{i=1}^N [\log \frac{1}{\sqrt{2\pi}} + \log \frac{1}{\sigma} - \frac{(x_i - \mu)^2}{2\sigma^2}] \end{aligned} =i=1N[log2π σ1+logexp(2σ2(xiμ)2)]=i=1N[log2π 1+logσ12σ2(xiμ)2]

  • 首先计算 θ = ( μ , σ 2 ) \theta=(\mu,\sigma^2) θ=(μ,σ2)中的 μ \mu μ
    μ M L E = arg ⁡ max ⁡ μ log ⁡ P ( X ; θ ) = arg ⁡ max ⁡ μ ∑ i = 1 N [ log ⁡ 1 2 π + log ⁡ 1 σ − ( x i − μ ) 2 2 σ 2 ] \begin{aligned} \mu_{MLE} & = \mathop{\arg\max}\limits_{\mu}\log P(X;\theta) \\ & = \mathop{\arg\max}\limits_{\mu}\sum_{i=1}^N [\log \frac{1}{\sqrt{2\pi}} + \log \frac{1}{\sigma} - \frac{(x_i - \mu)^2}{2\sigma^2}] \end{aligned} μMLE=μargmaxlogP(X;θ)=μargmaxi=1N[log2π 1+logσ12σ2(xiμ)2]
    继续观察,由于上述式子中只有 − ( x i − μ ) 2 2 σ 2 -\frac{(x_i - \mu)^2}{2\sigma^2} 2σ2(xiμ)2中含有 μ \mu μ,其余部分均不含未知量 μ \mu μ,因此:
    对上式进行化简( arg ⁡ max ⁡ \arg\max argmax负号抵消 → arg ⁡ min ⁡ \to \arg\min argmin
    由于 1 2 σ 2 \frac{1}{2\sigma^2} 2σ21和变量 μ \mu μ无关 → \to 1 2 σ 2 \frac{1}{2\sigma^2} 2σ21看作 常数):
    = arg ⁡ max ⁡ μ ∑ i = 1 N − ( x i − μ ) 2 2 σ 2 = arg ⁡ min ⁡ μ ∑ i = 1 N ( x i − μ ) 2 2 σ 2 = arg ⁡ min ⁡ μ ∑ i = 1 N ( x i − μ ) 2 \begin{aligned} & = \mathop{\arg\max}\limits_{\mu}\sum_{i=1}^N -\frac{(x_i - \mu)^2}{2\sigma^2}\\ & = \mathop{\arg\min}\limits_{\mu}\sum_{i=1}^N \frac{(x_i - \mu)^2}{2\sigma^2} \\ & = \mathop{\arg\min}\limits_{\mu}\sum_{i=1}^N (x_i - \mu)^2 \end{aligned} =μargmaxi=1N2σ2(xiμ)2=μargmini=1N2σ2(xiμ)2=μargmini=1N(xiμ)2
    既然是求解最值操作 → \to 基于该式对 μ \mu μ求偏导,并令偏导等于0
    ∂ ∂ μ ∑ i = 1 N ( x i − μ ) 2 = 2 × ∑ i = 1 N ( x i − μ ) × ( − 1 ) ≜ 0 → ∑ i = 1 N ( x i − μ ) = 0 \begin{aligned} \frac{\partial}{\partial\mu}\sum_{i=1}^N (x_i - \mu)^2 & = 2 \times \sum_{i=1}^N(x_i - \mu) \times (-1) \triangleq 0 \\ & \to \sum_{i=1}^N(x_i - \mu) = 0 \end{aligned} μi=1N(xiμ)2=2×i=1N(xiμ)×(1)0i=1N(xiμ)=0
    将式子展开:
    ( x 1 − μ ) + ( x 2 − μ ) + ⋯ + ( x N − μ ) = 0 → μ M L E = x 1 + x 2 + ⋯ + x N N = 1 N ∑ i = 1 N x i \begin{aligned} (x_1 - \mu) + (x_2 - \mu) + \cdots + (x_N - \mu) = 0 \\ \to\mu_{MLE} = \frac{x_1 + x_2 + \cdots + x_N}{N} = \frac{1}{N}\sum_{i=1}^N x_i \end{aligned} (x1μ)+(x2μ)++(xNμ)=0μMLE=Nx1+x2++xN=N1i=1Nxi
    该式就是求均值的公式——从极大似然估计的角度验证了:
    μ \mu μ在取样本均值时, log ⁡ P ( X ; θ ) \log P(X;\theta) logP(X;θ)能够达到最大

  • 继续计算 θ = ( μ , σ 2 ) \theta=(\mu,\sigma^2) θ=(μ,σ2)中的 σ 2 \sigma^2 σ2
    σ M L E 2 = arg ⁡ max ⁡ σ P ( X ; θ ) = arg ⁡ max ⁡ σ ∑ i = 1 N [ log ⁡ 1 2 π + log ⁡ 1 σ − ( x i − μ ) 2 2 σ 2 ] \begin{aligned} \sigma_{MLE}^2 & = \mathop{\arg\max}\limits_{\sigma}P(X;\theta) \\ & = \mathop{\arg\max}\limits_{\sigma} \sum_{i=1}^N [\log \frac{1}{\sqrt{2\pi}} + \log \frac{1}{\sigma} - \frac{(x_i - \mu)^2}{2\sigma^2}] \end{aligned} σMLE2=σargmaxP(X;θ)=σargmaxi=1N[log2π 1+logσ12σ2(xiμ)2]
    同理,上述公式中只有 log ⁡ 1 σ \log\frac{1}{\sigma} logσ1 − ( x i − μ ) 2 2 σ 2 -\frac{(x_i - \mu)^2}{2\sigma^2} 2σ2(xiμ)2中包含 σ \sigma σ,因此:
    将第1项进行变换 log ⁡ 1 σ = log ⁡ σ − 1 = − log ⁡ σ \log\frac{1}{\sigma} = \log \sigma^{-1} = -\log \sigma logσ1=logσ1=logσ
    提出负号,与 arg ⁡ max ⁡ \arg\max argmax抵消;
    = arg ⁡ max ⁡ σ ∑ i = 1 N [ log ⁡ 1 σ − ( x i − μ ) 2 2 σ 2 ] = arg ⁡ max ⁡ σ ∑ i = 1 N [ − log ⁡ σ − ( x i − μ ) 2 2 σ 2 ] = arg ⁡ min ⁡ σ ∑ i = 1 N [ log ⁡ σ + ( x i − μ ) 2 2 σ 2 ] \begin{aligned} & = \mathop{\arg\max}\limits_{\sigma}\sum_{i=1}^N [\log \frac{1}{\sigma} - \frac{(x_i - \mu)^2}{2\sigma^2}] \\ & = \mathop{\arg\max}\limits_{\sigma}\sum_{i=1}^N [-\log \sigma - \frac{(x_i - \mu)^2}{2\sigma^2}] \\ & = \mathop{\arg\min}\limits_{\sigma}\sum_{i=1}^N [\log \sigma + \frac{(x_i - \mu)^2}{2\sigma^2}] \end{aligned} =σargmaxi=1N[logσ12σ2(xiμ)2]=σargmaxi=1N[logσ2σ2(xiμ)2]=σargmini=1N[logσ+2σ2(xiμ)2]
    仍然是求最值操作,对 ∑ i = 1 N [ log ⁡ σ + ( x i − μ ) 2 2 σ 2 ] \sum_{i=1}^N [\log \sigma + \frac{(x_i - \mu)^2}{2\sigma^2}] i=1N[logσ+2σ2(xiμ)2] σ \sigma σ求偏导
    μ \mu μ的求导操作,这里将 μ \mu μ所在部分看作常数
    整理后令其导数结果为零
    等式两端同乘 σ 3 \sigma^3 σ3,进行化简;
    ∂ ∂ σ ( ∑ i = 1 N [ log ⁡ σ + ( x i − μ ) 2 2 σ 2 ] ) = ∑ i = 1 N ( 1 σ + 1 2 ( x i − μ ) 2 ⋅ ( − 2 ) σ − 3 ) = ∑ i = 1 N ( 1 σ − ( x i − μ ) 2 σ − 3 ) ≜ 0 → ∑ i = 1 N σ 2 = ∑ i = 1 N ( x i − μ ) 2 \begin{aligned} \frac{\partial}{\partial \sigma}(\sum_{i=1}^N [\log \sigma + \frac{(x_i - \mu)^2}{2\sigma^2}]) & = \sum_{i=1}^N(\frac{1}{\sigma} + \frac{1}{2}(x_i - \mu)^2 \cdot (-2)\sigma^{-3}) \\ & = \sum_{i=1}^N(\frac{1}{\sigma} - (x_i - \mu)^2 \sigma^{-3}) \triangleq 0 \\ & \to \sum_{i=1}^N \sigma^2 = \sum_{i=1}^N(x_i - \mu)^2 \end{aligned} σ(i=1N[logσ+2σ2(xiμ)2])=i=1N(σ1+21(xiμ)2(2)σ3)=i=1N(σ1(xiμ)2σ3)0i=1Nσ2=i=1N(xiμ)2
    然而, σ 2 \sigma^2 σ2中不含 x i x_i xi,因此 ∑ i = 1 N σ 2 = N σ 2 \sum_{i=1}^N \sigma^2 = N\sigma^2 i=1Nσ2=Nσ2,最终化简结果有:
    σ 2 = 1 N ∑ i = 1 N ( s i − μ ) 2 \sigma^2 = \frac{1}{N} \sum_{i=1}^N(s_i - \mu)^2 σ2=N1i=1N(siμ)2
    由于 μ M L E \mu_{MLE} μMLE最优解样本均值,因此上式自然是 方差的求解方式

综上,我们使用极大似然估计对1维高斯分布的最优参数进行求解。分别是:
μ M L E = 1 N ∑ i = 1 N x i σ M L E 2 = 1 N ∑ i = 1 N ( s i − μ M L E ) 2 \begin{aligned} \mu_{MLE} & = \frac{1}{N}\sum_{i=1}^N x_i \\ \sigma_{MLE}^2 & = \frac{1}{N} \sum_{i=1}^N(s_i - \mu_{MLE})^2 \end{aligned} μMLEσMLE2=N1i=1Nxi=N1i=1N(siμMLE)2
我们通常称极大似然估计求解的 σ M L E 2 \sigma_{MLE}^2 σMLE2有偏估计
有偏估计,自然是‘有偏差的估计’,使用极大似然估计的结果与‘真实结果’之间存在距离;

既然存在有偏估计,那肯定也存在无偏估计。我们下一节将介绍关于使用极大似然估计求解高斯分布最优参数中的有偏估计与无偏估计。

相关参考:
机器学习-白板推导系列(二)-数学基础

你可能感兴趣的:(机器学习,概率论,python)