2

如果我们取概率的对数,则返回的值为负。值用于信息检索库的匹配器中,该匹配器拒绝负值,因此我需要将负值钳制为正值,这样匹配器就不会拒绝文档。

一种方法是在概率中添加一个随机数,比如 K

即 return max(log( prob. + K) 其中 K 是一个大常数或 return max(log(K.Prob),0) 其中 K 是一个大常数

有没有更好的方法将负对数值钳位为正?其中哪一个是更好的方法?

如果我们选择上述任何一种方法,我对如何选择合适的 K 感到非常头晕。如果有人能建议如何选择合适的大 K,我会很高兴?

PS 使用对数值很重要,因为我们正在尝试实现需要乘以概率的模型,但由于架构不可行,无法支持我们将概率的对数相加,这是概率的乘积,因此使用对数值是重要的(采取反对数不是一种可行的方法)在这里

4

1 回答 1

4

您始终可以使用 log(1 + p)。这将使您的范围从 (-inf, 0] -> [0, log(2)] 偏移。我认为这将解决您的问题。

一般来说,最常用的方法是按照其他人的建议对 log 取负值。您也可以使用 1/(1-log(p)) ,但这对您的情况没有帮助。

所以 log(1 + p) 似乎是最好的解决方案。

于 2012-04-27T06:29:18.757 回答