關於極大似然估計的基本介紹,本文再也不詳細敘述(可參考:周志華——《機器學習》P149,陳希孺——《機率論與數理統計》P150 和其餘資料)。文章的主要內容是我對極大似然估計的一些看法和我認爲應該須要注意的一些點。如下是正文:機器學習
一.極大似然估計的簡述函數
假設整體知足某種分佈,且該分佈的參數爲(θ1,θ2,θ3,...θn),設該分佈的具體形式爲f(x;θ1,θ2,θ3,...θn)。其中x1,x2,x3,...xm爲從這個整體中抽出的樣本,那麼,樣本(x1,x2,x3,...xm)的分佈爲:學習
(這裏的f實際上就是機率密度函數或者機率質量函數)spa
並記爲.net
上述L就是咱們所說的似然函數。而極大似然估計的目的就是從(θ1,θ2,θ3,...θn)全部可能的取值中,選出令似然函數L取值最大的那組。從這段話中咱們能夠獲得如下幾點結論:blog
1.極大似然估計的本質就是一種參數估計的方法,而且它是一種經過採樣來對機率模型的參數進行估計的。(西瓜書上有一樣的結論)ip
2.極大似然估計的一個極爲重要的前提就是,咱們假設的整體分佈(同時也是採樣得到的樣本的分佈)要與整體真實的分佈儘量的接近;或者說是估計結果的準確性嚴重依賴於所假設的機率分佈形式是否符合潛在的真實數據分佈;若是對整體的分佈一無所知的話,極大似然法就無能爲力了。element
3.實際上,以上的敘述中,還隱含了一個前提條件:對於這m個樣本,它們都是獨立同分布的。(例如,對於拋硬幣問題,每次結果都是獨立的)這是個很重要的前提,只有知足這個前提,似然函數才能寫成這種連乘的形式,L才能稱做是樣本整體的似然函數。get
二.對似然函數的通俗解釋io
1.似然函數的表示形式
關於似然函數的定義,可參考維基百科:https://zh.wikipedia.org/wiki/%E4%BC%BC%E7%84%B6%E5%87%BD%E6%95%B0
似然函數通常有兩種表示方式:
第一種是:L(θ|x)
第二種是:L(x;θ)
由於有的資料是用的一種方式,有的資料用的是第二種方式,有時還能夠寫成L(θ),但不管哪一種方式,它們實質都是同樣的,即L(θ|x) = L(x;θ) = P(x|θ) 或者 L(θ|x) = L(x;θ) = P(x;θ)
2.似然函數的意義
對於p(x|θ)或者是p(x;θ):
(1)當x是變量,θ是已知量的時候,這個式子表示的是一個機率函數,即機率分佈的參數取值爲θ時,不一樣樣本x出現的機率。
(2)當x是已知量,θ爲變量的時候,這個式子表示的是一個似然函數,即機率分佈的參數取不一樣值時,某個樣本x出現的機率。
對於似然函數,也能夠理解爲:似然函數就是衡量當前模型參數對於已知樣本集的解釋狀況(結合第三部分能更好的理解這句話)。
3.似然函數的實例
關於似然函數的實例,最經典的就是」拋硬幣問題」了。對於這個問題,維基百科中敘述的已經很詳細了,我此處只說明幾個我認爲比較重要的點:
(1)假設硬幣正面朝上的機率PH = 0.5,投一次硬幣正面朝上記爲H的話,那麼連續投幣兩次都正面朝上就表示爲HH。那麼,對於L(PH |HH) = p(HH|PH )=p(HH;PH ) = 0.25 ,對於這個取定的似然函數,在觀測到兩次投擲都是正面朝上時,PH = 0.5的似然性是0.25。
(注意此處的說法,此處說的參數取值的似然性,而不是當觀測到兩次正面朝上時PH = 0.5機率是0.25,由於這是p(PH |HH)所表示的含義)
(2)似然函數描述的是在觀測到樣本x時,參數取值的似然性,而極大似然估計就是找到合適的參數值來最大化這種似然性。
三.極大似然估計在機器學習問題中的應用
極大似然估計的核心就在於極大似然函數的表示(即對問題的建模)和求解,應用到機器學習問題中,機率模型就是所謂的學習器了,而訓練集就至關於從整體中採樣得到的有限樣本集。因此,模型的訓練過程實質就是參數估計的過程。可是,須要注意的一點是:似然函數中的這個參數,指的是你創建的機率模型的參數,但這個參數(其實是個參數向量)與樣本的機率分佈的參數並非徹底相同的。那麼該如何理解這個結論呢?這裏我舉例子進行說明:
對於」拋硬幣問題",因爲這個問題自己比較簡單,對這個問題建模,所涉及的參數也就僅僅是樣本x的機率分佈的參數(即伯努利分佈中的p);但在機器學習問題中,建模問題複雜化了,即創建的模型更復雜了,所涉及的參數業也就更多了,例如在邏輯迴歸(對數概率迴歸)中,此時的機率模型涉及的參數爲w和b,雖然邏輯迴歸的本質是伯努利分佈下的極大似然估計,但咱們要明白此時的參數再也不是伯努利分佈中的呢個p了,而是w和b了。這一點我以前常常迷糊,因此這裏着重強調一下。
==============================================================分割線====================================================
關於極大似然函數在機器學習中的應用,最具備表明性的模型就是邏輯迴歸和貝葉斯分類器了(一般用樸素貝葉斯分類器),下面結合這兩個模型,以二分類爲例,詳細說明一下極大似然估計在ML中的應用。
1.邏輯迴歸(對數概率迴歸)中的極大似然估計
(1)首先,邏輯迴歸其實是假設的樣本的label的分佈知足伯努利分佈,即假設的整體分佈知足伯努利分佈。這裏有兩點須要注意:
第一點:
此處說的分佈再也不是樣本x的分佈,而是樣本x對應的label即y的分佈。
第二點:
y的分佈知足的伯努利分佈的話,設y=1出現的機率爲p,這即P(y=1|x)的值爲p,而P(y=1|x)又能夠表示成關於w和b的函數,因此實際上影響模型結果的參數只有w和b了,要求解的只有w和b兩個變量了。
注:此處假設的是樣本x的label服從伯努利分佈,並非樣本x分佈,邏輯迴歸不須要知道樣本知足何種分佈。
(2)邏輯迴歸直接對後驗機率p(y|x)進行建模,也就是說機率模型的似然函數應該是p(y|x;θ)的形式,《統計學些方法》中給出的邏輯迴歸的似然函數形式以下:
其中yi∈{0,1}。更及確切的說,應該是以下的形式:
也就是說,邏輯迴歸的似然函數中考慮了全部樣本的所屬的類別,由於它是直接對P(y|x)進行建模的,它要找出全部的y,因此要考慮全部的樣本。實際上,這個似然函數的本質就是伯努利分佈下的機率密度函數。
2.貝葉斯分類器(以樸素貝葉斯爲例)
(1)與邏輯迴歸這種判別模型不一樣的是,貝葉斯分類器直接是對x,y的聯合機率進行建模的,而聯合機率又由貝葉斯公式轉化成一個先驗機率和似然的乘積。具體形式以下:
P(x,y) = p(y).p(x|y)
其中p(y)稱爲類先驗機率,p(x|y)稱爲「類條件機率」或者稱爲「似然」。
根據極大似然估計的定義,若是此時x中的屬性都是離散屬性的話,此時的模型一樣也是假設的樣本的label即y的分佈知足伯努利分佈,只不過此時的p爲p(y=1)(以二分類爲例的話);且xj| y也是知足伯努利分佈的(須要注意的一點是,$p(y=c_k)$爲p,$p(y \neq c_k)$爲1-p;xj| y的話同理) 。可是此時的模型參數實際上就只有:
p(y = 1)、p(y = 0)、p(xj=ajl| y = 1)、p(xj=ajl| y = 0) 其中xj表示樣本x的第j個屬性,ajl表示第j個屬性的第l個可能的取值。(前兩個屬於同一種參數,後兩個屬於同一種參數)
因此說,極大似然估計就是爲了求解以上的參數。而且,《統計學習方法》P49給出了兩種參數最終求解後的結果,如今書上大可能是直接給的結果,並無給出求解過程。
(2)那麼,如何利用極大似然估計對上面兩種參數進行求解呢?
能夠參考:https://www.zhihu.com/question/33959624 或者 http://www.javashuo.com/article/p-rwtujenp-mm.html
(3)根據兩種參數的表示結果:
先給出似然函數的最終形式:
其中Xj表示X的第j個屬性,而xj表示X第j個屬性的取值。
再給出令似然函數去最大值時的參數的值:
其中,I爲指示函數,若括號內式子成立,則記爲1,不然記爲0。y=1和y=0能夠分別表示成y=c1和y=c2。因而可知,模型的參數僅僅與訓練樣本有關,一旦樣本給定了,模型的參數就肯定了,這一點與邏輯迴歸是不一樣的。
另外,須要注意的是,上述的似然函數至關於包擴了全部的類別,參數也適用於全部的類別;能夠理解成對每個類別的樣本,都創建了一個形式相同的似然函數。
最後,以上只是針對離散型屬性,對於連續性屬性,似然函數中還要考慮連續屬性所服從的機率分佈的參數。能夠參考西瓜書P151的例子。