1. 效果
已知数据符合上图分布,怎么求下图的三个分布的参数mu, sigma,及每个分布的权重 lambda?
2. 代码: 高斯混合模型(Gaussian Mixture Model,简称GMM)
library(mixtools)
set.seed(123) # 确保结果可重复
# 假设x是你的观测数据
x <- rnorm(1000, mean=c(-2, 0, 2), sd=c(1, 1, 1))
x <- c(x, x + 5, x - 5) # 模拟三峰数据
# 绘制密度图
par(mfrow=c(2,1))
plot(density(x), main="三峰密度图", xlab="观测值", xlim=c(-10, 10))
# 拟合三峰正态混合模型
mix <- normalmixEM(x, k=3, maxit=1000, epsilon=1e-4)
summary(mix)
abline(v=mix$mu, col="red", lty=2, lwd=2)
# 绘制拟合结果
# plot(mix, which=2, main="拟合结果")
plot(mix, density = TRUE, w = 1.1)
#plot(mix, which = 2) # 第2种图,会显示混合分布曲线
3.获取参数
> summary(mix)
summary of normalmixEM object:
comp 1 comp 2 comp 3
lambda 0.513487 0.110986 0.375528
mu -3.613972 6.917701 2.934937
sigma 2.609374 1.088864 2.020785
loglik at estimate: -8589.094
> mix$mu
[1] -3.613972 6.917701 2.934937
> mix$sigma
[1] 2.609374 1.088864 2.020785
> mix$lambda
[1] 0.5134868 0.1109857 0.3755276
其中 lambda 是混合模型中的权重参数。每个在0到1之间。和是1。
4.名词解释
-
高斯混合模型(Gaussian Mixture Model,简称GMM) 是一种概率模型,用于表示由多个高斯分布(正态分布)组成的复杂分布。
-
谱学习算法(Spectral Learning Algorithms)是一类利用线性代数中的矩阵分解技术来估计模型参数的方法,在自然语言处理、机器学习等领域有广泛的应用。
Ref:
- https://blog.youkuaiyun.com/m0_74259787/article/details/144808292