五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

R語(yǔ)言實(shí)現(xiàn):混合正態(tài)分布EM最大期望估計(jì)法

2021-01-05 08:42 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=4815

?

因?yàn)榻谠诜治鰯?shù)據(jù)時(shí)用到了EM最大期望估計(jì)法這個(gè)算法,在參數(shù)估計(jì)中也用到的比較多。然而,發(fā)現(xiàn)國(guó)內(nèi)在R軟件上實(shí)現(xiàn)高斯混合分布的EM的實(shí)例并不多,大多數(shù)是關(guān)于1到2個(gè)高斯混合分布的實(shí)現(xiàn),不易于推廣,因此這里分享一下自己編寫(xiě)的k個(gè)高斯混合分布的EM算法實(shí)現(xiàn)請(qǐng)大神們多多指教。并結(jié)合EMCluster包對(duì)結(jié)果進(jìn)行驗(yàn)算。

??????本文使用的密度函數(shù)為下面格式:

???對(duì)應(yīng)的函數(shù)原型為 em.norm(x,means,covariances,mix.prop)

x為原數(shù)據(jù),means為初始均值,covariances為數(shù)據(jù)的協(xié)方差矩陣,mix.prop為混合參數(shù)初始值。

使用的數(shù)據(jù)為MASS包里面的synth.te數(shù)據(jù)的前兩列

x <- synth.te[,-3]

首先安裝需要的包,并讀取原數(shù)據(jù)。

  1. install.packages("MASS")


  2. library(MASS)


  3. install.packages("EMCluster")


  4. library(EMCluster)


  5. install.packages("ggplot2")


  6. library(ggplot2)


  7. Y=synth.te[,c(1:2)]


  8. qplot(x=xs, y=ys, data=Y)?

然后繪制相應(yīng)的變量相關(guān)圖:

R語(yǔ)言實(shí)現(xiàn):混合正態(tài)分布EM最大期望估計(jì)法

從圖上我們可以大概估計(jì)出初始的平均點(diǎn)為(-0.7,0.4) (-0.3,0.8)(0.5,0.6)

當(dāng)然 為了試驗(yàn)的嚴(yán)謹(jǐn)性,我可以從兩個(gè)初始均值點(diǎn)的情況開(kāi)始估計(jì)

首先輸入初始參數(shù):

  1. mustart = rbind(c(-0.5,0.3),c(0.4,0.5)) ???


  2. covstart = list(cov(Y), cov(Y))


  3. probs = c(.01, .99)

?

然后編寫(xiě)em.norm函數(shù),注意其中的clusters值需要根據(jù)不同的初始參數(shù)進(jìn)行修改,

  1. em.norm = function(X,mustart,covstart,probs){




  2. ??params = list(mu=mustart, var=covstart, probs=probs) ??


  3. ??clusters = 2?


  4. ??tol=.00001


  5. ??maxits=100


  6. ??showits=T


  7. ??require(mvtnorm)




  8. ??N = nrow(X)


  9. ??mu = params$mu


  10. ??var = params$var


  11. ??probs = params$probs






  12. ??ri = matrix(0, ncol=clusters, nrow=N) ????????


  13. ??ll = 0 ???????????????????????????????????????


  14. ??it = 0 ????????????????????????????????????????


  15. ??converged = FALSE ???????????????????????????




  16. ??if (showits) ????????????????????????????????


  17. ????cat(paste("Iterations of EM:", "\n"))




  18. ??while (!converged & it < maxits) {?

  19. ????probsOld = probs

  20. ????

  21. ????llOld = ll

  22. ????riOld = ri

  23. ????

  24. ???

  25. ????# Compute responsibilities

  26. ????for (k in 1:clusters){

  27. ??????ri[,k] = probs[k] * dmvnorm(X, mu[k,], sigma = var[[k]], log=F)

  28. ????}

  29. ????ri = ri/rowSums(ri)

  30. ????

  31. ??

  32. ????rk = colSums(ri) ????????????????????????????

  33. ????probs = rk/N

  34. ????for (k in 1:clusters){

  35. ??????varmat = matrix(0, ncol=ncol(X), nrow=ncol(X)) ????????

  36. ??????for (i in 1:N){

  37. ????????varmat = varmat + ri[i,k] * X[i,]%*%t(X[i,])

  38. ??????}

  39. ??????mu[k,] = (t(X) %*% ri[,k]) / rk[k]

  40. ??????var[[k]] = ?varmat/rk[k] - mu[k,]%*%t(mu[k,])

  41. ??????ll[k] = -.5 * sum( ri[,k] * dmvnorm(X, mu[k,], sigma = var[[k]], log=T) )

  42. ????}

  43. ????ll = sum(ll)

  44. ????

  45. ?????

  46. ????parmlistold = ?c(llOld, probsOld) ???????????

  47. ????parmlistcurrent = c(ll, probs) ????????????

  48. ????it = it + 1

  49. ????if (showits & it == 1 | it%%5 == 0) ????????

  50. ??????cat(paste(format(it), "...", "\n", sep = ""))

  51. ????converged = min(abs(parmlistold - parmlistcurrent)) <= tol

  52. ??}

  53. ??

  54. ??clust = which(round(ri)==1, arr.ind=T) ??????

  55. ??clust = clust[order(clust[,1]), 2] ??????????

  56. ??out = list(probs=probs, mu=mu, var=var, resp=ri, cluster=clust, ll=ll)

  57. }?

結(jié)果,可以用圖像化來(lái)表示:

  1. qplot(x=xs, y=ys, data=Y)?


  2. ggplot(aes(x=xs, y=ys), data=Y) +


  3. ???geom_point(aes(color=factor(test$cluster)))?

R語(yǔ)言實(shí)現(xiàn):混合正態(tài)分布EM最大期望估計(jì)法
R語(yǔ)言實(shí)現(xiàn):混合正態(tài)分布EM最大期望估計(jì)法

?

?

?類(lèi)似的其他情況這里不呈現(xiàn)了,另外r語(yǔ)言提供了EMCluster包可以比較方便的實(shí)現(xiàn)EM進(jìn)行參數(shù)估計(jì)和結(jié)果的誤差分析。

  1. ret <- init.EM(Y, nclass = 2)


  2. em.aic(x=Y,emobj=list(pi = ret$pi, Mu = ret$Mu, LTSigma = ret$LTSigma))#計(jì)算結(jié)果的AIC

通過(guò)比較不同情況的AIC,我們可以篩選出適合的聚類(lèi)數(shù)參數(shù)值。(歡迎轉(zhuǎn)載,請(qǐng)注明出處。 )

?

?


R語(yǔ)言實(shí)現(xiàn):混合正態(tài)分布EM最大期望估計(jì)法的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
乐安县| 红河县| 蓝山县| 四子王旗| 浙江省| 临颍县| 布拖县| 香格里拉县| 安图县| 南澳县| 宿州市| 罗平县| 南汇区| 恭城| 襄樊市| 饶河县| 兰州市| 连云港市| 新化县| 沭阳县| 中山市| 修水县| 闵行区| 玉溪市| 古蔺县| 三台县| 郁南县| 重庆市| 南投县| 江城| 忻州市| 凌海市| 襄汾县| 依安县| 秭归县| 精河县| 澄城县| 东宁县| 苍梧县| 吉木乃县| 长白|