1. 程式人生 > >從最大似然估計法到EM演算法

從最大似然估計法到EM演算法

源地址:http://www.cnblogs.com/GuoJiaSheng/p/3966812.html?utm_source=tuicool

什麼是最大似然估計?

     問題:給定一組觀察資料還有一個引數待定的模型,如何來估計這個未知引數呢?

     觀察資料(x1,y1)......(xn,yn)   待定模型引數為θ,模型為f(x;θ)。這時候可以藉助觀察資料來估計這個θ。這就是最大似然函式估計。

     舉個例子:

假設我們有一個袋子,裡面裝著白球和黑球,但是我們不知道他們分別有多少個,這時候需要我們估計每次取出一個球是白球的概率是多少?如何估計呢? 可以通過連續有放回的從袋子裡面取一百次,看看是白球還是黑球。假設取100次裡面 白球佔70次,黑球30次。設抽取是白球的概率為P。 那麼一百次抽取的總概率為 p(x;p)

         p(x;p)=p(x1,x2.......x100;θ)=p(x1;θ)*p(x2;θ)........p(x100;θ

                      =p70*(1-p)30

        那麼這時候我們希望可以使這個概率最大。

       求導:logp(x;p)=logp70*(1-p)30   另導數為0則可以求出p=0.7(同理可以用到連續變數裡面,這時候就是概率密度函式的乘積so easy)

  是不是很簡單,對!就是這麼簡單!其實最大似然估計就是在給定一組資料和一個待定引數模型,如何確定這個模型未知引數,使得這個確定後的引數模型產生的已知資料概率最大。當然這裡我只是舉了一個只有一個未知引數的估計方法,多個未知引數的做法是一樣的,就是求似然函式求導取最大值。其實並不是所有似然函式都可以求導的,當似然函式無法求導時就需要根據定義求使得L(θ

)最大的θ。

     舉個例子,以拋篩子為例: 

    

2.最大後驗估計 (MAP): 

    最大後驗估計就是在原來的MLE的基礎上加上了先驗知識:

     

EM演算法 :

       相信大家對似然函式已經手到擒來了。那麼我們就來看看高深的。

       一個概率模型有時候既含有觀察變數,有含有隱變數。如果只有觀察變數那麼我們可以用最大似然法(或者貝葉斯)估計未知引數,但是如果還含有隱變數就不能如此簡單解決了。這時候就需要EM演算法。

       大家可能對這種問題不是很明白,也不太明白隱變數是什麼意思。我舉個例子(引用統計學習方法的例子):

      有3枚硬幣分別記為A,B,C,並且出現正面概率分別為p ,q ,k.規則如下:先拋硬幣A,如果為正面就選擇B,否則選擇C,然後再將選擇的硬幣(B或者C拋),然後觀測結果。正面為1 反面為0.獨立重複實驗10次結果如下:1,1,1,0,0,0,1,1,1,0。我們並不知道拋A硬幣時為正面還是方面,只知道最後的結果,問如何估計p,q,k的值?

       如果我們知道拋的是哪個硬幣就可以使用最大似然估計來估計這些引數,但是我們不知道。因為有p的原因,所以無法估計,這個p就是隱變數

       log(Θ)=Σlogp(x;Θ)=Σlogp(x,p;Θ),Θ就是要求的q,k 待定引數,x為觀測資料,因為這個p導致我們無法求解MaxΣlogp(x;Θ)。

       還比如說調查 男生 女生身高的問題。身高肯定是服從高斯分佈。以往我們可以通過對男生抽樣進而求出高斯分佈的引數,女生也是,但是如果我們只能知道某個人的高度,卻不能知道他是男生或者女生(隱含變數),這時候就無法使用似然函式估計了。這個時候就可以使用EM方法。

   分為E和M兩步:

     E步:

       首先通過隨機賦值一個我們要求的引數,然後求出另外一個隱含引數的後驗概率。這是期望計算過程,我們首先通過隨便賦予模型引數的初始值p,q,k,求出各個資料到模型的結果。

    M步

       用求出來的隱含引數的後驗概率進行對傳統的似然函式估計,對要求引數進行修正。迭代直到前後兩次要求的引數一樣為止

      其實可以這麼簡單理解:就是在無監督聚類的時候,我們不知道模型的引數(比如為高斯分佈),這時候我們就隨便賦值給模型的待定引數(u和ó)。然後我們就可以計算出各個資料分別屬於那一類。然後我們用這些分類好的資料重新估計u和ó。