2

我必须实现一个朴素贝叶斯分类器来将文档分类为一个类。因此,在获得属于类的项的条件概率时,连同拉普拉斯平滑,我们有:

prob(t | c) = Num(c 类文档中的单词出现次数) + 1 / Num(c 类文档) + |V|

它是一个伯努利模型,有 1 或 0,词汇量非常大,可能有 20000 个单词等等。因此,由于词汇量大,拉普拉斯平滑不会给出非常小的值,还是我做错了什么。

根据此链接的伪代码:http: //nlp.stanford.edu/IR-book/html/htmledition/the-bernoulli-model-1.html,对于伯努利模型,我们只需添加 2 而不是 |V| . 为什么这样?

4

1 回答 1

1

考虑多项朴素贝叶斯的情况。您在上面定义的平滑使得您永远无法获得零概率。

对于多变量/伯努利情况,还有一个额外的约束:也不允许恰好为 1 的概率。这是因为当t文档中不存在已知词汇表中的一些时d,概率1 - prob(t | c)乘以文档概率。如果prob(t | c)是 1,那么这将再次产生 0 的后验概率。

(同样,当使用log(1 - prob(t | c))对数时,概率为 1 时未定义)

所以在伯努利方程(Nct + 1) / (Nc + 2)中,两种情况都受到保护。如果Nct == Nc,那么概率将是 1/2 而不是 1。这也会产生 1/2 的可能性,无论是否t存在 ( P(t | c) == 1/2) 或不存在 ( 1 - P(t | c) == 1/2)

于 2016-12-15T13:04:02.050 回答