貝葉斯分類器(2)極大似然估計、MLE與MAP

根據上一篇貝葉斯分類器(1)貝葉斯決策論概述、貝葉斯和頻率、概率和似然,我們對貝葉斯分類器所要解決的問題、問題的求解方法做了概述,將貝葉斯分類問題轉化成了求解P(x|c)的問題,并提出了第一個求解方法:極大似然估計,也對似然的概念做了一定的理解,在本篇中,我們來介紹極大似然估計的原理、使用方法及其與最大后驗估計MAP的區別。

1 極大似然估計

1.1 極大似然估計的步驟

我們已經知道,似然即參數的似然,表示給定樣本下,參數\theta為真值的可能性,所以,極大似然估計就是以最大化參數的似然值的方法來估計參數的真值的算法。

極大似然函數估計值的一般步驟:

  1. 假設概率服從某種確定的概率分布(或者分布已知);
  2. 寫出似然函數:L(\theta_1,\theta_2,...,\theta_n, |x_1,x_2,...x_n)
  3. 對似然函數取對數,并整理;
  4. 求導數;
  5. 解似然方程,得到極大似然的參數;

對于一批樣本,共有M個屬性值和N個類別,那么x就是一個M維向量,要求得P(x|c),其實就是要求P([x_1,x_2,...x_m]|c_i),i=1,2,...,N,因為對不同的類別c,類條件概率P(x|c)應該是不同的分布,所以應該有N個不同的分布假設和似然函數。

我們按極大似然估計的步驟來看看怎樣計算P(x|c)

  1. 假設分布:假設P(x|c)具有確定的形式并且被參數向量θ_c唯一確定,則我們的任務就是利用訓練集D估計參數θ_c。我們將假設的P(x|c)分布記為P(x;θ_c)
  2. 似然函數,取對數:D_c表示訓練集D中第c類樣本組成的集合,假設這些樣本是獨立同分布的,則參數θ_c對于數據集D_c的似然函數是:

L(θ_c|D_c)=\prod_{x\in D_c} P(x;θ_c)

取對數得到對數似然函數,連乘轉換為累加,求導之類的計算更加方便:

LL(θ_c|D_c)=\sum_{x\in D_c} log(P(x;θ_c))

  1. 求導數:當似然函數取得極大值時,自變量θ_c的導數應該為0,所以可以得到針對參數向量θ_c中每個參數θ_i求偏導之后的方程組:

\begin{cases} & \frac{\partial L(\theta_c|D_c)}{\partial \theta_1}=0 \\ & ... \\ & \frac{\partial L(\theta_c|D_c)}{\partial \theta_i}=0 \end{cases}

  1. 解似然方程:求解方程組得到參數向量θ_c,確定P(x|c)所假設的分布,根據x的取值[x_1,x_2,...x_m]得到其概率。

注意:

  • 當屬性值的個數M=1時,屬于假設的分布是單個屬性的分布,還比較好計算;
  • 當屬性值的個數M>1時,多個屬性的分布是多維隨機變量分布,需要計算其多個屬性的聯合分布概率,這個計算方法是比較困難的。

1.2 從散度的角度解讀極大似然估計

知乎上大神詳細介紹了從散度的角度解讀極大似然估計:知乎 - 微調的回答,跟隨大神的腳步學習一下(原回答了引入了期望,我覺得其實不用期望也沒問題):

MLE的第一步是假設分布(或者已有一個分布),接下來就是通過最大化X發生的概率來求得分布參數,認為這就是最可能真實的分布,這個思路其實還是有一點繞的,憑什么說X發生的概率最大的參數就是真的參數呢?我們的目的是求出真實分布,最直觀的思路應該是看我們算出來的分布跟真實分布的相似程度,這剛好可以通過散度來解釋。

這里的散度是機器學習的散度,也就是信息論中的散度,與物理上的散度不太一樣。機器學習中我們常用的散度是KL散度(KL-Divergence)。信息論中,KL(P∥Q)可以理解為:用來衡量在同一份數據P下,使用P的編碼方案和Q的編碼方案的平均編碼長度的差異,如果我們把真實的分布P_\theta和計算得到的分布P_\tilde{\theta }看做樣本數據的編碼方案,那么我們就可以用KL散度來計算兩種分布之間的相似程度:

KL(P∥Q)=\sum_{x}P_\theta (x)\log_2 (\frac{P_\theta (x)}{P_\tilde{\theta } (x)} )=P_\theta (x)[\sum_{x}\log_2 P_\theta (x)- \sum_{x}\log_2 {P_\tilde{\theta } (x)}]

注意上面兩個分布的順序是不能變的,因為定義中的P必須是真實分布,數據就是由P產生的。我們的目標是人是讓KL(P∥Q)最小,注意到式中\sum_{x}\log_2 P_\theta (x)是定值,所以:

\min_{\tilde{\theta } } KL(P∥Q)=\max_{\tilde{\theta } } \sum_{x}\log_2 {P_\tilde{\theta } (x)}=\max_{\tilde{\theta } } log_2\prod_{x}\ {P_\tilde{\theta } (x)}

看上面的推導,再看看極大似然的公式:

L(θ_c|D_c)=\prod_{x\in D_c} P(x;θ_c)

LL(θ_c|D_c)=\sum_{x\in D_c} log(P(x;θ_c))

是不是根本就是一樣的?所以其實如果我們正向考慮極大似然估計,當模型是條件概率分布,損失函數是對數損失函數時,極大似然估計就是做經驗風險最小化;如果我們反過來考慮,即上面從散度推導的過程,MLE就是在尋找最接近真實分布的分布。

1.3 極大似然估計實例

以上一篇提到的西瓜好壞分類為例:
西瓜數據集如下圖:

西瓜數據集

顯然樣本共有M=6個屬性值和N=2個類別,首先根據樣本估計類先驗概率P(好瓜)=8/17=0.47,P(壞瓜)=9/17=0.53,然后為每個屬性估計條件概率P(x|c),要求P(x|c),應該假設兩個六維概率分布,比如我們假設樣本為6元正態分布:

P([色澤,根蒂,...觸感]|好瓜) - N(\vec{\mu_1 } ,\Sigma_1)

P([色澤,根蒂,...觸感]|壞瓜) - N(\vec{\mu_2 } ,\Sigma_2)

均值向量\vec{\mu_i }為6維向量,協方差矩陣\Sigma_i是一個6*6的正定矩陣。

然后分別寫出似然函數的對數形式:

LL(\vec{\mu_1 } ,\Sigma_1|D_c)=\sum_{x\in D_c} log(P([色澤,根蒂,...觸感];\vec{\mu_1 } ,\Sigma_1))

LL(\vec{\mu_2 } ,\Sigma_2|D_c)=\sum_{x\in D_c} log(P([色澤,根蒂,...觸感];\vec{\mu_2 } ,\Sigma_2))

最后再求偏導解方程即可,多元正態分布求導計算還是挺復雜的,本篇主要講極大似然估計,具體計算過程就不寫了,大家明白是怎么做的就好。

講完了極大似然估計的理論和操作,再來看看它和一個跟它很像的算法最大后驗估計MAP的關系。

2 MLE和MAP的區別和聯系

極大似然估計MLE是頻率學派的參數估計方法,最大后驗估計MAP是貝葉斯學派的參數估計方法。因此,同樣是參數估計的問題,MLE中參數是確定值,故定義為P(x;θ);MAP中參數是一個隨機變量,故定義為P(θ|x),是一個后驗概率,受到先驗P(θ)和樣本x的共同作用,這就是他們最本質的區別了,由此可得到其計算過程的區別:

極大似然估計MLE對參數θ的估計是:

最大后驗估計MAP對參數θ的估計是:

我們發現原來MAP與MLE在計算上的不同就是多了一個先驗概率項,因此如果有一個合理的先驗的話,MAP會比MLE對樣本數據的依賴更小一些,如果數據量很大的話他們基本就是一樣的了,以我們上一篇中的拋硬幣例子來說:

有一個硬幣,它有θ的概率會正面向上,有θ的概率反面向上。現有正反序列:x=HHTTHTHHHH。無論θ的值是多少,這個序列的概率值為
L(θ|x)=θ?θ?(1-θ)?(1-θ)?θ?(1-θ)?θ?θ?θ?θ = θ? \cdot (1-θ)3

如果按極大似然估計計算,取對數求導后計算得到θ=0.7,這似乎不太符合我們的常識,如果是用MAP呢?對拋硬幣問題,我們先驗是P(θ) - N(\mu=0.5,\sigma=0.1)(注意MAP中的θ是隨機變量,先驗是一個分布,不能是一個數值哦,如果給一個數值的話,樣本就不起作用了),因此:

P(θ|x)=P(θ)\prod_{x\in D} P(x|θ)=P(θ)\cdot θ? \cdot (1-θ)3

正態分布的概率密度函數:

因此:

-logP(θ)=-log\frac{1}{\sigma\sqrt{2\pi } }+\frac{(\theta -\mu)^2}{2\sigma^2} =C+\frac{(\theta -\mu)^2}{2\sigma^2}

在MAP中使用一個高斯分布的先驗的效果就類似于在MLE中采用L2正則,相當于結構風險最小化,可以說,當模型是條件概率分布、損失函數是對數損失函數、模型復雜度由模型的先驗概率表示時,結構風險最小化就等價于最大后驗估計。

回到θ的計算上來,P(θ)\cdot θ? \cdot (1-θ)3進行取對數、求導,可得θ=0.558,結果受到了先驗和樣本共同的作用。

顯然MAP的計算要麻煩的多,現實中很多問題都要比我們的例子復雜的多,其求解通常不會像我們的例子這樣求導計算。

總結一下:

  • MLE是頻率學派的參數估計方法,MAP是貝葉斯學派的參數估計方法,基本思想不同;
  • MLE是一種經驗風險最小化,MAP是一種結構風險最小化;
  • 在計算上,MAP比MLE多了一個先驗概率項,隨著數據量的增加,先驗的影響力會越來越小;
  • MAP對先驗的假設比較依賴,需要有好的先驗假設。

3 極大似然估計求解P(x|c)總結

我們將貝葉斯分類器轉化為了求解P(x|c)的問題,使用極大似然估計是我們介紹的第一個求解方法,它還存在一些不足:

  • P(x|c)分布的假設強依賴,所假設的概率分布形式需要符合潛在的真實數據分布,這個比較難;
  • 對于多個屬性值的樣本,使用極大似然估計計算比較困難。

在下一篇中,我們來看看求解P(x|c)問題的另一個方法:樸素貝葉斯。



主要參考資料

《機器學習》周志華
《統計學習方法》 李航
知乎 - 微調的回答
聊一聊機器學習的MLE和MAP:最大似然估計和最大后驗估計
最大后驗估計MAP

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。