从最大似然估计到EM算法深入--Apple的学习笔记

一,思考问题

  1. L(x; θ)是似然函数,那么θ代表什么?

    θ代表的是概率,参考《图解EM算法投硬币的例子good.pdf》
    寻找具有给定观测值(x值)的最大可能性的θ值,参考《为什么要使用最大似然估计good.docx》
    似然函数实质上是样本的分布律或分布密度。

  2. 最大似然估计是干什么的?

    就是估计一个最大最接近的真实情况的概率。

  3. 最大似然估计法的一般步骤?

    写似然函数L;取对数;求导数,得驻点,最大值点;作结论。

  4. 最大似然估计和EM算法的区别?

    EM算法中需要用到最大似然估计的思想。即已知某个參数能使这个样本出现的概率最大,我们当然不会再去选择其它小概率的样本,所以干脆就把这个參数作为预计的真实值。
    所以M步骤就用到了最大似然去估计Q去优化θ。

  5. EM算法的终结条件是什么?

    用迭代法的话,最后的终止条件可以自定义,当迭代到一定次数,或者算法收敛到一定精度则停止。参考《图解EM算法投硬币的例子good.pdf》大概第10次的时候停止了。一开始的概率θ是估计的,然后求出期望来代替实际值。就又可以求概率θ。依次循环的一个过程。

  6. Jasen不等式和EM算法有什么关系?

    EM算法需要利用Jasen不等式来计算和推导。

  7. 推导的公式与实际工程计算有什么关系?

    推导的目的是证明了了l(θ)会单调增加。一种收敛方法是l(θ)不再变化,还有一种就是变化幅度很小。EM可以看作是J的坐标上升法,E步固定θ,优化Q,M步固定Q优化θ。
    直白的说,就是证明每次调参,趋势是向极大似然值走的,并且结果收敛。

二,Python动手实验


import numpy
import scipy.stats

#硬币投掷结果
observations = numpy.array([[1,0,0,0,1,1,0,1,0,1],
                        [1,1,1,1,0,1,1,1,0,1],
                        [1,0,1,1,1,1,1,0,1,1],
                        [1,0,1,0,0,0,1,1,0,0],
                        [0,1,1,1,0,1,1,1,0,1]])

def em_single(priors,observations):

    """
    EM算法的单次迭代
    Arguments
    ------------
    priors:[theta_A,theta_B]
    observation:[m X n matrix]

    Returns
    ---------------
    new_priors:[new_theta_A,new_theta_B]
    :param priors:
    :param observations:
    :return:
    """
    counts = {'A': {'H': 0, 'T': 0}, 'B': {'H': 0, 'T': 0}}
    theta_A = priors[0]
    theta_B = priors[1]
    #E step
    for observation in observations:
        len_observation = len(observation)
        num_heads = observation.sum()
        num_tails = len_observation-num_heads
        #二项分布求解公式
        #第一组的10个数据中,包括5正5反,对A投出5正5反的概率为
        contribution_A = scipy.stats.binom.pmf(num_heads,len_observation,theta_A)
        # 第一组的10个数据中,包括5正5反,对B投出5正5反的概率为
        contribution_B = scipy.stats.binom.pmf(num_heads,len_observation,theta_B)
        #print(contribution_A,contribution_B)

        #第一组实验选择的硬币是来自A的概率为
        weight_A = contribution_A / (contribution_A + contribution_B)
        #第一组实验选择的硬币是来自B的概率为
        weight_B = contribution_B / (contribution_A + contribution_B)
        #print(weight_A,weight_B)

        #更新在当前参数下A,B硬币产生的正反面次数
        counts['A']['H'] += weight_A * num_heads
        counts['A']['T'] += weight_A * num_tails
        counts['B']['H'] += weight_B * num_heads
        counts['B']['T'] += weight_B * num_tails

    # M step
    new_theta_A = counts['A']['H'] / (counts['A']['H'] + counts['A']['T'])
    new_theta_B = counts['B']['H'] / (counts['B']['H'] + counts['B']['T'])
    print(new_theta_A,new_theta_B)
    return [new_theta_A,new_theta_B]

def em(observations,prior,tol = 1e-6,iterations=10000):
    """
    EM算法
    :param observations :观测数据
    :param prior:模型初值
    :param tol:迭代结束阈值
    :param iterations:最大迭代次数
    :return:局部最优的模型参数
    """
    iteration = 0;
    while iteration < iterations:
        new_prior = em_single(prior,observations)
        delta_change = numpy.abs(prior[0]-new_prior[0])
        if delta_change < tol:
            break
        else:
            prior = new_prior
            iteration +=1
        #print(new_prior,iteration)
    return [new_prior,iteration]

print("start")
print (em(observations,[0.6,0.5]))
print("end")

三,参考

https://www.cnblogs.com/zfyouxi/p/4297500.html

http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html

https://blog.csdn.net/u011300443/article/details/46763743

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容