朴素贝叶斯的实现


10

我正在使用Laplacian平滑实现朴素贝叶斯算法进行文本分类。我遇到的问题是,由于我要乘许多小分数,因此概率接近零。因此,该概率最终得出零。这是因为文档和培训集中有几个单词。

因此,我无法对文本进行分类。有办法解决这个问题吗?我在执行过程中做错了吗?


...您可以避免浮点运算。

msdn.microsoft.com/zh-cn/magazine/jj891056.aspx 您可以在这里找到简单的答案。
Roshan Mehta

Answers:


14

避免这种下溢的通常技巧是使用对数计算,使用身份 也就是说,您不使用概率,而是使用对数。您无需将它们相乘,而是将它们相加。

logi=1npi=i=1nlogpi.

不太常见的另一种方法是手动标准化产品。而不是仅保留一个浮点数,而是(例如)中保留一个浮点数(例如)和一个负指数使得。每次操作后,您将结果数字标准化。pp0[1,2)xp=p02x


2
这也是有用的注意,在此背景下logsumexp招:en.wikipedia.org/wiki/LogSumExp
按位
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.