Math 朴素贝叶斯分类器数学-计算精度不足

Math 朴素贝叶斯分类器数学-计算精度不足,math,data-mining,Math,Data Mining,我和某人从数学的角度讨论了朴素贝叶斯分类器。我们讨论的是,如果将很多概率相乘,最终像float或double这样的基本类型将无法存储结果值,它将变为零 p(x1)*p(x2)*……=对计算机来说太小的数字=0 与我交谈的人说,一个“解决办法”是记录概率,然后像这样将它们相加 对数(p(x1))+对数(p(x2))+ 我理解概率对数的优点,它增加了数字的大小,这样它就不会“掉下来”,但你怎么能把它们加在一起呢?是不是这样,当你运行朴素贝叶斯时,只要你对所有分类“桶”都始终如一地这样做,你仍然可以在

我和某人从数学的角度讨论了朴素贝叶斯分类器。我们讨论的是,如果将很多概率相乘,最终像float或double这样的基本类型将无法存储结果值,它将变为零

p(x1)*p(x2)*……=对计算机来说太小的数字=0

与我交谈的人说,一个“解决办法”是记录概率,然后像这样将它们相加

对数(p(x1))+对数(p(x2))+

我理解概率对数的优点,它增加了数字的大小,这样它就不会“掉下来”,但你怎么能把它们加在一起呢?是不是这样,当你运行朴素贝叶斯时,只要你对所有分类“桶”都始终如一地这样做,你仍然可以在一天结束时找到最大的一个

如有任何解释,我们将不胜感激。谢谢


mj

因为
log(a*b)=log(a)+log(b)
。这是对数的一个属性。

因为
log(a*b)=log(a)+log(b)
。这是对数的性质。

哦,天哪。这就是我没有记住任何对数规则的原因。谢谢,达菲莫,天哪。这就是我没有记住任何对数规则的原因。谢谢duffymo。一般来说,只要你按顺序将数字相乘,你就能更好地对它们的日志进行求和。如果数字读数为1+x,x接近于零(这似乎不是你的情况,除非你的概率分布非常接近于均匀分布),那么你可能需要一个专门的
log(1+x)
例程来处理这种情况。一般来说,当你按顺序乘以数字时,你最好把他们的日志加起来。如果数字读数为1+x,x接近于零(这似乎不是你的情况,除非你的概率分布非常接近均匀),那么你可能需要一个专门的
log(1+x)
例程来处理这种情况。