我正在编写一种算法,在给定模型的情况下,我计算一组数据集的似然度,然后需要对每种似然度进行标准化(以概率表示)。因此[0.00043,0.00004,0.00321]之类的内容可能会转换为[0.2,0.03,0.77]之类的内容。
我的问题是,我正在使用的对数可能性很小(例如,在对数空间中,值类似于-269647.432,-231444.981等)。在我的C++代码中,当我尝试添加两个(通过采用它们的指数)时,得到的答案是“Inf”。我试图将它们添加到日志空间(Summation/Subtraction of log)中,但再次遇到相同的问题。
谁能对此发表自己的见解?
谢谢
最佳答案
假设可能性计算正确,则可以将每个可能性除以最大可能性。可以以对数形式通过从每个对数可能性中减去最大对数可能性来完成。
然后,您可以转换出对数空间。最大的将是1.0,因为其归一化的对数为0。较小的每个将在0到1.0之间,并表示为最大的一部分。