Clustering – Probabilistic Model-Based Methods (2)

4_2_probabilistic_Model_based_methods_2

前一篇我们已经将隐变量的先验概率,隐变量的后验概率,和样本的联合概率都表示出来了,这一节我们来详细看一下EM算法。

2.1 最大似然

假设现在的数据集表示为x1,x2,...,xN,则我们可以用一个矩阵X来表示这个数据集。假设每个数据的维度是D维的,那么我们可以把矩阵的每一行表示为数据集中的一条数据xi,矩阵就一共有N行矩阵,这样这个矩阵的规模就是N×D的。我们再把隐变量z也这样表示出来,每个数据对应一条隐变量,假设隐变量的长度是K,那么隐变量矩阵的规模就是N×K

作为一个生成模型,我们可以把高斯混合模型的概率图表示出来:

image-20230106103056512

来源:Pattern Recognition and Machine Learning P433 表示N个独立同分布的数据点,对应隐变量的高斯混合模型概率图

这也是最简单的概率图模型。

根据上一节我们推导出的高斯混合模型公式,我们可以写出对数似然函数l(θ)

(2)l(θ)=lnp(X|π,μ,Σ)=n=1Nln{k=1KπkN(xn|μk,Σk)}

关于这个对数似然函数的奇异性的讨论不做过多介绍,主要讲推导。

2.2 用于高斯混合模型的EM

对似然函数l(θ)的均值μ求偏导,可以得到

(3)μkl(θ)=n=1NπkN(xn|μk,Σk)j=1KπjN(xn|μj,Σj)Σk1(xnμk)=n=1Nγ(znk)Σk1(xnμk)

若似然函数取最大值,则必有偏导数为0,令上式等于0,再尝试整理公式使得将μk移动到等式左边,同时两边乘Σk可以得到

(4)μk=1Nkn=1Nγ(znk)xn

其中

(5)Nk=n=1Nγ(znk)

可以将Nk理解为聚类k的数据点的有效数量。因为k可以看成是某个高斯分布,n指的是某条数据,这个式子就是将每条数据对于第k个高斯分布的贡献值或者说是责任值之和就是对于Nk的有效数量。那么公式(3)就可以理解成μk就是一个加权平均。并且k=1KNk=N,相当于将每一项的责任值加了起来。

同理可以求Σk的偏导数,得

(6)Σk=1Nkn=1Nγ(znk)(xnμk)(xnμk)T

上面两式子存在一个约束条件,就是πk的和必须为1,这点我们在上一篇文章已经讲过,所以对于πk,我们需要使用拉格朗日乘数法来进行计算:

(7)lnp(X|π,μ,Σ)+λ(k=1Kπk1)

代入本篇的(1)式,可以得到

(8)n=1NN(xn|μk,Σk)j=1KπjN(xn|μj,Σj)+λ=0

(7)式的第一项相比于(2)少了一个πk,等式两边同时乘πk,可以得到

(9)Nk+πkλ=0

从1到k进行积分,可以得到

(10)λ=N

将结论带入到(7),可以得到

(11)πk=NkN

我们得到了第k个分量的"混合系数",或者说是责任平均值。

求出来μk,Σk,πk之后,我们就可以来说一下EM算法的过程:

  1. 初始化μk,Σk,πk,计算对数似然函数(对应本片中的公式(1))的初始值。

  2. E步骤。计算当前参数值的"责任":

    (12)γ(znk)=πkN(x|μk,Σk)j=1KπjN(x|μj,Σj)
  3. M步骤,重新计算参数:

    (13)μknew=1Nkn=1Nγ(znk)xnΣknew=1Nkn=1Nγ(znk)(xnμknew)(xnμknew)Tπknew=NkN

    其中:

    (14)Nk=n=1Nγ(znk)

    检查参数或者新的对数似然函数是否收敛,若收敛则结束,否则使用新的参数并返回第2步。

高斯混合模型的EM算法步骤如上所述。