【发布时间】:2012-04-09 06:33:18
【问题描述】:
我从数学的角度与某人谈论朴素贝叶斯分类器。我们讨论了如果将大量概率相乘,最终原始类型(如浮点数或双精度数)将无法存储结果值,而只会变成零。
P(x1)* P(x2) * ... = 对于计算机来说太小了 = 0
与我交谈的人说,“解决方法”是记录概率,然后像这样将它们加在一起。
log( P(x1) ) + log( P(x2) ) + ...
我理解采用概率对数的好处,它增加了数字的大小,因此它不会“脱落”,但是在那之后你怎么能把它们加在一起呢?是不是这样,当您运行朴素贝叶斯时,只要您对所有分类“桶”始终如一地执行它,您仍然可以在一天结束时找到最大的一个?
感谢任何解释。谢谢,
mj
【问题讨论】:
-
作为一般规则,每当您最终将数字相乘时,最好将它们的对数相加。如果数字读取 1 + x 且 x 接近于零(这似乎不是你的情况,除非你的概率分布非常接近均匀),那么你可能需要一个专门的
log(1 + x)例程来处理这种情况。
标签: math data-mining