極大似然估計和EM算法



title: 最大似然估計和EM算法
date: 2018-06-01 16:17:21
tags: [算法,機器學習]
categories: 機器學習
mathjax: true

本文是對最大似然估計和EM算法做的一個總結。

一般來說,事件A發生的概率與某個未知參數\(\theta​\)有關,\(\theta​\)取值不同,則事件A發生的概率\(p(A|\theta)​\)也不同。當我們在一次實驗中事件A發生了,則認為此時的\(\theta​\)值應是t的一切可能取值中使\(p(A|\theta)​\)最大的那個。最大似然估計就是要選取這樣的t值作為參數t的估計值,使所選取的樣本在被選的總體中出現的可能性為最大。

EM算法是在有潛變量的情況下,通過不斷進行最大似然估計來求解參數的過程。

最大似然估計

最大似然估計/極大似然估計(Maximum Likelihood Estimation,簡稱MLE)

前言

利用已知的樣本的結果,在使用某個模型的基礎上,反推出最有可能導致這種結果的模型參數值。是一種參數估計方法。

例子:

定義有些繞口,下面我們通過例子來理解一下。

我們知道,現實中的硬幣是均勻的,即拋出后正面朝上和反面朝上的概率是一樣的。
但是現在假設有兩枚不均勻的硬幣,這兩枚硬幣正面朝上的概率都不是0.5,分別記為\(p_1\)\(p_2\)
記每選用一枚硬幣拋5次為一個實驗,得到實驗結果如下:

實驗所選硬幣 實驗結果
1 3正、2反
1 1正、4反
1 2正、3反
2 2正、3反
2 1正、4反

好!那么我現在問,根據實驗結果你可以得到\(p_1\)\(p2\)的值嗎?你應該會這樣算:

\(p1=(3+1+2)/15=0.4\)

\(p2=(2+1)/10=0.3\)

然后你就說了,\(p1\)最有可能是0.4,\(p2\)最有可能是0.3。

現在我們就完成了一次最大似然估計!


  • 什么是似然估計?---根據實驗結果,反推出實驗參數。
  • 什么是最大似然估計?---根據實驗結果,反推出最有可能導致這個結果的實驗參數。
  • 什么是概率?---根據參數,推出可能的實驗結果。

用數學的語言來描述就是:

概率:\(p(x|\theta)\)參數\(\theta\)確定的情況下,\(x\)出現的概率

似然:\(L(\theta|x_1,x_2,...)\) 根據結果,反推參數

定義

最大似然估計提供了一種給定觀察數據來評估模型參數的方法,即:“模型已定,參數未知”。

假設我們要統計全國人口的身高,首先假設這個身高服從正態分布,但是該分布的均值與方差未知。一種解決辦法是:通過采樣,獲取部分人的身高,然后通過最大似然估計來獲取上述假設中的正態分布與均值。

最大似然估計中采樣需要滿足:所有的采樣都是獨立同分布的。下面具體描述最大似然估計:

首先,假設\(x_1,x_2,...,x_n\)是獨立同分布的采樣,\(\theta\)是模型的參數,\(f\)為我們使用的模型。所以,參數為\(\theta\)的模型產生上述采樣可以表示為:

\(f(x_1,x_2,...,x_n)=f(x_1|\theta)\times f(x_2|\theta)\times ... \times f(x_n|\theta)\)

回到上面“模型已定,參數未知”的說法,此時,我們已知的為\(x_1,x_2,...,x_n\),未知參數\(\theta\),所以似然定義為:

\(L(\theta|x_1,x_2,...,x_n)=f(x_1,x_2,...,x_n)=\prod\limits_{i=1}^nf(x_i|\theta)\)

最大似然估計就是求上式的極值點。所以自然想到求導了,因為右邊是連乘,為了計算簡便,同時對等號兩邊取對數,有:

\(\ln L(\theta|x_1,...,x_n)=\sum\limits_{i=1}^n\ln f(x_i|\theta)\) \(\hat l = \frac 1n\ln L\)

其中 \(\ln L(\theta|x_1,...,x_n)\)稱為對數似然,\(\hat l\)為平均對數似然。通常所說的最大似然指的是最大的平均對數似然:

\(\hat{\theta}_{mle}=\arg\limits_{\theta\in\Theta}\max\hat l(\theta|x_1,...,x_n)\)

例子1

舉一個在很多博客都看到過的例子:

盒子里總共有若干個除顏色外均相同的球,進行100次有放回的隨機摸球實驗,摸到紅球和白球的次數分別是30和70。用最大似然估計法求盒子中紅球和白球比例。

解:

設紅球比例為p,則白球為(1-p)。

則出現題目中結果(30次紅,70次白)的概率可以寫成:

\(f(x_1,x_2,...,x_{100}|\theta)=f(x_1|\theta)\times f(x_2|\theta)\times ...\times f(x_{100}|\theta)\)

\(=p^{30}(1-p)^{70}\)---------------------------式1

其中\(x_i\)代表第i次實驗結果。

ps: 我一直覺得上面這個式子有問題....這是問題不考慮紅球白球取出的次序,計算概率時不是應該再乘以一個\(C_{100}^{30}\)嗎? 因為常數系數不影響之后的求導結果,所以這個問題不影響下面計算,但還是很想知道為什么。。。

好,實驗結果(抽100次,有30次紅70次白)我們已經知道了,所以當理論上這個概率(上式的值)越大,說明實際情況發生的可能性也越大,實驗結果符合預期豈不是美滋滋:happy:。

So,我們希望式1的值盡可能大。即讓式1取最大值時,此時參數p的取值就時我們對p的最大似然估計。

那么,直接對式1求導就行了:$f^{'} =0\Longrightarrow p =0.3 $。也就是說當p=0.3時,出現這種實驗結果(30,70)的可能性最大。這和我們常識的推測一致。所以0.3是我們求得的參數p的最大似然值。

例子2 正態分布

假如有一組采樣值\((x_1,x_2,...,x_n)\),我們知道其服從正態分布,且標准差已知。當這個正態分布的期望為多少時,產生這個采樣數據的概率為最大?

這個例子中正態分布就是模型M,而期望就是前文提到的未知參數\(\theta\)

似然:\(L(\theta|x_1,x_2,...,x_n)=f(x_1,x_2,...,x_n|\theta)=\prod\limits_{i=1}^nf(x_i|\theta)\)

正態分布的公式:\(M=f(x)=\frac1{\sqrt{2\pi}\sigma}\exp \left(-\frac{(x-\mu)^2}{2\sigma^2}\right)\) \(N(\mu,\sigma^2)\)

似然值:\(f(x_1,x_2,...,x_n|\theta)=\left(\frac1{\sqrt{2\pi}\sigma}\right)^n\exp\left(-\frac1{2\sigma^2}\sum\limits_{i=1}^n(x-\mu)^2\right)\)

對上面式子求導可得:\(l^{'}=0\Longrightarrow \sum\limits_{i=1}^n(x_i-\mu)=0\Longrightarrow\mu=\frac1n\sum\limits_{i=1}^nx_i\)

最大似然算法推導出的正態分布的期望和我們嘗試算出來的一樣。

總結

我們可以得到最大似然估計的算法步驟如下:

  1. 寫出似然函數;
  2. 如果直接求導困難,則兩邊同時取\(\ln\)對數,化成對數似然函數;
  3. 求導;
  4. 根據導數=0,求出極值點。

EM算法

EM(Expectation Maximal)算法,也稱最大期望算法。

很接地氣的EM算法解讀

強烈推薦看上面這篇博客看,我覺得算法就是需要這種通俗的講解才能真正吃透。這里就不累述了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM