極大似然估計是概率論中一個很常用的估計方法,在機器學習中的邏輯回歸中就是基於它計算的損失函數,因此還是很有必要復習一下它的相關概念的。
背景
先來看看幾個小例子:
- 獵人師傅和徒弟一同去打獵,遇到一只兔子,師傅和徒弟同時放槍,兔子被擊中一槍,那么是師傅打中的,還是徒弟打中的?
- 一個袋子中總共有黑白兩種顏色100個球,其中一種顏色90個,隨機取出一個球,發現是黑球。那么是黑色球90個?還是白色球90個?
看着兩個小故事,不知道有沒有發現什么規律...由於師傅的槍法一般都高於徒弟,因此我們猜測兔子是被師傅打中的。隨機抽取一個球,是黑色的,說明黑色抽中的概率最大,因此猜測90個的是黑色球。
他們有一個共同點,就是我們的猜測(估計),都是基於一個理論:概率最大的事件,最可能發生
其實我們生活中無時無刻不在使用這種方法,只是不知道它在數學中是如何確定或者推導的。而在數理統計中,它有一個專業的名詞:
極大似然估計(maximum likelihood estimation, MLE),通俗的說就是 —— 最像估計法(最可能估計法)
數學過程
極大似然原理與數學表示
官方一點描述上面的過程,即:有n個實驗結果,\({ A }_{ i }\)到\({ A }_{ n }\),如果\({ A }_{ j }\)發生了,則意味着\({ A }_{ j }\)發生的概率最大。
即,一次試驗就發生的事件,這個事件本身發生概率最大
PS
舉個例子,我們在學校衡量學習成績的標准就是考試成績,高考更是一考定終身的感覺。高考成績的好壞,則可以當做一個學生能力的體現,雖然有的人考試緊張考砸了,有的人超常發揮了,但是從概率上來說,高考的成績基本可以判斷這個人的(學習)能力。基於極大似然的解釋就是,我們高考的成績很大程度上反應了平時的學習能力,因此考得好的(當前發生的事件),可以認為是學習好的(所有事件發生概率最大的)。
再抽象一點,如果事件發生是關於 \(\theta\) 參數的,那么一次事件放生時,樣本為\({x}_{1},...{x}_{k}\),那么\(\hat { \theta } ({x}_{1},...{x}_{k})\)就是\(\theta\)的估計值。當\(\theta=\hat { \theta } ({x}_{1},...{x}_{k})\)時,當前樣本發生的概率最大。
PS
再舉個射箭的例子,在《權力的游戲》中有個場景,老徒利死的時候,屍體放在穿上,需要弓箭手在岸邊發射火箭引燃。但是當時的艾德慕·徒利公爵射了三箭都沒中,布林登·徒利實在看不下去了,通過旗幟判斷風向,一箭命中!
因此箭能否射中靶心,不僅跟弓箭手的瞄准能力有關,還跟外界的風向有關系。假設不考慮人的因素,但看風向...同樣的瞄准和力度,風太大不行、太小也不行....那我們給風的大小設置一個值為\(\theta\)。假設一名弓箭手射出了三只箭,分別是8環、6環、7環(即\({x}_{1}=8\),\({x}_{2}=6\),\({x}_{3}=7\)),當天風的大小為88。那么我們認為只有\(\theta=88\),發生上面事件的概率最大。
極大似然估計法
如果總體X為離散型
假設分布率為\(P=p(x;\theta )\),x是發生的樣本,\(\theta\)是代估計的參數,\(p(x;\theta)\)表示估計參數為\(\theta\)時,發生x的的概率。
那么當我們的樣本值為:\({x}_{1},{x}_{2},...,{x}_{n}\)時,
其中\(L(\theta)\)成為樣本的似然函數。
假設
有 \(\hat{\theta}\) 使得 \(L(\theta)\) 的取值最大,那么 \(\hat {\theta}\)就叫做參數 \(\theta\) 的極大似然估計值。
如果總體X為連續型
基本和上面類似,只是概率密度為\(f(x;\theta)\),替代p。
解法
- 構造似然函數\(L(\theta)\)
- 取對數:\(lnL(\theta)\)
- 求導,計算極值
- 解方程,得到\(\theta\)
解釋一下,其他的步驟很好理解,第二步取對數是為什么呢?
因為根據前面你的似然函數公式,是一堆的數字相乘,這種算法求導會非常麻煩,而取對數是一種很方便的手段:
- 由於ln對數屬於單調遞增函數,因此不會改變極值點
- 由於對數的計算法則:\(ln{ a }^{ b }=blna\)、\(lnab=lna+lnb\) ,求導就很方便了
例子這里就不舉了,感興趣的話,可以看看參考的第二篇里面有好幾個求解極大似然估計的例子。