從最大似然估計到EM算法深入--Apple的學(xué)習(xí)筆記

一袁余,思考問題

  1. L(x; θ)是似然函數(shù),那么θ代表什么咱揍?

    θ代表的是概率颖榜,參考《圖解EM算法投硬幣的例子good.pdf》
    尋找具有給定觀測值(x值)的最大可能性的θ值,參考《為什么要使用最大似然估計good.docx》
    似然函數(shù)實質(zhì)上是樣本的分布律或分布密度。

  2. 最大似然估計是干什么的朱转?

    就是估計一個最大最接近的真實情況的概率蟹地。

  3. 最大似然估計法的一般步驟?

    寫似然函數(shù)L藤为;取對數(shù)怪与;求導(dǎo)數(shù),得駐點缅疟,最大值點分别;作結(jié)論。

  4. 最大似然估計和EM算法的區(qū)別存淫?

    EM算法中需要用到最大似然估計的思想耘斩。即已知某個參數(shù)能使這個樣本出現(xiàn)的概率最大,我們當(dāng)然不會再去選擇其它小概率的樣本桅咆,所以干脆就把這個參數(shù)作為預(yù)計的真實值括授。
    所以M步驟就用到了最大似然去估計Q去優(yōu)化θ。

  5. EM算法的終結(jié)條件是什么岩饼?

    用迭代法的話荚虚,最后的終止條件可以自定義,當(dāng)?shù)揭欢ù螖?shù)籍茧,或者算法收斂到一定精度則停止版述。參考《圖解EM算法投硬幣的例子good.pdf》大概第10次的時候停止了。一開始的概率θ是估計的寞冯,然后求出期望來代替實際值渴析。就又可以求概率θ。依次循環(huán)的一個過程吮龄。

  6. Jasen不等式和EM算法有什么關(guān)系俭茧?

    EM算法需要利用Jasen不等式來計算和推導(dǎo)。

  7. 推導(dǎo)的公式與實際工程計算有什么關(guān)系漓帚?

    推導(dǎo)的目的是證明了了l(θ)會單調(diào)增加母债。一種收斂方法是l(θ)不再變化,還有一種就是變化幅度很小胰默。EM可以看作是J的坐標(biāo)上升法,E步固定θ漓踢,優(yōu)化Q牵署,M步固定Q優(yōu)化θ。
    直白的說喧半,就是證明每次調(diào)參奴迅,趨勢是向極大似然值走的,并且結(jié)果收斂。

二取具,Python動手實驗


import numpy
import scipy.stats

#硬幣投擲結(jié)果
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個數(shù)據(jù)中脖隶,包括5正5反,對A投出5正5反的概率為
        contribution_A = scipy.stats.binom.pmf(num_heads,len_observation,theta_A)
        # 第一組的10個數(shù)據(jù)中暇检,包括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)

        #更新在當(dāng)前參數(shù)下A,B硬幣產(chǎn)生的正反面次數(shù)
        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 :觀測數(shù)據(jù)
    :param prior:模型初值
    :param tol:迭代結(jié)束閾值
    :param iterations:最大迭代次數(shù)
    :return:局部最優(yōu)的模型參數(shù)
    """
    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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末构蹬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子悔据,更是在濱河造成了極大的恐慌庄敛,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件科汗,死亡現(xiàn)場離奇詭異藻烤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)头滔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門怖亭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拙毫,你說我怎么就攤上這事依许。” “怎么了缀蹄?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵峭跳,是天一觀的道長。 經(jīng)常有香客問我缺前,道長蛀醉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任衅码,我火速辦了婚禮拯刁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘逝段。我一直安慰自己垛玻,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布奶躯。 她就那樣靜靜地躺著帚桩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嘹黔。 梳的紋絲不亂的頭發(fā)上账嚎,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼郭蕉。 笑死疼邀,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的召锈。 我是一名探鬼主播旁振,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼烟勋!你這毒婦竟也來了规求?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤卵惦,失蹤者是張志新(化名)和其女友劉穎阻肿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沮尿,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡丛塌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了畜疾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赴邻。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖啡捶,靈堂內(nèi)的尸體忽然破棺而出姥敛,到底是詐尸還是另有隱情,我是刑警寧澤瞎暑,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布彤敛,位于F島的核電站,受9級特大地震影響了赌,放射性物質(zhì)發(fā)生泄漏墨榄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一勿她、第九天 我趴在偏房一處隱蔽的房頂上張望袄秩。 院中可真熱鬧,春花似錦逢并、人聲如沸之剧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽背稼。三九已至,卻和暖如春辩恼,著一層夾襖步出監(jiān)牢的瞬間雇庙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工灶伊, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留疆前,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓聘萨,卻偏偏與公主長得像竹椒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子米辐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容