• 机器学习(七)EM算法、GMM


    一、GMM算法

    EM算法实在是难以介绍清楚,因此我们用EM算法的一个特例GMM算法作为引入。

    1、GMM算法问题描述

    GMM模型称为混合高斯分布,顾名思义,它是由几组分别符合不同参数的高斯分布的数据混合而成的。

    假设有n个样本点(x_{1},x_{2},...,x_{n}),它们来自K个不同的高斯分布。有如下参数:

    1、不同高斯分布的数据占比:(pi_{i})
    2、每个高斯分布的均值与方差:(pi_{i}~N(mu_{i},sigma_{i}^2))

    我们的目的是求出每个(pi_{i})(mu_{i})(sigma_{i})

    因此我们的目标即是求合适的(pi_{i})(mu_{i})(sigma_{i})来最大化对数似然函数。

    [l_{pi,musigma}(x)=sum^{N}_{i=1}log[sum^{K}_{k=1}pi_{k}N(x_{I}|mu_{k},sigma_{k})] ]

    这个目标函数中既有对数又有加和,因此不能直接求导因此我们采用迭代的方法。

    2、GMM迭代方法描述

    Step1:对于每一个样本点i,计算它由不同组分(第k个组分)生成的概率$$r(i,k)=dfrac{pi_{k}N(x_{i}|mu_{k},sigma_{k})}{sum^{K}{j=1}pi{j}N(x_{i}|mu_{j},sigma_{j})}$$
    Step2:由各个样本点的(r(i,k))更新参数(pi_{i})(mu_{i})(sigma_{I})

    Step3:回到Step1,迭代更新

    这其实就是EM算法的E步和M步的过程。

    下面给出通用的EM算法伪代码。

    3、EM算法

    Repeat util 收敛{ (E步):对每个样本$x_{i}$,计算$$Q_{i}(z^{i})=P(z^{i}|x^{i}; heta)$$ (M步):对每个参数$ heta$,有$$ heta:=argmax_{ heta }lleft( heta ight) =argmax_{ heta}sum^{}_{i}sum^{}_{z^{i}}Q_{i}(z^{i})logdfrac{P(x_{i};z_{i}; heta)}{Q_{i}(z_{i})}$$ }

    其中,E步的那个(Q)就是第i个样本的分布,就是那个(r(i,k))
    这个形式可以推导可得,其实是等价的

    M步中,那个公式就是对数似然函数,求使它最大化的参数

    总结:EM算法说到底是一个迭代更新的过程。它首先对各个样本计算分布,然后更新参数;再计算分布,再更新参数……

  • 相关阅读:
    MFC中处理消息的几个函数之间的区别
    双缓冲技术2
    CxImage简单用法2
    C/C++中 const,extern,static,volatile的使用(转帖)
    用BoundsChecker检测内存泄露2
    用BoundsChecker检测内存泄漏
    TrackMouseEvent函数实现鼠标停留响应
    3D——VTK使用
    防止密码被非法获取
    未来界面设计的主流——WPF技术
  • 原文地址:https://www.cnblogs.com/Yolanda7171/p/7242348.html
Copyright © 2020-2023  润新知