用于朴素贝叶斯分类器的伯努利模型的拉普拉斯平滑

Laplace Smoothing for Bernoulli model for naive bayes classifier

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

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

它是一个伯努利模型,它要么有 1 要么有 0,而且词汇量非常大,大概有 20000 个单词等等。那么,拉普拉斯平滑不会因为词汇量很大而给出非常小的值,还是我做错了什么。

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

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

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

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

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