如何根据组件日志条件计算日志(术语总和)

时间:2014-02-25 09:30:12

标签: math sum bayesian natural-logarithm

(1)问题的简单版本:

如何计算log(P1 + P2 + ... + Pn),给定log(P1),log(P2),...,log(Pn),不取任何项的exp来获得原始Pi 。我不想得到原始的Pi,因为它们非常小并且可能导致数字计算机下溢。

(2)问题的长版本:

我使用贝叶斯定理来计算条件概率P(Y | E)。

P(Y|E) = P(E|Y)*P(Y) / P(E)

我有一千个概率相乘。

P(E|Y) = P(E1|Y) * P(E2|Y) * ... * P(E1000|Y) 

为了避免计算机数字下溢,我使用log(p)并计算1000 log(p)的总和而不是计算1000 p的乘积。

log(P(E|Y)) = log(P(E1|Y)) + log(P(E2|Y)) + ... + log(P(E1000|Y))

但是,我还需要计算P(E),即

P(E) = sum of P(E|Y)*P(Y)

log(P(E))不等于log (P(E|Y)*P(Y))的总和。如果没有求解log(P(E))(它们是非常小的数字)并添加它们,我应该如何获得P(E|Y)*P(Y)

1 个答案:

答案 0 :(得分:2)

您可以使用

log(P1+P2+...+Pn) = log(P1[1 + P2/P1 + ... + Pn/P1]) 
                  = log(P1) + log(1 + P2/P1 + ... + Pn/P1])

适用于任何Pi。因此,分解出maxP = max_i Pi会导致

log(P1+P2+...+Pn) = log(maxP) + log(1+P2/maxP + ... + Pn/maxP)

其中所有比率均小于1.