2013-05-10 28 views
0

通常,重新估计迭代过程在lambda.bar - lambda小于某个epsilon值时停止。期望最大化重估

如何确定这个epsilon值?我经常看到的是在论文中被写为一般的epsilon符号,并且从来没有使用过的实际值,我认为这会根据数据而改变。例如,如果我第一次迭代的λ值是5 * 10^-22,第二次迭代是1.3 * 10^-15,第三次是8.45 * 10^-15,第四次是1.65 * 10^-15, -14等,我将如何确定算法何时需要更多迭代?

此外,如果我将相同的算法应用于不同的数据集呢?我需要改变我的epsilon定义吗?

对不起,长期以来的问题。对此感到困惑...... :)

回答

0

“我将如何确定何时该算法不需要更多迭代?”

当您在合理的时间内得到“足够好”的结果时。 ;-)

“此外,如果我将相同的算法应用于不同的数据集,我需要 更改我的epsilon定义吗?”

是的,最有可能的。

+0

如果你的第二个答案是唯一的选择,那么很难实现EM计算和自动对吗?所以我认为有一个更好的解决方案比需要为每个输入定制它。如果某人正在处理1000组不同的信息(比如说蛋白质序列),并且他们希望找到一般蛋白质群的MLEs。他们将采用log(lambda)1 + ... + log(lamba)N表示蛋白质数量(N),以确定每次迭代时代表整个总体的最终lambda。那么如何自动确定每种蛋白质的lambda? – LanneR 2013-05-10 18:06:35

0

如果你能负担得起,你可以让它迭代,直到更新的值< =旧值(由于浮点错误,它可能是<)。我会倾向于这样做,直到我跑出耐心或CPU预算。