機器學習2-極大似然估計與貝葉斯估計

參數估計:最大似然、貝葉斯與最大後驗

爲何會有參數估計呢?這要源於咱們對所研究問題的簡化和假設。咱們在看待一個問題的時候,常常會使用一些咱們所熟知的經典的模型去簡化問題,就像咱們看一個房子,咱們想到是否是能夠把它當作是方形同樣。若是咱們已經知道這個房子是三間平房,那麼大致上咱們就能夠用長方體去描述它的輪廓。這個畫房子的問題就從無數的可能性中,基於方圓多少裏你們都住平房的經驗,咱們能夠假設它是長方體,剩下的問題就是肯定長寬高這三個參數了,問題被簡化了。再如學生考試的成績,根據既往的經驗,咱們能夠假設學生的成績是正態分佈的,那麼剩下的問題就是肯定分佈的指望和方差。因此,之因此要估計參數,是由於咱們但願用較少的參數去描述數據的整體分佈。而能夠這樣作的前提是咱們對整體分佈的形式是知曉的,只須要估計其中參數的值;不然咱們要藉助非參數的方法了。php

參數估計的方法有多種,這裏咱們分析三種基於機率的方法,分別是最大似然估計(Maximum Likelihood)、貝葉斯估計(Bayes)和最大後驗估計(Maximum a posteriori)。咱們假設咱們觀察的變量是x,觀察的變量取值(樣本)爲\mathcal{D}=\{x_1, ...,x_N\},要估計的參數是\thetax的分佈函數是p(x|\theta)(咱們用條件機率來顯式地說明這個分佈是依賴於\theta取值的)。實際中,x\theta均可以是幾個變量的向量,這裏咱們不妨認爲它們都是標量。html

  • 最大似然估計 Maximum Likelihood (ML)

「似然」的意思就是「事情(即觀察數據)發生的可能性」,最大似然估計就是要找到\theta的一個估計值,使「事情發生的可能性」最大,也就是使p(\mathcal{D}|\theta)最大。通常來講,咱們認爲屢次取樣獲得的x獨立同分布的(iid)(假設樣本之間都是相對獨立的),這樣算法

 p(\mathcal{D}|\theta)=\prod_{\substack{i=1}}^{N}{p(x_i|\theta)}

因爲p(x_i)通常都比較小,且N通常都比較大,所以連乘容易形成浮點運算下溢,因此一般咱們都去最大化對應的對數形式函數

\theta_{ML}^{*}=argmax_{\theta}\{\Sigma_{i=1}^{N}{log{p(x_i|\theta)}}\}

具體求解釋時,可對右式對\theta求導數,而後令爲0,求出\theta值即爲\theta_{ML}^{*}post

最大似然估計屬於點估計,只能獲得待估計參數的一個值。(1) 可是在有的時候咱們不只僅但願知道\theta_{ML}^{*},咱們還但願知道\theta取其它值得機率,即咱們但願知道整個\theta在得到觀察數據\mathcal{D}後的分佈狀況p(\theta|\mathcal{D}). (2) 最大似然估計僅僅根據(有限的)觀察數據對整體分佈進行估計,在數據量不大的狀況下,可能不許確。例如咱們要估計人的平均體重,可是抽樣的人都是小孩,這樣咱們獲得的平均體重就不能反映整體的分佈,而咱們應該把「小孩之佔總人口20%」的先驗考慮進去。這時咱們能夠用貝葉斯方法。spa

  • 貝葉斯估計 Bayes

使用Bayes公式,咱們能夠把咱們關於\theta的先驗知識以及在觀察數據結合起來,用以肯定\theta的後驗機率p(\theta|\mathcal{D}).net

p(\theta|\mathcal{D})=\frac{1}{Z_D}p(\mathcal{D}|\theta)p(\theta)

其中Z_D=\int_{\theta} {p(\mathcal{D}|\theta)p(\theta)}\,\mathrm{d}\theta是累積因子,以保證p(\theta|\mathcal{D})和爲1。要使用Bayes方法,咱們需有關於\theta的先驗知識,即不一樣取值的機率p(\theta)。好比\theta=1表示下雨,\theta=0表示不下雨,根據以往的經驗咱們大致上有P(\theta=1)=0.01P(\theta=0)=0.99,在這種知識不足的時候,能夠假設\theta是均勻分佈的,即取各值的機率相等。htm

在某個肯定的\theta取值下,事件x的機率就是p(x|\theta),這是關於\theta的函數,好比一元正態分佈p(x|\theta)=\frac{1}{\sqrt{2\pi}}exp(-\frac{(x-\theta)^2}{2})。與上一節中的同樣,咱們認爲各次取樣是獨立的,p(\mathcal{D}|\theta)能夠分開來寫,這樣咱們就能夠獲得p(\theta|\mathcal{D})的一個表達式,不一樣的\theta對應不一樣的值。blog

根據得到的p(\theta|\mathcal{D}),咱們邊能夠取使其最大化的那個\theta取值,記爲\theta_{B}^{*}。可能有人已經看出問題來了:咱們作了不少額外功,爲了求得一個\theta_{B}^{*},咱們把\theta取其它值的狀況也考慮了。固然在有的時候p(\theta|\mathcal{D})分佈是有用的,可是有的時候咱們取並不須要知道p(\theta|\mathcal{D}),咱們只要那個\theta_{B}^{*}。最大後驗估計這個時候就上場了。事件

  • 最大後驗估計 MAP

最大後驗估計運用了貝葉斯估計的思想,可是它並不去求解p(\theta|\mathcal{D}),而是直接得到\theta_{B}^{*}。從貝葉斯估計的公式能夠看出,Z_D是與\theta無關的,要求得使p(\theta|\mathcal{D})最的的\theta,等價於求解下面的式子:

\theta_{MAP}^{*}={argmax}_{\theta}\{ p(\theta|x)\}=argmax_{\theta}\{p(x|\theta)p(\theta)\}

與最大似然估計中同樣,咱們一般最大化對應的對數形式:

\theta_{MAP}^{*}=argmax_{\theta}\{\log{p(x|\theta)}+\log{p(\theta)}\}

這樣,咱們便無需去計算Z_{\mathcal{D}},也不須要求得具體的p(\theta|\mathcal{D})部分,即可以獲得想要的\theta_{MAP}^{*}

總結一下:三種方法各有千秋,使用於不一樣的場合。當對先驗機率p(\theta)的估計沒有信心,可使用最大似然估計(固然也可使用其它兩種)。貝葉斯估計獲得了後驗機率的分佈,最大似然估計適用於只須要知道使後驗機率最大的那個\theta

另一方面,咱們能夠感受到,最大似然估計和Bayes/MAP有很大的不一樣,緣由在於後兩種估計方法利用了先驗知識p(\theta),若是利用恰當,能夠獲得更好的結果。其實這也是兩大派別(Frequentists and Bayesians)的一個區別。

其餘區別:

在先驗機率能保證問題有解的狀況下,最大似然估計和貝葉斯估計在訓練樣本趨近於無窮時獲得的結果是同樣的!可是實際的模式識別問題中,訓練樣本老是有限的,咱們應如何選擇使用哪一種模型呢?下面簡單分析分析:

(1) 計算複雜度:就實現的複雜度來講,確定是有限選擇最大似然估計,最大似然估計中只須要使用到簡單的微分運算便可,而在貝葉斯估計中則須要用到很是複雜的多重積分,不只如此,貝葉斯估計相對來講也更難理解;

(2)準確性:當採用的樣本數據頗有限時,貝葉斯估計偏差更小,畢竟在理論上,貝葉斯估計有很強的理論和算法基礎。

參數化估計的缺點: 
貝葉斯估計和最大似然估計都是屬於參數化估計,那麼兩者存在着一個共同的缺點:參數化估計雖然使得類條件機率密度變得相對簡單,但估計結果的準確性嚴重依賴於所假設的機率分佈形式是否符合潛在的真實數據分佈。在現實應用中,與作出能較好的接近潛在真實分佈中的假設,每每須要必定程度上利用關於應用任務自己的經驗知識,不然若僅憑「猜想」來假設機率分佈形式,極可能產生誤導性的結果!因此沒有什麼算法是十全十美的啦!

 

參考文獻:

https://www.cnblogs.com/stevenbush/articles/3357803.html

http://blog.csdn.net/feilong_csdn/article/details/61633180

相關文章
相關標籤/搜索