參數(shù)估計是機器學習里面的一個重要主題,而極大似然估計是最傳統(tǒng)、使用最廣泛的估計方法之一。
在講最大似然估計和貝葉斯估計之前,先來談談概率和統(tǒng)計的區(qū)別吧。
概率和統(tǒng)計是一個東西嗎?
概率(probabilty)和統(tǒng)計(statistics)看似兩個相近的概念,其實研究的問題剛好相反。
概率研究的問題是,已知一個模型和參數(shù)(例如均值,方差,協(xié)方差等等),怎么去預測這個模型產生的結果的特性。 舉個例子,我想研究怎么養(yǎng)豬(模型是豬),我選好了想養(yǎng)的品種、喂養(yǎng)方式、豬棚的設計等等(選擇參數(shù)),我想知道我養(yǎng)出來的豬大概能有多肥,肉質怎么樣(預測結果的概率)。
統(tǒng)計研究的問題則相反。統(tǒng)計是,有一堆數(shù)據(jù),要利用這堆數(shù)據(jù)去預測模型和參數(shù)。仍以豬為例?,F(xiàn)在我買到了一堆肉,通過觀察和判斷,我確定這是豬肉(這就確定了模型。在實際研究中,也是通過觀察數(shù)據(jù)推測模型是/像高斯分布的、指數(shù)分布的、拉普拉斯分布的等等),然后,可以進一步研究,判定這豬的品種、這是圈養(yǎng)豬還是跑山豬還是網(wǎng)易豬,等等(推測模型參數(shù))。
一句話總結:概率是已知模型和參數(shù),推數(shù)據(jù)。統(tǒng)計是已知數(shù)據(jù),推模型和參數(shù)。
最大似然估計(maximum likelihood estimation)
最大似然估計是用來估計一個概率模型的參數(shù)的一種方法。確定參數(shù)值的過程,是找到能最大化模型產生真實觀察數(shù)據(jù)可能性的那一組參數(shù)。
一個小栗子
現(xiàn)在有3個獨立同分布的數(shù)字9, 9.5, 11(假設該分布為高斯分布),現(xiàn)在要估計此正態(tài)分布的參數(shù)值μ 和 σ ,利用最大似然估計該怎么求呢?
我們要計算的是同時觀察到所有這些數(shù)據(jù)的概率,也就是所有觀測數(shù)據(jù)點的聯(lián)合概率分布。因此,我們需要計算一些可能很難算出來的條件概率。我們將在這里做出第一個假設,假設每個數(shù)據(jù)點都是獨立于其他數(shù)據(jù)點生成的。這個假設能讓計算更容易些。
如果事件(即生成數(shù)據(jù)的過程)是獨立的,那么觀察所有數(shù)據(jù)的總概率就是單獨觀察到每個數(shù)據(jù)點的概率的乘積(即邊緣概率的乘積)。
很明顯我們例子中的五個數(shù)字是符合上述條件的。因此,從高斯分布中生成的單個數(shù)據(jù)點 x 的(邊緣)概率是:

我們只要找出能夠讓上述表達式最大化的μ、σ值就可以了。具體的求解過程包括取對數(shù),求偏導為0時候的值便是我們要求的值了,這里就不進行求導了。
為什么叫「最大似然(最大可能性)」,而不是「最大概率」呢?
雖然大多數(shù)人傾向于混用「概率」和「似然度」這兩個名詞,但統(tǒng)計學家和概率理論家都會區(qū)分這兩個概念,這是否只是這些學者在賣弄學識呢?當然不是,通過觀察下面這個等式,我們可以更好地明確這種混淆的原因。這兩個表達式是相等的!所以這是什么意思?我們先來定義 P(data; μ, σ) 它的意思是「在模型參數(shù)μ、σ條件下,觀察到數(shù)據(jù) data 的概率」。值得注意的是,我們可以將其推廣到任意數(shù)量的參數(shù)和任何分布。另一方面,L(μ, σ; data) 的意思是「我們在觀察到一組數(shù)據(jù) data 之后,參數(shù)μ、σ取特定的值的似然度。」
因此,結合文章開頭部分對于概率和統(tǒng)計的討論,我們有理由說似然度是站在統(tǒng)計的角度上來說的,即已知數(shù)據(jù)推導模型和參數(shù)。
貝葉斯估計
在開始介紹貝葉斯估計之前,讓我們先來看看貝葉斯定理吧。
貝葉斯定理
貝葉斯定理是關于隨機事件A和B的條件概率的一則定理。

在貝葉斯定理中,每個名詞都有約定俗成的名稱:
- P(A|B)是已知B發(fā)生后A的條件概率,也由于得自B的取值而被稱作A的后驗概率。
- P(A)是A的先驗概率(或邊緣概率)。之所以稱為"先驗"是因為它不考慮任何B方面的因素。
- P(B|A)是已知A發(fā)生后B的條件概率,也由于得自A的取值而被稱作B的后驗概率。
- P(B)是B的先驗概率或邊緣概率。
按這些術語,貝葉斯定理可表述為:
后驗概率 = (似然性*先驗概率)/標準化常量
也就是說,后驗概率與先驗概率和相似度的乘積成正比。
另外,比例P(B|A)/P(B)也有時被稱作標準似然度(standardised likelihood),貝葉斯定理可表述為:
后驗概率 = 標準似然度*先驗概率
從條件概率和聯(lián)合概率推導貝葉斯定理。事件A,B同時發(fā)生的概率(也即聯(lián)合概率)為:
P(A,B)=P(A∩B)=P(A|B)P(B)
P(B,A)=P(B∩A)=P(B|A)P(A)
由于P(A,B)=P(B,A), 所以:
P(A|B)P(B)=P(B|A)P(A) =>

從全概率角度來試著解釋下上式分母也即B事件邊緣概率的意思:
P(B)=∑iP(B|Ai)*P(Ai)
這個式子表示所有事件Ai條件下觀察到的B情況。因此,貝葉斯公式的一種變形為:

貝葉斯估計與貝葉斯定理之間的關系:
貝葉斯估計使用來進行參數(shù)估計的,而貝葉斯定理則是用來進行概率預測的,可通過下面式子進行比較:
貝葉斯估計:P(θ|data) = P(data|θ)*P(θ) / P(data), 其中:
- P(θ)和P(data)都是先驗概率;
- P(data|θ)也是似然概率;
- P(θ|data) 則稱為后驗概率,利用先驗(或邊緣)P(θ)來估計后驗參數(shù)。
貝葉斯定理: P(data|θ) = P(θ|data)*P(data) / P(θ)
樸素貝葉斯
初學機器學習可能會覺得上面的式子不太好理解,換個表達式會明朗很多:

又由于p(特征)是特征的全概率,是考慮了所有類別前提下的特征概率,因此對于所有類別的p(類別|特征),p(特征)都是一樣的。
采用更標準的定義:
獨立的類別變量C有若干個類別,條件依賴于若干特征變量 F1,F2,F3,...Fn。此時貝葉斯定理就為:
同時,為方便計算,假設所有變量都是相互獨立的,且由于分母值都相同,因此上式可轉化為:
利用樸素貝葉斯進行分類的一個栗子
給定數(shù)據(jù)如下:
現(xiàn)在給我們的問題是,如果一對男女朋友,男生想女生求婚,男生的四個特點分別是不帥,性格不好,身高矮,不上進,請你判斷一下女生是嫁還是不嫁?
這是一個典型的分類問題,轉為數(shù)學問題就是比較p(嫁|(不帥、性格不好、身高矮、不上進))與p(不嫁|(不帥、性格不好、身高矮、不上進))的概率,誰的概率大,我就能給出嫁或者不嫁的答案!
這里我們聯(lián)系到樸素貝葉斯公式:
由于p(不帥、性格不好、身高矮、不上進)對于p(嫁|(不帥、性格不好、身高矮、不上進))與p(不嫁|(不帥、性格不好、身高矮、不上進))都是一樣的,因此可以略去分母,只計算分子。
而又由于假設各個特征之間相互獨立,因此:
各項概率值的計算過程參見帶你理解樸素貝葉斯分類算法。
最后可求得:
p(嫁|(不帥、性格不好、身高矮、不上進))= (1/2*1/6*1/6*1/6*1/2)/(1/3*1/3*7/12*1/3)
p (不嫁|不帥、性格不好、身高矮、不上進) = ((1/6*1/2*1*1/2)*1/2)/(1/3*1/3*7/12*1/3)
很顯然(1/6*1/2*1*1/2) > (1/2*1/6*1/6*1/6*1/2)
于是有p (不嫁|不帥、性格不好、身高矮、不上進)>p (嫁|不帥、性格不好、身高矮、不上進)。
所以我們根據(jù)樸素貝葉斯算法可以給這個女生答案,是不嫁?。?!**
拉普拉斯平滑
需注意的是,若某個特征值在訓練集中沒有與某個類同時出現(xiàn)過,則直接計算該類前提下特征的概率將會出現(xiàn)問題,因為其值將會為0。
為了避免其他屬性攜帶的信息被訓練集中未出現(xiàn)的屬性值"抹去',在估計概率值時通常要進行"平滑" (smoothing) ,常用"拉普拉斯修正" (Laplacian correction)。 具體來說,令 N 表示訓練集 D 中可能的類別數(shù) , N; 表示第 i個屬性可能的取值數(shù),則p(類別)和p(特征|類別)分別修正為:

補
為什么下面式子中的p(B|A)叫似然概率?

其實是可以不叫似然,也可以叫后驗概率的。只不過當A是label而B是features的時候我們就將其稱為似然概率了。借用極大似然的概念,已知label求參數(shù)使得當前l(fā)abel分布出現(xiàn)的概率最大,便稱為極大似然方法。因此相似的,這里P(features|label)稱為似然概率。
參考:
《機器學習》 周志華
從最大似然估計開始,你需要打下的機器學習基石
帶你理解樸素貝葉斯分類算法
樸素貝葉斯分類器
貝葉斯定理


