高斯模型
单高斯模型
当样本数据
x
∈
R
x\in\mathbb{R}
x∈R 是一维时,高斯分布服从以下概率密度函数:
P
(
x
∣
θ
)
=
1
2
π
σ
2
e
x
p
(
−
(
x
−
μ
)
2
2
σ
2
)
P(x|\theta)=\frac{1}{\sqrt{2\pi\sigma^{2}}}exp(-\frac{(x-\mu)^{2}}{2\sigma^{2}})
P(x∣θ)=2πσ21exp(−2σ2(x−μ)2)
其中,
μ
\mu
μ为数据均值(期望),
σ
\sigma
σ为数据标准差;
当样本数据
x
∈
R
D
x\in\mathbb{R}^{D}
x∈RD 是多维时,高斯分布服从以下概率密度函数:
P
(
x
∣
θ
)
=
1
(
2
π
)
D
2
∣
∑
∣
1
2
e
x
p
(
−
(
x
−
μ
)
T
∑
−
1
(
x
−
μ
)
2
)
P(x|\theta)=\frac{1}{(2\pi)^{\frac{D}{2}}|\sum|^{\frac{1}{2}}}exp(-\frac{(x-\mu)^{T}\sum^{-1}(x-\mu)}{2})
P(x∣θ)=(2π)2D∣∑∣211exp(−2(x−μ)T∑−1(x−μ))
其中,
μ
∈
R
D
\mu\in\mathbb{R}^{D}
μ∈RD为数据均值(期望),
∑
∈
R
D
×
D
\sum\in\mathbb{R}^{D\times D}
∑∈RD×D为数据的协方差矩阵(协方差矩阵回顾其他算法-卡尔曼滤波器),
D
D
D为数据维度;
高斯混合模型GMM
高斯混合模型(Gaussian Mixture Model)可以看作是由多个单高斯模型集成的模型,理论上,混合模型可以使用任何的概率分布作为子模型,使用高斯模型是因为高斯分布具有更广泛的物理意义。
比如对以下二维数据:
如果仅通过单高斯模型,是不能很好拟合其分布的,但通过(多峰的)高斯混合模型,可以较容易拟合该数据的分布。
定义以下信息:
- x j x_{j} xj表示第 j j j个观测数据, j = 1 , 2 , . . . , N j=1,2,...,N j=1,2,...,N
- K K K是混合模型中子高斯模型的数量, k = 1 , 2 , . . . , K k=1,2,...,K k=1,2,...,K
-
α
k
\alpha_{k}
αk是观测数据的混合系数,反映了第
k
k
k个子模型在决定数据分布时占有的权重,满足:
∑ k = 1 K α k = 1 \sum_{k=1}^{K}\alpha_{k}=1 k=1∑Kαk=1 - ϕ ( x ∣ θ k ) \phi(x|\theta_{k}) ϕ(x∣θk)是第 k k k个子模型的高斯分布密度函数(单高斯模型), θ k = ( μ k , ∑ k ) \theta_{k}=(\mu_{k},\sum_{k}) θk=(μk,∑k)
因此,高斯混合模型的概率分布为:
P
(
x
∣
θ
)
=
∑
k
=
1
K
α
k
ϕ
(
x
∣
θ
k
)
P(x|\theta)=\sum_{k=1}^{K}\alpha_{k}\phi(x|\theta_{k})
P(x∣θ)=k=1∑Kαkϕ(x∣θk)
参数估计
单高斯模型参数估计-极大似然
对于单高斯模型,可以用极大似然法估计参数
θ
\theta
θ的值:
θ
=
a
r
g
m
a
x
θ
L
(
θ
)
\theta=argmax_{\theta}L(\theta)
θ=argmaxθL(θ)
假设每个数据点相互独立,似然函数(Likelihood)可以通过各个数据点的概率密度连乘得到,为了便于计算,可以在似然函数上取对数(Log-Likelihood):
L
(
θ
)
=
∏
j
=
1
N
P
(
x
j
∣
θ
)
→
l
o
g
(
L
(
θ
)
)
=
∑
j
=
1
N
l
o
g
(
P
(
x
j
∣
θ
)
)
L(\theta)=\prod_{j=1}^{N}P(x_{j}|\theta)\rightarrow log(L(\theta))=\sum_{j=1}^{N}log(P(x_{j}|\theta))
L(θ)=j=1∏NP(xj∣θ)→log(L(θ))=j=1∑Nlog(P(xj∣θ))
极大似然估计参数的推导过程回顾非线性规划-三种常见参数估计算法及联系
极大似然包括两个步骤:
- 1.找到似然函数
- 2.对似然函数求导,令导数为零,直接得到解
对于高斯混合模型,可以发现,其对数似然函数为:
l
o
g
(
L
(
θ
)
)
=
∑
j
=
1
N
l
o
g
(
P
(
x
j
∣
θ
)
)
=
∑
j
=
1
N
l
o
g
(
∑
k
=
1
K
α
k
ϕ
(
x
j
∣
θ
k
)
)
log(L(\theta))=\sum_{j=1}^{N}log(P(x_{j}|\theta))=\sum_{j=1}^{N}log(\sum_{k=1}^{K}\alpha_{k}\phi(x_{j}|\theta_{k}))
log(L(θ))=j=1∑Nlog(P(xj∣θ))=j=1∑Nlog(k=1∑Kαkϕ(xj∣θk))
这里不能像单高斯模型一样使用极大似然法求导,以获得似然函数的最大参数,因为对一个数据点而言,存在
K
K
K组未知的参数[
α
k
,
θ
k
\alpha_{k},\theta_{k}
αk,θk],考虑通过迭代的方法求解;
高斯混合模型参数估计-EM算法
EM算法回顾 非线性规划-三种常见参数估计算法及联系,对于GMM,隐变量来自 K K K 个子模型;假设样本数据为{ x 1 , x 2 , . . . , x N x_{1},x_{2},...,x_{N} x1,x2,...,xN},EM算法过程如下:
- 1.根据jensen不等式定义对数似然函数的下界
∑ j = 1 N l o g ( ∑ k = 1 K α k ϕ ( x j ∣ θ k ) ) ⇒ ∑ j = 1 N ∑ k = 1 K γ j k l o g ( α k ϕ ( x j ∣ θ k ) γ j k ) \sum_{j=1}^{N}log(\sum_{k=1}^{K}\alpha_{k}\phi(x_{j}|\theta_{k}))\Rightarrow \sum_{j=1}^{N}\sum_{k=1}^{K}\gamma_{jk}log(\frac{\alpha_{k}\phi(x_{j}|\theta_{k})}{\gamma_{jk}}) j=1∑Nlog(k=1∑Kαkϕ(xj∣θk))⇒j=1∑Nk=1∑Kγjklog(γjkαkϕ(xj∣θk)) - 2.E步:根据当前参数,计算期望
γ j k = α k ϕ ( x j ∣ θ k ) ∑ k = 1 K α k ϕ ( x j ∣ θ k ) \gamma_{jk}=\frac{\alpha_{k}\phi(x_{j}|\theta_{k})}{\sum_{k=1}^{K}\alpha_{k}\phi(x_{j}|\theta_{k})} γjk=∑k=1Kαkϕ(xj∣θk)αkϕ(xj∣θk)
代入下界函数作为新的似然函数:
L ( θ ) = ∑ j = 1 N ∑ k = 1 K γ j k l o g ( α k ϕ ( x j ∣ θ k ) γ j k ) L(\theta)=\sum_{j=1}^{N}\sum_{k=1}^{K}\gamma_{jk}log(\frac{\alpha_{k}\phi(x_{j}|\theta_{k})}{\gamma_{jk}}) L(θ)=j=1∑Nk=1∑Kγjklog(γjkαkϕ(xj∣θk)) - 3.M步:极大似然
θ = a r g m a x θ ( L ( θ ) ) \theta=argmax_{\theta}(L(\theta)) θ=argmaxθ(L(θ))
通过解导数为零的根,可以更新参数 θ = α k , μ k , ∑ k , k = { 1 , 2 , . . . , K } \theta=\alpha_{k},\mu_{k},\sum_{k},k=\left\{1,2,...,K\right\} θ=αk,μk,∑k,k={1,2,...,K}:
μ k = ∑ j = 1 N γ j k x j ∑ j = 1 N γ j k , ∑ k = ∑ j = 1 N γ j k ( x j − μ k ) ( x j − μ k ) T ∑ j = 1 N γ j k , α k = ∑ j = 1 N γ j k N , k = 1 , 2 , . . , K \mu_{k}=\frac{\sum_{j=1}^{N}\gamma_{jk}x_{j}}{\sum_{j=1}^{N}\gamma_{jk}},\sum_{k}=\frac{\sum_{j=1}^{N}\gamma_{jk}(x_{j}-\mu_{k})(x_{j}-\mu_{k})^{T}}{\sum_{j=1}^{N}\gamma_{jk}},\alpha_{k}=\frac{\sum_{j=1}^{N}\gamma_{jk}}{N},k=1,2,..,K μk=∑j=1Nγjk∑j=1Nγjkxj,k∑=∑j=1Nγjk∑j=1Nγjk(xj−μk)(xj−μk)T,αk=N∑j=1Nγjk,k=1,2,..,K - 4.检验模型是否收敛,如果不收敛,则回到第2步
使用EM算法迭代多次后,可以得到高斯混合模型的参数,注意:EM 算法具备收敛性,但并不保证找到全局最大值,有可能找到局部最大值。解决方法是初始化几次不同的参数进行迭代,取结果最好的那次;
GMM与k-means
k-means回顾 机器学习笔记本-K均值算法,GMM与k-means都常用作聚类算法,两者都使用EM算法进行参数估计(学习),两者的比较如下:
相同点:
- 都是迭代执行的算法,且迭代的策略也相同:算法开始执行时先对需要计算的参数赋初值,然后交替执行两个步骤,一个步骤是对数据的估计(k-means是估计每个点所属簇;GMM是计算隐含变量的期望);第二步是用上一步算出的估计值重新计算参数值,更新目标参数(k-means是计算簇心位置;GMM是计算各个高斯分布的均值和协方差矩阵以及混合系数);
- k-means可以看成是一种特殊的GMM
不同点:
- 1.需要计算的参数不同:k-means是簇心位置;GMM是各个高斯分布的参数;
- 2.计算目标参数的方法不同:k-means是计算当前簇中所有元素的位置的均值;GMM是基于概率的算法,通过计算似然函数的最大值实现分布参数的求解的