Naïve/Normal Bayes Classifier
The preceding routines are from cxcore. We'll now
start discussing the machine learning (ML) library section of OpenCV. We'll begin with
OpenCV's simplest supervised classifier, CvNormalBayesClassifier
, which is called both a normal
Bayes classifier and a naïve Bayes classifier. It's
"naïve" because it assumes that all the features are independent from one another even though this is seldom the case
(e.g., finding one eye usually implies that another eye is lurking nearby). Zhang discusses
possible reasons for the sometimes surprisingly good performance of this classifier
[Zhang04]. Naïve Bayes is not used for regression, but it's an effective classifier that can
handle multiple classes, not just two. This classifier is the simplest possible case of what
is now a large and growing field known as Bayesian networks, or "probabilistic graphical models". Bayesian networks are causal models; in Figure 13-6, for example, the face features in an
image are caused by the existence of a face. In use, the face variable is considered a
hidden variable and the face features—via image processing operations
on the input image—constitute the observed evidence for the existence of a face. We call
this a generative model because the face causally generates the face
features. Conversely, we might start by assuming the face node is active and then randomly
sample what features are probabilistically generated given that face is active.[244] This top-down generation of data ...
Get Learning OpenCV now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.