R語言 MLE以及EM演算法模擬實驗

2021-08-27 17:23:09 字數 2163 閱讀 9262

看了一篇來自zouxy09的「從最大似然到em演算法淺解」博文

詳細演算法和數學公式在

某學校抽樣100位男生和100位女生的身高,男生和女生身高分別滿足各自的高斯分布。現在200個樣本資料混亂放置在一起,如何通過em演算法,求出男生身高的均值和標準差?

首先,我們模擬男女生身高樣本。模擬男生theta值為mu=1.75, sd=0.316。女生theta值為mu=1.65, sd=0.316

#data simulation

set.seed(1001)

mstudent<-rnorm(100,1.75,0.316)

fstudent<-rnorm(100,1.65,0.316)

totalstu<-cbind(mstudent,fstudent)

totalstu1<-c(mstudent,fstudent)

按照em演算法步驟,e-step. 對hidden vairiable (z)進行估計,把男生和女生分成兩類。

###################

#e-step:

###################

estep.fn=function(data,flag, mub,sigmab,mug,sigmag)else

}if(flag==1)else

return (listg)

}

接著, m-step: 對特定的男生類,或者女生類進行mle估計

#log-likelihood function

set.seed(1001)

ll.fn <- function(mu, sigma)

# maximum likelihood estimator

mle(ll.fn, start = list(mu = 1, sigma=1))

最後上em 演算法

#####################

# iteration

#####################

itr.fn=function(data,muinib,sigmainib,muinig,sigmainig,itrnum)

llg.fn <- function(mu, sigma)

# maximum likelihood estimator

b.mle.coefs<-mle(llb.fn, start = list(mu=muinib, sigma=sigmainib))

g.mle.coefs<-mle(llg.fn, start = list(mu=muinig, sigma=sigmainig))

b.muitr<-coef(b.mle.coefs)[["mu"]]#coef(mle.test)[["mu"]]

b.sigmaitr<-coef(b.mle.coefs)[["sigma"]]

g.muitr<-coef(g.mle.coefs)[["mu"]]#coef(mle.test)[["mu"]]

g.sigmaitr<-coef(g.mle.coefs)[["sigma"]]

itrnum=itrnum-1

#iteration-step

if(itrnum==0)else

}

最後結果

itr.fn(totalstu1,1.8,1,1.6,1,n)#n為迭代的次數。

迭代三次,就開始收斂。但是效果不好,下面是結果

bmu bsigma gmu gsigma

1.9658193 0.2170255 1.4610679 0.1583682

對比模擬值:theta值為mu=1.75, sd=0.316。女生theta值為mu=1.65, sd=0.316

下面是簡單地思考,在e-step的過程中,由於兩個分布重疊部分較大,所以考慮這樣在使用r語言求dnorm時,分類情況如下,男生的身高均值在1.96,女生則在1.46。

下一步考慮如何去除這個干擾。。。本篇未完,待續。。。。

參考:[url]

[url]

機器學習基礎 MLE和EM演算法

假設乙個情景 假設某種實驗有四個可能得結果,其發生概率分別為 frac frac,frac frac,frac frac,frac 且次數分別為 y 1,y 2,y 3,y 4 求 theta 的估計值。beginl theta frac frac frac frac frac frac frac ...

高斯混合模型以及EM演算法

高斯混合模型 gmm 顧名思義,就是資料可以看作是從數個高斯分布中生成出來的。雖然我們可以用不同的分布來隨意地構造 xx mixture model 但是 gmm是 最為流行。另外,mixture model 本身其實也是可以變得任意複雜的,通過增加 model 的個數,我們可以任意地逼近任何連續的...

機器學習中的EM演算法詳解及R語言例項(2)

4.高斯混合模型 高斯混合模型 gmm,gaussian mixture model 可以看成是em演算法的一種現實應用。利用這個模型可以解決聚類分析 機器視覺等領域中的許多實際問題。4.1 模型推導 在討論em演算法時,我們並未指定樣本來自於何種分布。實際應用中,常常假定樣本是來自正態分佈之總體的...