EM算法与高斯混合模型(GMM)

EM算法是一种迭代算法,1977年由Dempster等人总结提出,用于含有隐变量(hidden variable)的概率模型参数的极大似然估计,或极大后验概率估计。EM算法的每次迭代由2步组成:

  1. E-step:求期望(expectation)
  2. M-step:最大化(maximization)

所以该算法称为期望极大算法(expectation maximization algorithm),简称EM算法。EM算法的一个重要应用是高斯混合模型(GMM)的参数估计。这里以学习笔记的方式,梳理EM算法在GMM参数估计中的主要过程,记录如下:

  • 【k-mixture GMM的概率分布】

    P(X|Θ)=∑l=1kαlN(X|θl)=∑l=1kαlN(X|μl,Σl)P(X|Θ)=∑l=1kαlN(X|θl)=∑l=1kαlN(X|μl,Σl)

    P(X | \Theta) = \sum_{l=1}^k \alpha_l N(X | \theta_l) = \sum_{l=1}^k \alpha_l N(X | \mu_l, \Sigma_l)

    其中,Θ={α1,...,αk;θ1,...,θk}={α1,...,αk;μ1,...,μk;Σ1,...,Σk}Θ={α1,...,αk;θ1,...,θk}={α1,...,αk;μ1,...,μk;Σ1,...,Σk}\Theta = \{ \alpha_1,...,\alpha_k;\theta_1,...,\theta_k\} = \{ \alpha_1,...,\alpha_k;\mu_1,...,\mu_k;\Sigma_1,...,\Sigma_k \},αlαl\alpha_l代表各高斯的权重,∑kl=1αl=1∑l=1kαl=1\sum_{l=1}^k \alpha_l = 1。因此,由kkk个高斯分布分模型组成的GMM可以理解为:这k" role="presentation" style="position: relative;">kkk个高斯分布以不同的权重,组合成一个混合模型,混合模型产生的每一个样本点xixix_i都受到kkk个高斯分布的不同影响,影响的大小由权重αl" role="presentation" style="position: relative;">αlαl\alpha_l决定。举个不太恰当的例子帮助理解:

    A、B国的混血女+C、D国的混血男=子女1+...+子女nA、B国的混血女+C、D国的混血男=子女1+...+子女n

    A、B国的混血女 + C、D国的混血男 = 子女_1 + ... + 子女_n

    其中,A、B、C、DA、B、C、DA、B、C、D代表4个不同的高斯分布,它们以一定的权重形成一个高斯混合模型,这个模型生出来的每一个子女i子女i子女_i,都会受到A、B、C、DA、B、C、DA、B、C、D四国血统的影响,影响的大小由A、B、C、DA、B、C、DA、B、C、D结合时所给出基因多少(权重)决定。

  • 【k-mixture GMM的对数似然函数】

    L(Θ|X)=logP(X|Θ)=log[∑l=1kαlN(X|μl,Σl)]=log[∏i=1n∑l=1kαlN(xi|μl,Σl)]=∑I=1n[log(∑l=1kαlN(xi|μl,Σl))]L(Θ|X)=logP(X|Θ)=log[∑l=1kαlN(X|μl,Σl)]=log[∏i=1n∑l=1kαlN(xi|μl,Σl)]=∑I=1n[log(∑l=1kαlN(xi|μl,Σl))]

    L(\Theta | X) = logP(X | \Theta) = log[\sum_{l=1}^k \alpha_l N(X | \mu_l, \Sigma_l)] = log[\prod_{i=1}^n \sum_{l=1}^k \alpha_l N(x_i | \mu_l, \Sigma_l)] = \sum_{I=1}^n [ log(\sum_{l=1}^k \alpha_l N(x_i | \mu_l, \Sigma_l))]

    我们的目标是求出使L(Θ|X)L(Θ|X)L(\Theta | X)最大的各个高斯参数,即

    ΘMLE=argmaxΘ{logP(X|Θ)}ΘMLE=argmaxΘ⁡{logP(X|Θ)}

    \Theta_{MLE} = \mathop{argmax}_{\Theta} \{logP(X | \Theta)\}但是:logloglog中带有∑∑\sum符号不利于求导;求导后令其为零也很难得到参数集ΘΘ\Theta中的众多参数。

  • 【EM算法的基本思想】

    当无法一步到位地将ΘMLEΘMLE\Theta_{MLE}求出来时,可以通过迭代的方式,从初始参数Θ(1)Θ(1)\Theta^{(1)}→→\toΘ(2)Θ(2)\Theta^{(2)}→→\to…→→\toΘ(f)Θ(f)\Theta^{(f)},直到下一次迭代更新,参数的变化十分小,即可认为其收敛,并得到最优参数Θ(f)Θ(f)\Theta^{(f)}。

    既然是要使对数似然函数最大化,那么每一步迭代都必须保证:

    log[P(X|Θ(g+1))]≥log[X|P(Θ(g))]log[P(X|Θ(g+1))]≥log[X|P(Θ(g))]

    log[P(X | \Theta^{(g+1)})] \ge log[X | P(\Theta^{(g)})]

    并且,EM算法给出的关于Θ(g+1)Θ(g+1)\Theta^{(g+1)}和Θ(g)Θ(g)\Theta^{(g)}之间满足的关系是:

    Θ(g+1)=argmaxΘ(∫zP(Z|X,Θ(g))logP(X,Z|Θ)dz)Θ(g+1)=argmaxΘ⁡(∫zP(Z|X,Θ(g))logP(X,Z|Θ)dz)

    \Theta^{(g+1)} = \mathop{argmax}_{\Theta}(\int_z P(Z | X,\Theta^{(g)})logP(X,Z | \Theta)dz)

    其中,Θ(g)Θ(g)\Theta^{(g)}是上一次迭代得到的参数,Θ(g+1)Θ(g+1)\Theta^{(g+1)}是下一次迭代更新的参数。ZZZ称为隐变量,它是一种不可观测的辅助变量。隐变量的添加必须满足:

    1. 加入隐变量后能够简化模型的解法
    2. 在概率模型中,加入隐变量后不能改变数据的边缘分布,即要满足P(X|Θ)=∫zP(X|Z,Θ)P(Z|Θ)dz" role="presentation" style="position: relative;">P(X|Θ)=∫zP(X|Z,Θ)P(Z|Θ)dzP(X|Θ)=∫zP(X|Z,Θ)P(Z|Θ)dzP(X | \Theta) = \int_z P(X | Z, \Theta) P(Z | \Theta)dz
    3. 【GMM中的隐变量Z={z1,z2,...,zn}Z={z1,z2,...,zn} Z = \{z_1,z_2,...,z_n\}】

      观测数据xixix_i(i=1,2,...,ni=1,2,...,ni=1,2,...,n)是这样产生的:首先依照各高斯的权重αlαl\alpha_l,选出第lll个高斯分布,然后依照第l" role="presentation" style="position: relative;">lll个高斯的概率分布N(X|θl)N(X|θl)N(X | \theta_l)生成观测数据xixix_i。这时观测数据xixix_i(i=1,2,...,ni=1,2,...,ni=1,2,...,n)是已知的,反映观测数据xixix_i属于哪一个高斯分模型的数据是未知的,将这个未知的、观测不到的数据称为隐变量ziziz_i(i=1,2,...,ni=1,2,...,ni=1,2,...,n)。显然,zi∈{1,2,...,k}zi∈{1,2,...,k}z_i\in\{1,2,...,k\}。

      xi→zi:样本点xi属于第zi个高斯分布xi→zi:样本点xi属于第zi个高斯分布

      x_i \to z_i:样本点x_i属于第z_i个高斯分布

    4. 【EM算法的收敛性】

      EM算法的核心就是按照Θ(g+1)Θ(g+1)\Theta^{(g+1)}和Θ(g)Θ(g)\Theta^{(g)}之间的等式关系,不断去更新参数,并且能保证每一次更新,都使得对数似然函数逐渐增大。证明EM算法的收敛性:

      P(X|Θ)=P(X,Z|Θ)P(Z|X,Θ)P(X|Θ)=P(X,Z|Θ)P(Z|X,Θ)

      P(X | \Theta) = \frac{P(X,Z | \Theta)}{P(Z | X, \Theta)}

      等式两边取对数并以P(Z|X,Θ(g))P(Z|X,Θ(g))P(Z | X, \Theta^{(g)})为概率分布求期望:

      E[logP(X|Θ)]=E[logP(X,Z|Θ)]−E[logP(Z|X,Θ)]E[logP(X|Θ)]=E[logP(X,Z|Θ)]−E[logP(Z|X,Θ)]

      E[logP(X | \Theta)] = E[logP(X,Z | \Theta)] - E[logP(Z |X, \Theta)]

      则等式左边写为:

      ∫zP(Z|X,Θ(g))logP(X|Θ)dz=logP(X|Θ)∫zP(Z|X,Θ(g))dz=logP(X|Θ)∫zP(Z|X,Θ(g))logP(X|Θ)dz=logP(X|Θ)∫zP(Z|X,Θ(g))dz=logP(X|Θ)

      \int_z P(Z | X, \Theta^{(g)})logP(X | \Theta)dz = logP(X | \Theta) \int_z P(Z | X, \Theta^{(g)})dz = logP(X | \Theta)

      等式右边写为:

      ∫zP(Z|X,Θ(g))logP(X,Z|Θ)dz−∫zP(Z|X,Θ(g))logP(Z|X,Θ)dz=Q(Θ,Θ(g))−H(Θ,Θ(g))∫zP(Z|X,Θ(g))logP(X,Z|Θ)dz−∫zP(Z|X,Θ(g))logP(Z|X,Θ)dz=Q(Θ,Θ(g))−H(Θ,Θ(g))

      \int_z P(Z | X, \Theta^{(g)})logP(X,Z | \Theta)dz - \int_z P(Z | X, \Theta^{(g)})logP(Z |X, \Theta)dz = Q(\Theta, \Theta^{(g)}) - H(\Theta, \Theta^{(g)})

      由Jensens不等式可以证明H(Θ(g),Θ(g))≥H(Θ,Θ(g)),∀ΘH(Θ(g),Θ(g))≥H(Θ,Θ(g)),∀ΘH(\Theta^{(g)},\Theta^{(g)}) \ge H(\Theta,\Theta^{(g)}),\forall \Theta

      从而对于任意一次迭代更新参数Θ(g+1)Θ(g+1)\Theta^{(g+1)},都有H(Θ(g),Θ(g))≥H(Θ(g+1),Θ(g))H(Θ(g),Θ(g))≥H(Θ(g+1),Θ(g))H(\Theta^{(g)},\Theta^{(g)}) \ge H(\Theta^{(g+1)},\Theta^{(g)})

      因此,只要argmax{Q(Θ,Θ(g))}argmax{Q(Θ,Θ(g))}argmax\{Q(\Theta, \Theta^{(g)})\},就能保证对数似然函数的最大化。注意QQQ函数中,Θ(g)" role="presentation" style="position: relative;">Θ(g)Θ(g)\Theta^{(g)}是上一次迭代后得到的固定常数,而ΘΘ\Theta是一个变量,作argmaxargmaxargmax不会改变Θ(g)Θ(g)\Theta^{(g)}的值。

    5. 【EM算法的核心定义:E-step】

      上述Q(Θ,Θ(g))Q(Θ,Θ(g))Q(\Theta, \Theta^{(g)})可以看作函数logP(X,Z|Θ)logP(X,Z|Θ)logP(X,Z | \Theta)以概率分布P(Z|X,Θ(g))P(Z|X,Θ(g))P(Z | X, \Theta^{(g)})求期望,其定义如下:

      1. 观测值与隐变量的联合概率:

        P(X,Z|Θ)=∏i=1np(xi,zi|Θ)=∏i=1np(xi|zi,Θ)p(zi|Θ)=∏i=1nαziN(xi|μzi,Σzi)P(X,Z|Θ)=∏i=1np(xi,zi|Θ)=∏i=1np(xi|zi,Θ)p(zi|Θ)=∏i=1nαziN(xi|μzi,Σzi)

        P(X,Z | \Theta) = \prod_{i=1}^n p(x_i,z_i | \Theta) = \prod_{i=1}^n p(x_i | z_i,\Theta) p(z_i | \Theta) = \prod_{i=1}^n \alpha_{z_i}N(x_i | \mu_{z_i},\Sigma_{z_i})

      2. 在对应观测值已知的情况下,该观测值来源于哪个高斯的条件概率:

        P(Z|X,Θ(g))=∏i=1np(zi|xi,Θ(g))=∏i=1nαziN(xi|μzi,Σzi)∑kl=1αlN(xi|μl,Σl)P(Z|X,Θ(g))=∏i=1np(zi|xi,Θ(g))=∏i=1nαziN(xi|μzi,Σzi)∑l=1kαlN(xi|μl,Σl)

        P(Z | X, \Theta^{(g)}) = \prod_{i=1}^n p(z_i | x_i, \Theta^{(g)}) = \prod_{i=1}^n \frac{\alpha_{z_i} N(x_i | \mu_{z_i},\Sigma_{z_i})}{\sum_{l=1}^k \alpha_l N(x_i | \mu_l,\Sigma_l)}

    6. 【求解Θ(g+1)Θ(g+1)\Theta^{(g+1)}:M-step】

      将上述函数的定义代入Q(Θ,Θ(g))Q(Θ,Θ(g))Q(\Theta, \Theta^{(g)}),求导令其为零,得到Θ(g+1)Θ(g+1)\Theta^{(g+1)}的值:

      α(g+1)l=∑ni=1p(l|xi,Θ(g))nαl(g+1)=∑i=1np(l|xi,Θ(g))n

      \alpha_l^{(g+1)} = \frac{\sum_{i=1}^n p(l | x_i,\Theta^{(g)})}{n}

      μ(g+1)l=∑ni=1xip(l|xi,Θ(g))∑ni=1p(l|xi,Θ(g))μl(g+1)=∑i=1nxip(l|xi,Θ(g))∑i=1np(l|xi,Θ(g))

      \mu_l^{(g+1)} = \frac{\sum_{i=1}^n x_i p(l | x_i,\Theta^{(g)})}{\sum_{i=1}^n p(l | x_i,\Theta^{(g)})}

      Σ(g+1)l=∑ni=1[xi−μ(i+1)l][xi−μ(i+1)l]Tp(l|xi,Θ(g))∑ni=1p(l|xi,Θ(g))Σl(g+1)=∑i=1n[xi−μl(i+1)][xi−μl(i+1)]Tp(l|xi,Θ(g))∑i=1np(l|xi,Θ(g))

      \Sigma_l^{(g+1)} = \frac{\sum_{i=1}^n [x_i - \mu_l^{(i+1)}] [x_i - \mu_l^{(i+1)}]^T p(l | x_i,\Theta^{(g)})}{\sum_{i=1}^n p(l | x_i,\Theta^{(g)})}

      其中,p(l|xi,Θ(g))p(l|xi,Θ(g))p(l | x_i,\Theta^{(g)})称为responsibility probability,它是指当得到样本点xixix_i后,该样本点属于第lll个高斯分布的概率。


GMM参数估计示例

  • 【模拟样本】指定2个高斯分布的参数,并令其以0.4和0.6的权重随机生成5000个样本
# 生成n=5000的样本samp
set.seed(637351)
n <- 5000# 权重0.4,高斯参数N(3,1)
alpha1 <- 0.4
miu1   <- 3
sigma1 <- 1# 权重0.6,高斯参数N(-2,4)
alpha2 <- 0.6
miu2   <- -2
sigma2 <- 2n1 <- floor(n*alpha1)
n2 <- n-n1samp <-numeric(n)
samp[1:n1] <- rnorm(n1, miu1, sigma1)
samp[(n1+1):n] <- rnorm(n2, miu2, sigma2)# 高斯混合模型的密度函数图
hist(samp, freq = FALSE)
lines(density(samp), col = 'red')


EM算法的R实现

  • 【EM求解】现在假设手里只有样本samp,已知其来自2个高斯分布(可以分成2类),但各高斯的参数和权重未知,用EM算法求解:
# 设定高斯分布的个数,准备空矩阵
k <- 2
prob <- matrix(rep(0, k*n), nrow = n)
weight <- matrix(rep(0, k*n), nrow = n)# 初始权重alpha平均分配,高斯参数miu、sigma由均匀分布随机产生
alpha <- c(0.5, 0.5)
miu   <- runif(k)
sigma <- runif(k)# EM算法实现
for (step in 1:200) {# E-step:求第i个样本来自第j个高斯的概率for (j in 1:k) {prob[, j]   <- sapply(samp, dnorm, miu[j], sigma[j])weight[, j] <- alpha[j] * prob[, j]}row_sum <- rowSums(weight)prob    <- weight/row_sum# 记录上一次迭代的参数oldalpha <- alphaoldmiu   <- miuoldsigma <- sigma# M-step:最大化是通过求导令其为零的方法,这里直接给出参数优化结果for (j in 1:k) {sum1     <- sum(prob[, j])sum2     <- sum(samp*prob[, j])alpha[j] <- sum1/nmiu[j]   <- sum2/sum1sum3     <- sum(prob[, j]*(samp-miu[j])^2)sigma[j] <- sqrt(sum3/sum1)}# 设阈值:当上一步迭代得到的参数与下一步迭代得到的参数变化很小,即认为收敛threshold <- 1e-5if (sum(abs(alpha - oldalpha)) < threshold & sum(abs(miu - oldmiu))     < threshold & sum(abs(sigma - oldsigma)) < threshold) breakcat('step', step, 'alpha', alpha, 'miu', miu, 'sigma', sigma, '\n')
}
  • 【迭代结果】省略部分迭代过程,经125次迭代后,得到最优参数:权重为0.402" role="presentation" style="position: relative;">0.4020.4020.402的高斯N(2.98,0.962)N(2.98,0.962)N(2.98,0.96^2),权重为0.5980.5980.598的高斯N(−2.05,1.952)N(−2.05,1.952)N(-2.05,1.95^2)。
step 1 alpha 0.9276533 0.07234668 miu -0.02635882 -0.06741285 sigma 3.062992 0.6167386
step 2 alpha 0.9616189 0.03838105 miu -0.02227273 -0.2061188 sigma 3.010045 0.664219
step 3 alpha 0.9771787 0.02282128 miu -0.02167226 -0.3571784 sigma 2.986799 0.6915781
step 4 alpha 0.9853229 0.0146771 miu -0.02206765 -0.5168036 sigma 2.97487 0.7053047
step 5 alpha 0.9899198 0.01008019 miu -0.02270511 -0.6798185 sigma 2.968202 0.7097974
step 6 alpha 0.9926533 0.007346716 miu -0.02331694 -0.8416411 sigma 2.96425 0.7089913
step 7 alpha 0.9943434 0.005656624 miu -0.02380939 -0.9995759 sigma 2.961799 0.7057652
step 8 alpha 0.9954167 0.004583325 miu -0.0241567 -1.152648 sigma 2.96022 0.7015791
step 9 alpha 0.9961051 0.003894859 miu -0.02435778 -1.300695 sigma 2.959172 0.6968685
step 10 alpha 0.9965391 0.003460889 miu -0.02441699 -1.443691 sigma 2.958461 0.6916394
...
step 120 alpha 0.4016976 0.5983024 miu 2.982002 -2.051124 sigma 0.9602173 1.948754
step 121 alpha 0.4016951 0.5983049 miu 2.98201 -2.051108 sigma 0.9602116 1.948766
step 122 alpha 0.401693 0.598307 miu 2.982017 -2.051095 sigma 0.9602069 1.948776
step 123 alpha 0.4016913 0.5983087 miu 2.982022 -2.051084 sigma 0.9602031 1.948785
step 124 alpha 0.4016899 0.5983101 miu 2.982027 -2.051075 sigma 0.9602 1.948791
step 125 alpha 0.4016888 0.5983112 miu 2.98203 -2.051068 sigma 0.9601974 1.948797 
  • 【GMM聚类】现在已经得到2个高斯分布的权重和参数,因此可以对样本进行归类,亦即将得到的参数在E-step重新计算一遍:
prob1    <- dnorm(samp, miu[1], sigma[1])
prob2    <- dnorm(samp, miu[2], sigma[2])
sum_prob <- alpha[1]*prob1+alpha[2]*prob2# 第i个样本来自第1个高斯的概率
weight1 <- (alpha[1]*prob1)/sum_prob# 第i个样本来自第2个高斯的概率
weight2 <- (alpha[2]*prob2)/sum_prob# 比较样本点来自第1、2个高斯的概率,哪个概率大归入哪一类
z <- ifelse(weight1 > weight2, 1, 2)# z的计算也可以用如下for循环
for (i in 1:n) {if (weight1[i] > weight2[i]) {z[i] <- 1} else if (weight1[i] < weight2[i]) {z[i] <- 2} else {z[i] <- 0}
}
# 查看归入1、2类的样本个数
table(z)
  • 【聚类结果】属于第1类的样本点有2081个,占20815000=0.416220815000=0.4162\frac{2081}{5000}=0.4162;属于第2类的样本点有2919个,占29195000=0.583829195000=0.5838\frac{2919}{5000}=0.5838。
z1    2
2081 2919
  • 【代码理解】在【EM算法求解】、【GMM聚类】步骤中的部分代码计算,可以理解如下:

# 【EM求解】对应代码
prob[, j] <- sapply(samp, dnorm, miu[j], sigma[j])
# 【GMM聚类】对应代码
prob1 <- dnorm(samp, miu[1], sigma[1])
prob2 <- dnorm(samp, miu[2], sigma[2])

# 【EM求解】对应代码
weight[, j] <- alpha[j] * prob[, j]

# 【EM求解】对应代码
row_sum <- rowSums(weight)
# 【GMM聚类】对应代码
sum_prob <- alpha[1]*prob1+alpha[2]*prob2

# 【EM求解】对应代码
prob <- weight/row_sum
# 【GMM聚类】对应代码
weight1 <- (alpha[1]*prob1)/sum_prob
weight2 <- (alpha[2]*prob2)/sum_prob

R mclust包

mclust包提供了利用GMM对数据进行聚类分析的方法。其中函数Mclust()是进行EM聚类的核心函数,它的基本调用格式为:

Mclust(data, G = NULL, modelNames = NULL, prior = NULL, control = emControl(), initialization = NULL, warn = mclust.options("warn"), ...)

其中,data是待处理数据集;G为预设类别数,默认值为1至9,即由软件根据BIC的值在1-9中选择最优值。下面直接用mclust包的函数对生成samp的GMM进行估计:

library(mclust)
em <- Mclust(samp)
summary(em, parameters = T)
  • 【估计结果】得到的最优参数:权重为0.4050.4050.405的高斯N(2.97,0.94)N(2.97,0.94)N(2.97,0.94),权重为0.5950.5950.595的高斯N(−2.07,3.74)N(−2.07,3.74)N(-2.07,3.74)。
----------------------------------------------------
Gaussian finite mixture model fitted by EM algorithm
----------------------------------------------------Mclust V (univariate, unequal variance) model with 2 components:log.likelihood    n df       BIC       ICL-11817.8 5000  5 -23678.18 -24140.79Clustering table:1    2
2910 2090 Mixing probabilities:1         2
0.5950857 0.4049143 Means:1         2
-2.071201  2.971525 Variances:1         2
3.7377492 0.9364023 

参考资料:
统计学习方法
EM算法的R实现和高斯混合模型
R语言实战:机器学习与数据分析
Package ‘mclust’
聚类(1)——混合高斯模型 Gaussian Mixture Model

EM算法及对GMM的参数估计(EM算法的R实现 vs R mclust包)相关推荐

  1. 高斯混合模型(GMM)及其EM算法的理解

    一个例子 高斯混合模型(Gaussian Mixed Model)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况(或者是同 ...

  2. 高斯混合模型(GMM)和EM算法详解

    小白一枚,接触到GMM和EM,现将学习到的整理出来,如有错误,欢迎指正,文中涉及到公式的推导比较繁琐,故先在纸上推导出来再拍照发出来.希望大家多多交流,共同进步.接下来将按照思路一步一步进行介绍. 1 ...

  3. 学习笔记三:GMM模型以及EM算法理解及代码实现

    第三章 GMM模型以及EM算法 1.潜变量模型 使用潜变量解释观测变量的数学模型,称之为潜变量模型 潜变量模型将不完全数据(观测数据)的边缘分布转换成容易处理的完全数据(观测数据+潜变量)的联合分布. ...

  4. EM算法(Expectation Maximization)期望最大化算法

    原文:EM(期望最大化)算法初步认识 - 大数据和AI躺过的坑 - 博客园 https://www.cnblogs.com/zlslch/p/6965374.html 机器学习十大算法之一:EM算法( ...

  5. em模型补缺失值_ML4fun系列(六):EM算法

    EM算法 最早接触EM算法的地方想必就是在对高斯混合模型进行求解的时候.那就从高斯混合模型开始了解EM算法的工作机理. 高斯混合模型(GMM) 高斯混合模型是一种无监督学习方法.他是用多个高斯分布函数 ...

  6. EM算法(1)—— 彻底理解EM算法推导

    最近看了很多关于EM算法推导的文章,包括<统计学习方法(第二版)>中关于EM算法的内容,总感觉说得不够清楚.虽然公式都写得挺详细,但是没有说清楚为什么要这样算,怎么想到这样变形的,本文总结 ...

  7. 机器学习(八)——在线学习、K-Means算法、混合高斯模型和EM算法

    http://antkillerfarm.github.io/ 贝叶斯统计和规则化(续) p(θ|S)p(\theta\vert S)可由前面的公式得到. 假若我们要求期望值的话,那么套用求期望的公式 ...

  8. 算法小白鼠毒药c语言,EM笔试题收藏 .doc

    EM笔试题收藏 .doc EMC笔试题收藏 26道选择题,说是多选,可就没有发现一个多选.基 本上没有智力题,全是逻辑和c语言的题目. 1道编程题,判断一个单链表中是否存在环. 1个英文问答题,饥饿与 ...

  9. EM算法:从极大似然估计导出EM算法(还算通俗易懂)

    之前看了<统计学习方法>,吴恩达老师的cs229讲义,一起看感觉很昏(如果要看建议选择其中一个,<统计学习方法>里面基本很少会写到 y i y_i yi​而都是用 Y Y Y只 ...

  10. AI算法连载18:统计之EM 迭代算法

    导语:在人工智能AI如火如荼的大潮下,越来越多的工程师们意识到算法是AI的核心.而面对落地的应用,不懂算法的AI产品经理将是空谈,不仅无法与工程师沟通,更无法深刻理解应用的性能与方式.所以业界逐渐形成 ...

最新文章

  1. springboot配置Druid数据源
  2. 如何匹配包含特定字符串的属性?
  3. 【Foundation Frame】NSDictionary/NSMutableDictionary
  4. python入门导引
  5. VTK:绘图之ChartMatrix
  6. 机器学习中的数学知识(part4)--拟牛顿法
  7. 用计算机算出陈赫手机号码,陈赫手机号码遭《快本》曝光,并被网友打到关机!还有人搜到了他的支付宝账户......
  8. repo 获取各个库的tag代码或者分支代码
  9. 关于oc中自动引用计数 小结
  10. linux恢复rm删除文件ssd,科学网—linux恢复rm -rf删除的文件 - 罗晓光的博文
  11. 验证码原理详解与案例
  12. 高等数学(第七版)同济大学 习题7-8 个人解答
  13. ApiPost、Postman及并发测试工具Jmeter、PostJson接口测试工具,设置参数传递。
  14. ASUS华硕笔记本Windows 7驱动光盘大全~
  15. 我的世界服务器清垃圾文件,我的世界:五大处理“垃圾”方法,我选择懒人方法,你会如何选?...
  16. 写个简单的飞机游戏玩玩
  17. PhpStorm2019 代码自动换行
  18. 推荐四个Flutter重磅开源APP项目!
  19. JSON-LIB 的使用指南
  20. win7x86安装驱动提示 0x241 577无法验证此设备所需的驱动程序的数字签名

热门文章

  1. win10重置网络命令_Win10怎么重置网络 Win10重置网络命令使用方法
  2. 零基础学习软件测试必看的python之基础语法
  3. 【历史上的今天】11 月 8 日:计算机先驱诞生日;卷积神经网络 LeNet-5 问世;特斯拉发明遥控器
  4. 如何在华为路由器中虚拟服务器,华为路由器ip地址
  5. 利用Photoshop制作毛玻璃效果
  6. 入行手游必知的8项基础知识
  7. OpenWrt/Wifidog本地化解决方案
  8. 2019春招奇虎360玫瑰花摆放
  9. 基于WizFi220的Cosmo WiFi扩展板
  10. 家庭局域网_分析 | 如何查询局域网内在用的IP地址?