最近在回顧機器學習的一些相關理論知識,回顧到極大似然法時,對于極大似然法中的一些公式有些迷糊了,所以本文主要想記錄并分享一下個人關于極大似然估計法的一些思考,如果有誤,請見諒,歡迎一起前來探討。當然,如果這篇文章還能入得了各位“看官”的法眼,麻煩點贊、關注、收藏,支持一下!
一、須知前提
可能有一部分小伙伴的概率學等相關理論知識相對薄弱,因此,為了讓大家更好的理解,在對極大似然估計法進行說明前,先對相關的須知理論知識做一個簡單的說明
在理解極大似然估計法時,有兩需要理解,一個是貝葉斯定理,一個是聯合概率
1、貝葉斯定理
直接給出公式:
對于貝葉斯定理的公式,可能很多小伙伴不能理解是怎么得來的,其實本人也不甚了解,但是這并不影響公式的使用,所以大家不需要過度糾結這條公式是怎么來的,其實只要會用就可以,當然有興趣的小伙伴可以自行去檢索一下,相信網絡上有很多相關資料。
但是,我們必須要理解公式中每個部分代表著什么,這樣才能保證我們可以正常使用。
這里比較重要的是條件概率和聯合概率,公式中的P(x,c)就是聯合概率,對于聯合概率此處先不講,但是會在下一小節重點解釋,公式中的P(c|x)和P(x|c)就是條件概率,舉兩個例子大家感受一下:
P(好瓜|敲聲=脆響)=敲聲脆響的瓜是好瓜的概率
P(敲聲=脆響|好瓜)=好瓜的敲聲是脆響的概率
對此,我們不難發現,對于條件概率,大家可以理解為,在某一前提的情況下發生某件事的概率
至于為什么使用貝葉斯公式,其實原因很簡單,因為P(c|x)在實際生活中無法求得或者求得的投入入過大不劃算,比如說,如果我們要求P(好瓜|敲聲=脆響)時,我們通過敲打西瓜可以知道敲聲是否脆響,但是無法直接得出是不是好瓜,要想知道西瓜是否是好瓜,我們需要把西瓜切開,一兩個瓜還好,要是成百上千呢?如果僅僅只是為了知道瓜是不是好瓜而將每個瓜都切開這不現實。
2、聯合概率
在貝葉斯定理部分,已經給出了條件概率的形式,在概率中還有一種概率形式叫做聯合概率,其形式如下:
或者是:
?對于聯合概率,大家可以理解為,多個事件同時發生的概率,即“且”的關系,舉個簡單的例子大家感受一下:
P(敲聲脆響,觸感硬滑)=敲聲脆響且觸感硬滑的概率
另外,根據樣本的分布是否獨立,聯合概率分成兩種形式。
當屬性/樣本之間是獨立分布時:
或者:
?為了讓大家更好理解,我舉個例子:
?P(敲聲=脆響,觸感=硬滑,根蒂=蜷縮)=P(敲聲=脆響)*P(觸感=硬滑)*P(根蒂=蜷縮)
這里需要注意的是千萬千萬不要寫成累加的形式。為什么是累乘而不是累加,我舉個例子簡單解釋一下,P表示求概率想必大家都知道,概率必然是小于等于1的,若采用累加的形式,當敲聲要么脆響要么沉悶,觸感要么硬滑要么綿軟,根蒂要么蜷縮要么硬挺時:
P(敲聲=脆響)=P(觸感=硬滑)=P(根蒂=蜷縮)=0.5
?P(敲聲=脆響,觸感=硬滑,根蒂=蜷縮)=P(敲聲=脆響)+P(觸感=硬滑)+P(根蒂=蜷縮)=1.5>1
概率值是1.5,大于1,這顯然是錯誤的,因此我們不難得出,采用累加的形式是錯誤的。
說到這里我就再多說一句,什么情況下我們可以采用累加的形式,舉個例子大家感受一下:
當敲聲有三個值時,即敲聲可以是脆響、清響、沉悶,如果我們要求敲聲不為清脆的概率,或者說敲聲等于脆響或者沉悶的概率,我們可以用累加,即:
P(敲聲≠清脆)=P(敲聲=脆響U敲聲=沉悶)=P(敲聲=脆響)+P(敲聲=沉悶)
當屬性/樣本之間是非獨立分布時:
舉個例子,x1是x2的父節點,即x2的值受x1影響,如下所示:
舉個例子:
?P(敲聲=脆響,觸感=硬滑)=P(敲聲=脆響)*P(觸感=硬滑|敲聲脆響)
二、極大似然估計法有啥用?
在上面一節中提到了貝葉斯定理,而極大似然法就是為了求解貝葉斯公式中的P(x|c),比如求好瓜中敲聲脆響的概率P(敲聲=脆響|好瓜)。講到這里,可能有些小伙伴,有些迷糊,P(x|c)明明很清楚也很好求,為啥還要用極大似然法,原因其實很簡單,下面會進行說明。
對于單一樣本或者單一屬性而言確實很好求,就好像求解P(敲聲=脆響|好瓜),但是現實生活中我們需要求解的可能是多個屬性,或者含有多個樣本的樣本集,即P(x1,x2,……xn|c),對于這種情況我們往往很難直接求得。
舉個例子,假設對于每個屬性/樣本x1~xn都有0和1兩個值的話,那么x1~xn的組合形式也就有個,這樣也就是說,要想使得訓練集準確,訓練集必須包含每一種可能性。因此,我們訓練集中的訓練樣本數至少要有
個,而且這些訓練樣本還必須都不同。當n大起來或者當x1~xn的取值不僅僅只有兩個值時,就會存在要么訓練集中樣本數量巨大導致訓練過程耗時耗力的問題,要么就會存在訓練集中某種組合缺失導致訓練結果不準的問題,而極大似然法卻恰恰可以幫助我們解決這些問題。
三、極大似然估計法
先說一下極大似然估計法估計條件概率的基本原理/策略,極大似然估計法是先假定其具有某種確定的概率分布形式,再基于訓練樣本對概率分布的參數進行估計(這是《西瓜書》上的原話)。
個人理解:極大似然估計法認為每一個標記c都對應一種概率分形式,比如說正態分布、均勻分布等等,而我們求條件概率就是求特定分布下的某一值的概率,比如說,標記c對應的是正態分布,求P(x=1|c),即求在這個正態分布下的x=1的概率是多少,當正態分布曲線畫出來后,橫軸代表數據點的值,縱軸代表數據點在該分布下的概率。因此,極大似然法就將求條件概率轉換成了求標記c的具體分布,當分布曲線確定好之后,我們就可以直接在曲線上得出相應數據點的概率。
下面我將給出極大似然法的核心公式:
從上面的三條公式,我們不難看出,極大似然法最后求的是令達到最大的
,這與上面所講的極大似然估計法的原理保持一致。
其中,是一個參數向量,以正態分布為例,
,當
確定后,正態分布曲線就可以定下來了,
表示訓練集
中第c 類樣本組成的集合,并且我們假定這些樣本是獨立同分布的。
至于為什么求得的要使
達到最大,原因很簡單。因為我們最根本目的是為了求的一個誤差最小的模型,或者說預測結果最準卻得模型,即P(c|x)要達到最大,因為P(c)和P(x)是確定的,所以根據貝葉斯公式,我們要求P(c|x)達到最大就可以轉換成求P(x|c)達到最大。
樣本點是由采樣得來的,是一定的,而極大似然估計法則認為標記c對應的是一種概率分布形式,在不同的概率分布形式下,相同的樣本點的概率是不同的,所以要使的P(x|c)達到最大,就是要找到一個最佳的概率分布曲線。
當標記c確定為某一概率分布形式后,比如正態分布,通過就可以確定具體概率分布曲線的形態,不同的
會產生不同形態的概率分布曲線,也就會導致P(x|c)出現不同的值,當P(x|c)達到最大時,
必然達到最大。因此,求解P(x|c)的最大值,就也可以轉換成求使
達到最大的
。
參考書籍
周志華老師的《西瓜書》