论文R语言复现 | 基于 EM 算法的高斯混合模型参数估计
高斯混合概率在众多领域都有重要应用,依据已知观测数据估计高斯模型中未知参数就显得尤为重要,由于观测值具体来自于高斯分布的哪个分模型是未知的,那么利用传统的极大似然( MLE) 方法进行参数估计就变得十分困难。引入 EM 算法,该方法通过构造分布已知的潜变量对模型进行参数估计,经过多次迭代优化可以使估计值逐渐逼近真实值。本文主要复现该篇文章的实证部分~
目录
- 一、复现内容
- 二、复现代码
一、复现内容
二、复现代码
alpha_1<-0.5
alpha_2<-0.5
mu_1<-0.36
mu_2<-0.25
sigma_1<-1.4
sigma_2<-1.3fi<-function(x,mu,sigma){y<-1/(sqrt(2*pi)*sigma)*exp(-(x-mu)**2/(2*sigma**2))return(y)
}x<-c(0.900,-2.618,1.235,-0.382,0.850,0.443,0.444,0.185,1.502,1.071)gauss_em<-function(x,alpha,mu,sigma){z<-alpha*fi(x,mu,sqrt(sigma))/(alpha_1*fi(x,mu_1,sqrt(sigma_1))+alpha_2*fi(x,mu_2,sqrt(sigma_2)))mu<-sum(z*x)/sum(z)sigma<-sum(z*((x-mu)**2))/sum(z)alpha<-mean(z) parms<-list(alpha,mu,sigma)return(parms)
}gauss_em(x,alpha_1,mu_1,sigma_1)
gauss_em(x,alpha_2,mu_2,sigma_2)alpha1_vec<-c()
alpha2_vec<-c()
mu1_vec<-c()
mu2_vec<-c()
sigma1_vec<-c()
sigma2_vec<-c()for(i in 1:20){result_1<-gauss_em(x,alpha_1,mu_1,sigma_1)result_2<-gauss_em(x,alpha_2,mu_2,sigma_2)alpha_1<-result_1[[1]]mu_1<-result_1[[2]]sigma_1<-result_1[[3]]alpha_2<-result_2[[1]]mu_2<-result_2[[2]]sigma_2<-result_2[[3]]alpha1_vec<-c(alpha1_vec,alpha_1)alpha2_vec<-c(alpha2_vec,alpha_2)mu1_vec<-c(mu1_vec,mu_1)mu2_vec<-c(mu2_vec,mu_2)sigma1_vec<-c(sigma1_vec,sigma_1)sigma2_vec<-c(sigma2_vec,sigma_2)}em_rst<-data.frame(alpha1_vec,alpha2_vec,mu1_vec,mu2_vec,sigma1_vec,sigma2_vec)
em_rstplot_rst<-function(x,xlab,title){plot(1:20,x,type='o',xlab=xlab,main=title,xaxt='n',col='red')axis(1,1:20)
}par(mfrow=c(2,3))
params_names<-c("alpha1","alpha2","mu1","mu2","sigma1","sigma2")
params_list<-list(alpha1_vec,alpha2_vec,mu1_vec,mu2_vec,sigma1_vec,sigma2_vec)for(i in 1:length(params_list)){plot_rst(params_list[[i]],params_names[i],paste0('EM算法——',params_names[i],'迭代趋势'))
}
注意:论文表格中的 σ\sigmaσ 和 μ\muμ 标记反了!
参考文章:
[1]梁盛楠.基于EM算法的高斯混合模型参数估计[J].黔南民族师范学院学报,2020,40(04):5-8.
论文R语言复现 | 基于 EM 算法的高斯混合模型参数估计相关推荐
- 基于EM算法的高斯混合模型参数估计
一 算法思想 对于样本数据集所含变量都是可观测的,我们一般应用极大似然估计法或者贝叶斯估计法估计模型参数.但若样本数据集中存在不可观测的变量(隐变量),那么单纯的极大似然估计法是不可用的:EM算法(e ...
- 机器学习教程 之 EM算法 :高斯混合模型聚类算法 (python基于《统计学习方法》实现,附数据集和代码)
之前写过一篇博客讲述极大似然方法, 这一方法通常适用于知道观测数据 Y Y Y,求解模型参数 θ \theta θ的场合,即 P ( Y ∣ θ ) P(Y|\theta) P(Y∣θ). 但是,在更 ...
- 百面机器学习—7.K均值算法、EM算法与高斯混合模型要点总结
文章目录 一.总结K均值算法步骤 二.如何合理选择K值? 三.K均值算法的优缺点是什么? 四.如何对K均值算法进行调优? 五.EM算法解决什么问题? 六.EM算法流程是什么? 六.EM算法能保证收敛嘛 ...
- EM算法在高斯混合模型学习中的应用
本篇文章是之前期望极大算法(EM算法)文章的后续,有需要可以先看看那篇文章关于EM算法的推导. 高斯混合模型 高斯混合模型是研究算法的人避不开的一个东西,其在非深度学习的远古时代经常被用到,比如图像处 ...
- 采用EM算法对高斯混合模型(GMM)进行参数估计
介绍一个EM算法的应用例子:高斯混合模型参数估计. 高斯混合模型 高斯混合模型(Gaussian Mixture Model, GMM)是由多个高斯分布组成的模型,其密度函数为多个高斯密度函数的加权组 ...
- matlab删失数据威布尔,随机删失数据下基于EM算法的Weibull分布参数估计
1引言生存数据分析的统计方法在生物医学和可靠性研究中,甚至在犯罪学.社会学.市场学以及健康保险领域的研究中,有重要的应用.但是,在生存数据的观测中常常由于动物的意外死亡.被调查者拒绝回答有关调查项目. ...
- EM算法及高斯混合模型GMM详述
1.最大似然估计 最大似然估计(Maximum Likelihood Estimation,MLE)就是利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值的计算过程.直白来讲,就是给定了 ...
- python概率密度函数参数估计_EM算法求高斯混合模型参数估计——Python实现
#coding:gbk import math import copy import numpy as np import matplotlib.pyplot as plt isdebug = Fal ...
- em算法python代码_EM 算法求解高斯混合模型python实现
注:本文是对<统计学习方法>EM算法的一个简单总结. 1. 什么是EM算法? 引用书上的话: 概率模型有时既含有观测变量,又含有隐变量或者潜在变量.如果概率模型的变量都是观测变量,可以直接 ...
最新文章
- TCP/IP拥塞控制复习
- 向量笛卡尔积_如何创建向量的矢量的笛卡尔积?
- FlexiBO:基于成本感知的深度神经网络多目标优化
- BugKuCTF 杂项 隐写2
- 问题 F: 序列操作Ⅱ(前缀最大公约数,后缀最大公约数)
- 使用各类BeanUtils的时候,切记注意这个坑!
- 第四届CocoaChina开发者大会官网上线
- hyperion卫星重访时间_观摩卫星发射|2020第四届全球物联网大会上让我们一起去“放星”...
- java程序示例_Java程序中的Google搜索示例
- Filebeat 5.x 日志收集器 安装和配置
- 51 Nod 1005 大数加法【Java大数乱搞,python大数乱搞】
- 【离散数学】【图论】哈密顿图
- 使用APICloud AVM多端组件快速实现app中的搜索功能
- 《java程序设计基础》使用Reader和Writer流类
- 将m个相同的球全部放到n个相同的盒子里面有几种放法,盒子不能为空
- Go 基础(二)关键字和代码注释
- 一个千兆电口和自协商的问题
- 模糊控制在matlab中常见的疑难问题及模糊逻辑工具箱的使用
- GeneXus学习记录——环境搭建
- SSL/TLS连接建立过程
热门文章
- True Nobility(《真正的高贵》)By Ernest Hemingway(海明威)
- 如何将编码转为自己想要的编码 -- gbk utf-8
- python 提取网页正文_小苹果来科普 | 关于python爬虫的那些事儿
- 心灵鸡汤 - fifth (5th)
- 阿里B2B总裁戴珊:全球化的天猫双11,普惠全球共享快乐
- 虚幻商城Simple UDP TCP Socket Client的使用方式
- 服务器数据盘与系统盘做raid,服务器做Raid盘阵列和Raid磁盘阵列区别和优势
- 第五届全球游戏开发者大会暨天府奖盛典18日盛大开幕
- 关于tomcat的内存参数优化——如何配置catalina.sh的JAVA_OPTS?
- 单片机 c语言怎么写一个简易秒表?用一个键盘按键开始暂停的,51单片机秒表计时器课程设计报告(含C语言程序)...