一、高斯混合模型定义
高斯混合模型具有如下概率分布形式:
$P(y| heta)=sumlimits_{k=1}^{K}alpha_kphi(y| heta_k)$ (9.24)
其中,$alpha$是系数,$alpha_kgeqslant0$,$sumlimits_{k=1}^{K}alpha_k=1$;$phi(y| heta_k)$是高斯分布,$ heta_k=(mu_k,sigma_{k}^{2})$,
$phi(y| heta_k)=frac{1}{sqrt{2pi}sigma_k}expleft(-frac{(y-mu_k)^2}{2sigma_{k}^{2}} ight)$ (9.25)
为第$k$个高斯分布。
二、确定模型的对数似然函数
设想观测数据$y_j$,$j=1,2,cdots,N$是这样产生的:首先依概率$alpha_k$选择第k个高斯分布模型$phi(y| heta_k)$;然后依第$k$个分模型的概率分布$phi(y| heta_k)$生成观测数据$y_j$。反映观测数据$y_j$来自第$k$个分模型的数据是未知的,$k=1,2,cdots,K$,以隐变量$gamma_{jk}$表示,其定义如下:
$gamma_{jk}=1, if y_j from phi_k\ gamma_{jk}=0, else$ (9.27)
$gamma_{jk}$是0-1随机变量。
模型的对数似然函数为
$logP(y| heta)=logprodlimits_{j=1}^{N}[sumlimits_{k=1}^{K}alpha_kphi(y_j| heta_k)]=sumlimits_{j=1}^{N}logsumlimits_{k=1}^{K}alpha_kphi(y_j| heta_k)$ (9.28)
由于该式子包含累和的对数的形式,直接用极大似然法处理很困难,在这里采用EM算法进行参数求解。
三、EM算法的E步:确定Q函数
$Q( heta, heta^{(i)})=sumlimits_{Z}P(Z|Y, heta^{(i)})logP(Y,Z| heta)=sumlimits_{k=1}^{K}sumlimits_{j=1}^{N}P(gamma_{jk}|y_j, heta^{(i)})logalpha_kphi(y_j| heta_k)$
由于$P(gamma_{jk}|y_j, heta^{(i)})$表示在观测数据和该次迭代参数的条件下,数据$y_j$来自高斯分布$k$的概率,因此易得
$P(gamma_{jk}|y_j, heta^{(i)})=frac{alpha_k^{(i)}phi(y_j| heta_k^{(i)})}{sumlimits_{k=1}^{K}alpha_k^{(i)}phi(y_j| heta_k^{(i)})}=hat{gamma_{jk}}$
$hat{gamma_{jk}}$表示分模型$k$对观测数据$j$的响应度, 所以
$Q( heta, heta^{(i)})=sumlimits_{k=1}^{K}left{sumlimits_{j=1}^{N}hat{gamma_{jk}}logalpha_k+sumlimits_{j=1}^{N}hat{gamma_{jk}}left[logleft(frac{1}{sqrt(2pi)} ight)-logsigma_k-frac{1}{2sigma_{k}^{2}}(y_j-mu_k)^2 ight] ight}\=sumlimits_{k=1}^{K}n_klogalpha_k+sumlimits_{k=1}^{K}sumlimits_{j=1}^{N}hat{gamma_{jk}}left[logleft(frac{1}{sqrt{2pi}} ight)-logsigma_k-frac{1}{2sigma_{k}^{2}}(y_j-mu_k)^2 ight]$ (9.29)
其中$n_k=sum_{j=1}^{N}hat{gamma_{jk}}$。
四、EM算法的M步
迭代的M步是求函数$Q( heta, heta^{(i)})$对$ heta$的极大值,即求新一轮迭代的模型参数:
$ heta^{(i+1)}=argmaxQ( heta, heta^{(i)})$
用$hat{mu_k}$,$hat{sigma_k^2}$及$hat{alpha_k}$,$k=1,2,cdots,K$,表示$ heta^{(i+1)}$的各参数。求$hat{mu_k}$,$hat{sigma_k^2}$只需将式(9.29)分别对$hat{mu_k}$,$hat{sigma_k^2}$求偏导数并令其为0,即可得到;求$hat{alpha_k}$是在$sumlimits_{k=1}^{K}alpha_k=1$条件下求偏导数并令其为0得到的。结果如下:
$hat{mu_k}=frac{sumlimits_{j=1}^{N}hat{gamma_{jk}}y_j}{sumlimits_{j=1}^{N}hat{gamma_{jk}}}$ (9.30)
$hat{sigma_{k}^{2}}=frac{sumlimits_{j=1}^{N}hat{gamma_{jk}}(y_j-mu_k)^2}{sumlimits_{j=1}^{N}hat{gamma_{jk}}}$ (9.31)
$hat{alpha_k}=frac{sumlimits_{j=1}^{N}hat{gamma_{jk}}}{N}$ (9.32)
重复以上计算,直到对数似然函数值不再有明显的变化为止。
实际计算中M步只需计算$hat{gamma_{jk}}$,E步计算出相应参数即可。