2011-02-11 13 views
3

从概念上讲,我需要将每个事件的概率相乘。由于可能涉及很多事件,因此我在计算机上添加了对数以避免下溢。通过加对数做乘法---是否为零元素?

但突然间,我无法说服自己,我应该初始化返回值为零,然后才开始添加。我知道零是加法的标识元素,我记得这是我如何做的,但是,看着graph of the logarithm,我可以清楚地看到零的反对数是负无穷。

因此,将返回值初始化为零应等于将所有概率乘以负无穷,这绝对不正确。我究竟做错了什么?

+0

你应该问问这个http://math.stackexchange.com/ – 2011-02-11 12:09:07

+0

不是真的 - 这是简单的高中数学。 – duffymo 2011-02-11 12:11:20

+0

图表说的是与你可以“清楚地看到”的东西不同的东西:) – AakashM 2011-02-11 12:14:24

回答

6

0的反对数是1,而不是负无穷大。这意味着从对数开始加零的开始与为概率本身乘以一开始相同。

7

如果你是乘值加在一起,他们看起来是这样的:

product = 1*p1*....*pn 

如果你把两边的自然对数,它看起来像这样:

ln(product) = ln(1) + ln(p1) + .... + ln(pn) 

ln(1) = 0,所以这是怎么你初始化对数的总和。将其设置为零。

记住你在这里总结的内容:每个概率的对数值加入总概率的对数中。一旦完成总和,您可以得到如下产品:

product = exp(ln(product)) = exp(ln(sum of ln(pn)) 
0

如果您正在计算事件的交集。把它们相乘。不需要进入对数空间。如果它变得非常小,那么事件交集的概率为零。