2013-05-10 57 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預算。