1. 程式人生 > >對極大似然估計的理解

對極大似然估計的理解

我們平時做影象的目標檢測也好,做大資料精準推薦也好,說到底就是做個分類,來一個數據,判斷一下它的類別,該是誰的給誰。

假設有K個類別{C1,C2,...,Ck},來一條資料x,它屬於K個類別的概率分別記為P(C1|x), P(C2|x), ..., P(Ck,|x), 當然,x只能屬於這K個類別中的一個,假設x屬於C3, 只有當你算出來的P(C3|x)比其他的都高才能正確分類。

若存在一個分類準則h(x),使得對所有的資料x,都有P(c|x))最大(小c表示x真實所屬的類別),那就太好了,所有資料都能正確分類。這就是我們的目標:h(x) = argmaxP(c|x),也就是對每一個x,被分到c類的概率最大。P(c|x)怎麼得到呢——重點來了!我個人認為這是分類問題的核心。

兩種方案:

1,判別式模型,如LR,決策樹,神經網路。就是直接建立P(c|x)的模型,學一個判別式,輸入是x,輸出是類別;

2,生成式模型——貝葉斯定理:P(c|x) = P(c)*P(x|c)/P(x).點選這裡,有一片很好理解的貝葉斯定理的簡介。

我們重點看貝葉斯定理公式:

P(c)是先驗概率,就是c類佔整體的概率,通常用樣本中c類的比例來代替;

P(x|c)是條件概率,也叫似然概率,意思是對一個c類,長成x的樣子的概率;

P(x)是證據因子,相當於是一個歸一化係數,為啥呢,因為全概率公式告訴我們:P(x) = SUM(P(ci)P(x|ci)),這部分對所有類都是一樣的。

上面三個,唯一一個難以確定的是條件概率P(x|c),所以欲得後驗概率,先算條件概率

。假設樣本有m個屬性,即特徵向量x有m維,假設每個屬性是二值的(最簡單的情況),樣本空間也有2^m中可能的取值,這可能比樣本總數還多,也就是說很多取值在訓練樣本中根本沒有出現,直接通過樣本觀測頻率估計P(x|c)是不可行的。

怎麼辦,一種思路就是假設樣本符合某種分佈,用已有樣本來估計這種分佈的引數——這就是最大似然估計。舉個例子,我假設某個類別c的樣本都是正態分佈,那根據已有樣本很容易計算該分佈的均值和方差,概率密度曲線也就出來了,P(x|c)就易得。顯然,最大似然估計是一種經驗型的估計,其效能完全取決於“猜測”的分佈型式跟真實分佈的接近程度。

這裡有必要提一下,統計學領域兩個學派:頻率主義學派和貝葉斯學派。他們一個顯著區別在於:前者認為樣本符合某一確定的分佈,分佈引數是一個定值,可以用已有樣本估算;後者認為,分佈引數本身也是隨機分佈的(可以說是分佈的分佈……),觀測樣本只能計算觀測的後驗分佈。這個講起來比較繞,我後面有機會再寫一篇文章單好了。

極大似然估計出條件概率,後驗概率也就可以由貝葉斯定理推出。對每個樣本,選擇使後驗概率最大的標記作為類別。等等,故事並沒有結束——這個時候來了一個新的角色——風險

最大後驗概率也可以叫最小誤分概率,就是說所有樣本分出來,認為分錯的最少的分類器就是最好的——這隱含了一個條件——每一類都同等重要。但現實中,把A錯分成B,和把B錯分成A,風險可能是不一樣的啊!舉一個常用的例子,你去銀行用自動存款機存錢,存款機裡的驗鈔機有時無法識別你的一些真鈔而拒絕它們,這對銀行來說是一種損失:失去這幾張鈔票的存款;但你想像一下,如果今天你拿了一沓假幣去存,存款機居然收了(確實有過這種狗血的例子),這對銀行是另一種損失:直接財產損失甚至破產。顯然,後者嚴重得多!

所以,條件風險:R(ci|x)=SUM(wijP(cj|x)),其中wij表示把j誤分為i的損失,P(cj|x)是j在x下出現的概率,即後驗概率。我們的目標是使SUM(R(h(x)|x)),即所有樣本的損失和最小。

總結:

極大似然估計用以估計條件概率,進而得到所需的後驗概率;

極大似然估計的假設是樣本符合某一分佈,究竟符合什麼分佈往往是拍腦袋想的,可能並不準確;

使分類錯誤率最小的不一定是好的分類器,關鍵是看總體風險,若各類別滿足0/1風險,就直接看最大後驗概率就好。