從最大似然函數 到 EM算法詳解


極大似然算法

 


 

       本來打算把別人講的好的博文放在上面的,但是感覺那個適合看着玩,我看過之后感覺懂了,然后實際應用就不會了。。。。

    MLP其實就是用來求模型參數的,核心就是“模型已知,求取參數”,模型的意思就是數據符合什么函數,比如我們硬幣的正反就是二項分布模型,再比如我們平時隨機生成的一類數據符合高斯模型。。。

    直接上公式:

     L(Θ) :聯合概率分布函數,就是每個樣本出現的概率乘積。

     x1,x2,x3....xn  : 樣本

     Θ : 模型的參數(比如高斯模型的兩個參數:μ、σ)

     p(xi ; Θ) : 第i個樣本的概率模型

     xi :第i個樣本

  平時使用的時候取對數,完全為了求解方便。(從后面可以看出求導方便):

 

    稱為平均對數似然。而我們平時所稱的最大似然為最大的對數平均似然,即:

 

   舉例一: 

 

舉一個拋硬幣的簡單例子。 現在有一個正反面不是很勻稱的硬幣,如果正面朝上記為H,方面朝上記為T,拋10次的結果如下:

 

 

求這個硬幣正面朝上的概率有多大?

 

很顯然這個概率是0.2。現在我們用MLE的思想去求解它。我們知道每次拋硬幣都是一次二項分布,設正面朝上的概率是,那么似然函數為:

 

 

x=1表示正面朝上,x=0表示方面朝上。那么有:

 

 

求導:

 

 

令導數為0,很容易得到:

 

 

也就是0.2 。

舉例二:

假如我們有一組連續變量的采樣值(x1,x2,…,xn),我們知道這組數據服從正態分布,標准差已知。請問這個正態分布的期望值為多少時,產生這個已有數據的概率最大?

    P(Data | M) = ?

根據公式:

    

可得:

 

  對μ求導可得:

 則最大似然估計的結果為μ=(x1+x2+…+xn)/n

 

  舉例三: 

         

  假設我們要統計全國人民的年均收入,首先假設這個收入服從服從正態分布,但是該分布的均值與方差未知。我們沒有人力與物力去統計全國每個人的收入。我們國家有10幾億人口呢?那么豈不是沒有辦法了?

不不不,有了極大似然估計之后,我們可以采用嘛!我們比如選取一個城市,或者一個鄉鎮的人口收入,作為我們的觀察樣本結果。然后通過最大似然估計來獲取上述假設中的正態分布的參數。

有了參數的結果后,我們就可以知道該正態分布的期望和方差了。也就是我們通過了一個小樣本的采樣,反過來知道了全國人民年收入的一系列重要的數學指標量!

那么我們就知道了極大似然估計的核心關鍵就是對於一些情況,樣本太多,無法得出分布的參數值,可以采樣小樣本后,利用極大似然估計獲取假設中分布的參數值。

 

    注:最大似然函數真的很簡單,剛開始我也一頭霧水。其實我們用的很多函數都可以說是一個最大似然函數,比如符合y = x2、y = kx。。。。都可以當做一個模型去求解一個極大似然函數,只不過我們得到的數據不符合這些模型而已。

    大家有沒有發現只要是求概率的問題,都會寫出一個函數,這個函數其實就是最大似然函數,可以說是目標函數,也可以說是似然函數,把每個數據出現的概率相乘就是似然函數,再求對數,再求均值,再求最值,這就是極大似然了,就是一個名字而已!

 

 

EM算法概述

 


 

       

    EM算法核心:猜(E-step),反思(M-step),重復;

 

  先說說我自己對EM算法的理解:

    問題一:

  現在一個班里有50個男生,50個女生,且男生站左,女生站右。我們假定男生的身高服從正態分布N(\mu_1,\sigma_1^2) ,女生的身高則服從另一個正態分布: N(\mu_2,\sigma_2^2) 。這時候我們可以用極大似然法(MLE),分別通過這50個男生和50個女生的樣本來估計這兩個正態分布的參數。

  問題二:

  但現在我們讓情況復雜一點,就是這50個男生和50個女生混在一起了。我們擁有100個人的身高數據,卻不知道這100個人每一個是男生還是女生。這時候情況就有點尷尬,因為通常來說,我們只有知道了精確的男女身高的正態分布參數我們才能知道每一個人更有可能是男生還是女生。但從另一方面去考量,我們只有知道了每個人是男生還是女生才能盡可能准確地估計男女各自身高的正態分布的參數。

  問題二需要求解兩個問題:

    假設a=(第k個樣本是男生還是女生)

    假設b=(高斯模型的參數)

  如果知道a,那用問題一的方法就可以求解b,如果知道b那也就可以分類a了,但是前提是兩個都不知道。。。。比如y=x+1,現在讓你求解x和y的值,怎么辦?

      解決:
     

    總結:其實EM算法就是先通過假設的參數(不能太無厘頭了)把數據進行分類,然后通過分類的數據計算參數,接着對比計算的參數和假設的參數是否滿足精度,不滿足就返回去,滿足就結束。

         EM算法使用簡單,但是證明很麻煩,我感覺沒必要去證明,會使用就好了,反正EM是一種思想,而不是像K-means等是一種算法。

 

 

 

 

 

 

參考:

    1.http://blog.csdn.net/zouxy09/article/details/8537620(本博文的核心都來自這里,說的通俗易懂!)

    2.http://www.cnblogs.com/sylvanas2012/p/5058065.html(最大似然的舉例1)

    3.http://blog.csdn.net/qq_18343569/article/details/49981507(最大似然的舉例2)

      4.https://www.zhihu.com/question/27976634/answer/154998358(EM算法的問題來源知乎,但是作者沒有解決)

    5.http://www.jianshu.com/p/1121509ac1dc(還沒來得及看的EM例子,排版很好,不知道內容)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM