• 高斯混合模型详细推导


    一、高斯混合模型定义

      高斯混合模型具有如下概率分布形式:

    $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步计算出相应参数即可。

  • 相关阅读:
    python函数及模块
    Python分支结构及循环结构
    python基本的知识
    11.21学习总结
    进度日报28
    进度日报27
    进度日报26
    进度日报25
    进度日报24
    11.14学习总结
  • 原文地址:https://www.cnblogs.com/ningjing213/p/10392175.html
Copyright © 2020-2023  润新知