本节将介绍一个在统计机器学习中占据重要地位的分布——高斯分布。
高斯分布(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) X∼N(μ,σ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()
多元正态分布是一维正态分布向多维的推广。其充分统计量是数学期望和协方差矩阵,分别记作: μ , Σ \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 x∈X,是数据集合 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)
上一节介绍到,数据集合是由 大量重复试验 产生的样本所组成的集合。并介绍了向量维度是 描述样本特征的一组值的数量。
现已知一个数据集合 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 xi∈Rp
如果数据集合 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) xi∼iidN(μ,Σ)
我们在第一部分介绍了高斯分布,回想一个问题(以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=1∏NP(xi;θ)=i=1∑NlogP(xi;θ)=i=1∑Nlog[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=1∑N[log2πσ1+logexp(−2σ2(xi−μ)2)]=i=1∑N[log2π1+logσ1−2σ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=1∑N[log2π1+logσ1−2σ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=1∑N−2σ2(xi−μ)2=μargmini=1∑N2σ2(xi−μ)2=μargmini=1∑N(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=1∑N(xi−μ)2=2×i=1∑N(xi−μ)×(−1)≜0→i=1∑N(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=1∑Nxi
该式就是求均值的公式——从极大似然估计的角度验证了:
μ \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=1∑N[log2π1+logσ1−2σ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=1∑N[logσ1−2σ2(xi−μ)2]=σargmaxi=1∑N[−logσ−2σ2(xi−μ)2]=σargmini=1∑N[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=1∑N[logσ+2σ2(xi−μ)2])=i=1∑N(σ1+21(xi−μ)2⋅(−2)σ−3)=i=1∑N(σ1−(xi−μ)2σ−3)≜0→i=1∑Nσ2=i=1∑N(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=1∑N(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=1∑Nxi=N1i=1∑N(si−μMLE)2
我们通常称极大似然估计求解的 σ M L E 2 \sigma_{MLE}^2 σMLE2为有偏估计;
有偏估计,自然是‘有偏差的估计’,使用极大似然估计的结果与‘真实结果’之间存在距离;
既然存在有偏估计,那肯定也存在无偏估计。我们下一节将介绍关于使用极大似然估计求解高斯分布最优参数中的有偏估计与无偏估计。
相关参考:
机器学习-白板推导系列(二)-数学基础