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.csdn.net/m0_74259787/article/details/144808292