What is multinomial naive Bayes?



In this lesson we use scikit-learn's MultinomialNB class to implement a naive Bayes classifier. What is multinomial naive Bayes? Why isn’t the class simply called NaiveBayes?


The word multinomial in MultinomialNB refers to the probability distribution underlying our application. To be more explicit, remember that we must have an idea of how the probabilities for our application are computed (whether everything is equally likely, a uniform distribution, or our data is normally distributed, or something else).

Naive Bayes does not tell us how to choose this underlying distribution; it provides us with an equation to use once we have worked out how to compute the probabilities. So naive Bayes is a very general term and we could use different classes based on the different distributions we decide are appropriate for our application. For example, sklearn.naive_bayes provides the following variants of naive Bayes, where the difference is in the underlying probability distribution

  • BernoulliNB
  • GaussianNB
  • MultinomialNB
  • ComplementNB

This is why we don’t simply call the class NaiveBayes – the underlying distribution is important.