zoukankan      html  css  js  c++  java
  • 机器学习 : 高斯混合模型及EM算法

    Mixtures of Gaussian

    这一讲,我们讨论利用EM (Expectation-Maximization)做概率密度的估计。假设我们有一组训练样本x(1),x(2),...x(m),因为是unsupervised的学习问题,所以我们没有任何y的信息。

    我们希望利用一个联合分布p(x(i),z(i))=p(x(i)|z(i))p(z(i))来拟合这些数据, 其中z(i)Multinomial(ϕ) (ϕj0, kj=1ϕj=1,参数ϕj给出了概率p(z(i)=j)),并且 x(i)|z(i)=jN(μj,Σj),我们让k表示z(i)可能值的个数,因此在这个模型中,每一个训练样本x(i)是由随机取某一个值的变量z(i)生成的,所以x(i)是从k个的高斯分布中的一个(由z(i)指示)提取出来的。这个称为高斯混合模型,我们也要注意到z(i)是隐含的随机变量,高斯混合模型涉及的参数是ϕ,μ,Σ,为了估计这些变量,我们可以建立如下的表达式:

    l(ϕ,μ,Σ)=i=1mlogp(x(i);ϕ,μ,Σ)=i=1mlogz(i)=1kp(x(i)|z(i);μ,Σ)p(z(i),ϕ)

    我们发现,通过求偏导数求极值的方法,无法得到这些参数的解,从上面的表达式可以看出,随机变量z(i)告诉了我们x(i)是从k个高斯分布中的其中一个生成的,如果我们知道是哪一个高斯分布,或者说如果知道z(i)的值,那我们可以利用最大似然估计的方法估计参数
    ϕ,μ,Σ,如果z(i)已知,那么上式可以写成:

    l(ϕ,μ,Σ)=i=1mlogp(x(i)|z(i);μ,Σ)+logp(z(i),ϕ)

    利用最大似然估计,可以求得这些参数为:
    ϕjμjΣj=1mi=1m1{z(i)=j}=mi=11{z(i)=j}x(i)mi=11{z(i)=j}=mi=11{z(i)=j}(x(i)μj)(x(i)μj)Tmi=11{z(i)=j}

    从上面的表达式可以看出,如果z(i)的值已知,那么参数ϕ,μ,Σ的估计与之前介绍的Gaussian discriminant analysis 模型对参数的估计是一样的,这里的z(i)就像Gaussian discriminant analysis 模型中的输出y一样。

    但是遗憾的是,我们不知道z(i)的值,所以这里我们要介绍另外一种unsupervised的学习方法,称为EM算法,EM算法主要分为两步,在E-step,我们主要对z(i)的值做猜测,在M-step,我们在E-step假设的基础上,利用最大似然估计求参数ϕ,μ,Σ,算法主要流程如下:

    Repeat until convergence {

    E-step: 对于每一个i,j,设置:

    w(i)j:=p(z(i)=j|x(i);ϕ,μ,Σ)

    M-step: 跟新如下参数:

    ϕj:=1mi=1mw(i)j

    μj:=mi=1w(i)jx(i)mi=1w(i)j

    Σj:=mi=1w(i)j(x(i)μj)(x(i)μj)Tmi=1w(i)j

    }

    在E-step,我们可以通过给定的x(i)和当前估计的参数计算z(i)的后验概率,利用贝叶斯估计,我们可以得到:

    p(z(i)=j|x(i);ϕ,μ,Σ)=p(x(i)|z(i)=j;μ,Σ)p(z(i)=j,ϕ)kl=1p(x(i)|z(i)=l;μ,Σ)p(z(i)=l,ϕ)

    这里,p(x(i)|z(i)=j;μ,Σ)通过计算一个均值为μj,协方差为Σj的高斯分布在x(i)处的概率密度得到,p(z(i)=j,ϕ)
    是由ϕj给出,在E-step计算的w(i)j的值,表示我们对z(i)的一种弱估计。

    同样,我们也可以将M-step的参数跟新与知道z(i)确切值的参数估计的表达式进行对比,可以看出两者是一致的,只不过前面的表达式1{z(i)=j}指出了我们利用哪个高斯分布,而现在换成了w(i)j

    EM 算法同样会让人联想起k均值算法,k均值是硬聚类,将样本聚到某一类里,而EM算法是弱聚类,样本所属的高斯分布由w(i)j估计。

    参考来源:

    Andrew Ng, “Machine Learning”, Stanford University.

  • 相关阅读:
    Oracle数据库的权限、用户、角色管理
    linux address already in use:make_sock:could not bind to address [::]:80
    linux上ln命令详细说明
    IPhone多线程下载器,支持多种主题
    Android 开发从入门到精通
    iOS开发视频教程下载/iphone开发视频教程下载
    oscocos2d游戏开发基础进度条开发笔记
    分享10个Android游戏源码,要的赶紧来哈
    android中点中overlay弹出带尾巴的气泡的实现
    分享20个Android游戏源码,希望大家喜欢哈!
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9412501.html
Copyright © 2011-2022 走看看