3

我正在查看大数据课程的幻灯片。他们说高维朴素贝叶斯容易出现数值下溢和未观察到的事件——所以你应该在计算朴素贝叶斯时记录概率。这些幻灯片在说什么?我认为数字下溢由于变量类型而失去精度(例如,大转换为 int)。但这似乎不是这些幻灯片中该术语的含义。数字下溢和未观察到的事件是什么意思?在朴素贝叶斯中获取概率的对数如何避免这些事情?

4

3 回答 3

3

您的计算机只有有限的精度。例如,在一台可以无限精确计算事物的理想计算机上,这个 Python 小程序永远不会停止,它只会让打印的数字越来越接近 0。

x = 1.0
while x != 0:
  x = x * .5
  print x

但是由于计算机以固定数量的位存储数字,因此它可以表示的数字只有这么多,最终它将乘积舍入为 0 并退出循环。

当您有许多特征时,朴素贝叶斯的计算会像这样发生。您将许多小于 1 的概率相乘,由于机器精度问题,最终您可以达到 0。

于 2013-10-15T01:40:32.440 回答
1

避免(或至少减轻)算术下溢问题的一种常见方法是使用对数概率。谷歌诸如“对数概率下溢”之类的东西,您应该会发现很多不错的结果。

这个链接提供了一个很好的介绍。以下是其他:链接 链接。那里有一百万个 - 享受吧!

于 2013-10-15T03:22:41.470 回答
1

顺便说一句,获取日志有帮助的一个原因是它将产品转换为总和。

于 2013-10-17T11:34:49.527 回答