为什么EM算法必须是迭代的?


9

假设您有一个具有单位的总体,每个单位都有一个随机变量。对于任何单位,您都会观察到值。我们想要一个\ lambda的估计。ñX一世泊松λñ=ñ-ñ0X一世>0λ

有矩的方法和有条件的最大似然方法来获得答案,但是我想尝试EM算法。我得到的EM算法是

λ-1个λ=λñ+ñ经验值λ-1个-1个+日志λ一世=1个ñX一世+ķ
其中-1个下标表示算法先前迭代的值,ķ相对于参数。(我实际上认为括号中的小数中的ñ应该为ñ+1个,但这似乎并不准确;这是另一个问题)。

为了具体说明,假设ñ=10X一世=20。当然,ññ0是不可观察的,并且λ将被估计。

当我迭代以下函数时,插入上一个迭代的最大值,就可以得出正确的答案(已通过CML,MOM和简单的仿真验证):

EmFunc <- function(lambda, lambda0){
  -lambda * (10 + 10 / (exp(lambda0) - 1)) + 20 * log(lambda)
}

lambda0 <- 2
lambda  <- 1

while(abs(lambda - lambda0) > 0.0001){
  lambda0 <- lambda
  iter    <- optimize(EmFunc, lambda0 = lambda0, c(0,4), maximum = TRUE)
  lambda  <- iter$maximum
}

> iter
$maximum
[1] 1.593573

$objective
[1] -10.68045

但这是一个简单的问题。让我们最大化而不迭代:

MaxFunc <- function(lambda){
  -lambda * (10 + 10 / (exp(lambda) - 1)) + 20 * log(lambda)
}

optimize(MaxFunc, c(0,4), maximum = TRUE)
$maximum
[1] 2.393027

$objective
[1] -8.884968

该函数的值高于非迭代过程,并且结果与其他方法不一致。为什么第二步给出一个不同的答案(我认为是错误的答案)?

Answers:


6

当您找到EM算法的目标函数时,我假设您将的单位数(我称为)作为潜在参数。在这种情况下,我(再次)假设表示期望值相对于给定的简化形式。这是不一样的充满可能性,因为那是给出treadted。X一世=0ÿÿ λ-1个λ-1个

因此,您不能将用作全似然,因为它不包含有关更改如何改变分布的信息(并且当您使全似然最大化时,也要选择的最可能值)。这就是为什么零截断的Poisson的最大最大似然不同于函数的原因,并且为什么当最大化时会得到不同的(并且不正确的)答案。λÿÿFλ=λλ

从数值上讲,最大化必然会导致目标函数至少与您的EM结果一样大,并且可能更大,因为无法保证EM算法将收敛到的最大值-它仅应收敛于最大似然函数!FλF

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.