zoukankan      html  css  js  c++  java
  • EM算法总结

    https://applenob.github.io/em.html

    EM算法总结

    在概率模型中,最常用的模型参数估计方法应该就是最大似然法

    EM算法本质上也是最大似然,它是针对模型中存在隐变量的情况的最大似然

    下面通过两个例子引入。

    没有隐变量的硬币模型

    假设有两个硬币,AA和BB,这两个硬币具体材质未知,即抛硬币的结果是head的概率不一定是50%。

    在这个实验中,我们每次拿其中一个硬币,抛10次,统计结果。

    实验的目标是统计AA和BB的head朝上的概率,即估计θ̂ Aθ^A和θ̂ Bθ^B。

    对每一枚硬币来说,使用极大似然法来估计它的参数:

    假设硬币AA正面朝上的次数是nAhnhA,反面朝上的次数是:nAtntA。

    似然函数:L(θA)=(θA)nAh(1θA)nAtL(θA)=(θA)nhA(1−θA)ntA。

    对数似然函数:logL(θA)=nAhlog(θA)+nAtlog(1θA)logL(θA)=nhA⋅log(θA)+ntA⋅log(1−θA)。

    θ̂ A=argmaxθAlogL(θA)θ^A=argmaxθAlogL(θA) 。

    对参数求偏导:logL(θA)θA=nAhθAnAt1θA∂logL(θA)∂θA=nhAθA−ntA1−θA。

    令上式为00,解得:θ̂ A=nAhnAh+nAtθ^A=nhAnhA+ntA。

    θ̂ A=numberofheadsusingcoinAtotalnumberofflipsusingcoinAθ^A=numberofheadsusingcoinAtotalnumberofflipsusingcoinA。

     

    有隐变量的硬币模型

    这个问题是上一个问题的困难版,即给出一系列统计的实验,但不告诉你某组实验采用的是哪枚硬币,即某组实验采用哪枚硬币成了一个隐变量

    这里引入EM算法的思路

    • 1.先随机给出模型参数的估计,以初始化模型参数。
    • 2.根据之前模型参数的估计,和观测数据,计算隐变量的分布
    • 3.根据隐变量的分布,求联合分布的对数关于隐变量分布的期望
    • 4.重新估计模型参数,这次最大化的不是似然函数,而是第3步求的期望

    一般教科书会把EM算法分成两步:E步和M步,即求期望和最大化期望。

    E步对应上面2,3;M对应4。

     

    EM算法

    输入:观测变量数据YY,隐变量数据ZZ,联合分布P(Y,Z|θ)P(Y,Z|θ),条件分布P(Z|Y,θ)P(Z|Y,θ);

    输出:模型参数θθ。

    • 1.选择参数的初始值θ(0)θ(0),开始迭代;
    • 在第i+1i+1次迭代:
      • 2.E步:Q(θ,θ(i))=zlogP(Y,Z|θ)P(Z|Y,θ(i))Q(θ,θ(i))=∑zlogP(Y,Z|θ)P(Z|Y,θ(i))
      • 3.M步:Q(i+1)=argmaxθQ(θ,θ(i))Q(i+1)=argmaxθQ(θ,θ(i))
    • 4.重复2,3直至收敛。
  • 相关阅读:
    Unity 关于特效和UI显示的优先级问题
    使用Frida神器轻松实现hook C/C++方法
    理解 Android Binder 机制(三):Java层
    理解 Android Binder 机制(二):C++层
    理解 Android Binder 机制(一):驱动篇
    Android Hook Instrumentation
    Cocos Creator 中根据uuid快速定位资源
    android 通用混淆配置
    vToRay + bbr 加速
    SpringBoot项目单元测试
  • 原文地址:https://www.cnblogs.com/DjangoBlog/p/10402692.html
Copyright © 2011-2022 走看看