【发布时间】:2012-05-07 19:12:26
【问题描述】:
如果我们取概率的对数,则返回的值为负。值用于信息检索库的匹配器中,它拒绝负值,因此我需要将负值钳制为正值,这样匹配器就不会拒绝文件。
一种方法是在概率中添加一个随机数,比如 K
i.e return max(log( prob. + K) where K is a large constant or return max(log(K.Prob),0) where K is a large constant
有没有更好的方法将负对数值限制为正数?以下哪种方法更适合遵循?
如果我们选择上述任何一种方法,我对如何选择合适的 K 感到非常头晕。如果有人能建议如何选择合适的大 K,我会很高兴?
PS 使用对数值很重要,因为我们正在尝试实现需要乘以概率的模型,但由于架构不可行,无法支持我们对概率的对数求和,这是概率的乘积,因此使用对数值在这里很重要(取反对数不是可行的方法)
【问题讨论】:
-
你能简单地取对数的负数吗?由于您正在处理概率(即值 总是为负数,因此否定它会总是使其为正数。我能想到的唯一缺点是,结果,large 值表示低概率,small 值表示高概率,所以你的 log-probabilities 的含义是相反的。但这是个问题吗?
-
由于这些权重用于对排名列表中的文档进行排名,因此概率低的文档将排名更高,并且可能的好文档将被匹配器拒绝,否则反转排名列表可能是一种可行的方法...因此否定价值不会是理想的解决方案
-
我认为@jogojapan 在这里有正确的想法,这应该是开始的地方...
K的值不能保证给你一个正数,因为log(x) -> -inf作为x -> 0。当然,除非你能确定你的概率范围...... -
@kaveman 否定值将工作正常,只要将值变为正值是关注的问题,但这会由于分数较低而拒绝好的文件。因此,在我的情况下,由于较低的概率具有较大的价值和较高的概率具有较低的价值而丢失好的文档是行不通的。
标签: algorithm math information-retrieval logarithm