Naive Bayes como red bayesiana

Una red bayesiana es algo de lo que ya hablé (y que me está volviendo a interesar mucho últimamente). En esencia, es un modelo probabilístico construido sobre un grafo dirigido acíclico.

Que, a su vez, es algo parecido a

Directed_acyclic_graph

que es un grafo (obviamente), dirigido (tiene flechas) y acíclico porque siguiéndolas no se llega nunca al punto de partida. Se puede construir modelos probabilísticos sobre ellos. Basta con definir para cada nodo $latex x$ la probabilidad condicional $latex P(x|A(x))$, donde $latex A(x)$ son sus padres directos. Con estas probabilidades condicionales (y un poco de esfuerzo) se puede construir la función de probabilidad completa, $latex P(x_1, \dots, x_n)$.

Los que no sepáis que es eso del naive Bayes estáis de enhorabuena porque os lo voy a contar: es una red bayesiana que tiene esta pinta:

naive_bayes

Pensad en $latex y$ como en la variable que indica si un mensaje es spam o no y en $latex x_i$ como en un indicador de si el mensaje contiene alguna palabra clave (p.e., viagra). El hecho de que un mensaje sea o no spam modifica la probabilidad de ocurrencia de dichas palabras. $latex P(x_i | y)$, valor que puede estimarse a partir de una muestra de mensajes.

El hecho de que no haya flechas entre los $latex x_i$ significa que son independientes entre sí (condicionalmente con respecto a $latex y$). Esto es normalmente (siempre) mentira; pero la aproximación es a menudo tolerable. La probabilidad total de la red es

$$ P(y, x_1,\dots, x_n) = P(x_1,\dots, x_n| y) P(y) = \prod P(x_i | y) P(y).$$

Y lo más importante de todo, conocidos los indicios $latex x_i$, puede estimarse la probabilidad de $latex y$ así:

$$ P(y | x_1,\dots, x_n ) = P(y, x_1,\dots, x_n) / P(y) = \prod P(x_i | y)$$,

que es la fórmula que aparece por doquier y a la que se puede llegar también desde otros puntos de partida alternativos.