Naive Bayes

Como vimos anteriormente, las redes bayesianas son modelos probabilísticos que nos permiten razonar bajo incertidumbre. En este post, veremos una aplicación del razonamiento bayesiano en un simple clasificador de correos electrónicos.

Recordando un poco, las redes bayesianas son modelos gráficos probabilisticos que nos permiten calcular la probabilidad de un evento, basándose en alguna evidencia dentro del grafo. Las redes bayesianas “naive”, también conocidas como “stupid bayes” (bayes ingenuo o estúpido), utilizan el mismo principio de las redes bayesianas pero hacen fuertes suposiciones de independencia.

Para entender estos conceptos, consideremos una red bayesiana como la siguiente:

Screen Shot 2015-02-20 at 5.39.16 PM

En ésta, se modela el hecho de que un correo electrónico puede ser escrito por un remitente, cuyos mails sólo contienen las palabras “Hola”, “Chau” y “Bueno”. Obviamente en la realidad un mail contiene muchas más palabras, pero  se utiliza esta representación por fines prácticos.

Mas concretamente, esta red representa una distribución de probabilidad conjunta de nuestras variables “remitente”, “hola”, “chau” y “bueno”. Es decir, que tenemos una probabilidad para cada posible estado de remitente (para cada posible remitente), y probabilidades de la ocurrencia de cada palabra dado el remitente.

Por ejemplo, podemos asumir que sólo existen dos remitentes:

Screen Shot 2015-02-20 at 5.47.45 PM

La imágen representa que hay la misma probabilidad de que un correo sea de Oscar o de Juan; pero que el uso de cada palabra cambia según su autor.

Por ejemplo, la probabilidad de que la palabra “Hola” aparezca en un mensaje dado que lo envió Juan es de 0.3, mientras que es de 0.2 si lo envía Oscar.

De la misma forma, cada variable dependiente (palabra) obtiene distintos valores para cada posible estado del remitente.

Se dice que éste es un modelo Naive Bayes, ya que la forma del grafo nos indica que existe independencia entre cada posible palabra, cuando conocemos al remitente. Es decir, al saber que un correo es de Oscar y que contiene la palabra “Hola”, nuestro valor de 0.6 para la probabilidad de “Bueno” no cambia. Sin embargo, si no supieramos que el correo es de Oscar, el saber que existe la palabra “Hola”, si modificaría el valor de “Bueno” en nuestra tabla de probabilidad condicional. Para entender mejor esta idea, puedes visitar el siguiente link o algúno de los provistos en las referencias posteriormente.

Un pequeño análisis en esta suposición de independencia que se modela a partir de nuestra red, nos llega a la obvia conclusión de que no siempre aplica. Es decir, a pesar de que sepamos que el correo es de Oscar, la probabilidad de la palabra “Hola” debería ser dependiente de “Bueno” considerando por ejemplo la ubicación de cada una dentro de una oración.

Es por este motivo que se llama a éste tipo de redes “ingenuas”; no permiten modelar la realidad con exactitud, pero aún así se pueden obtener muy buenos resultados. A partir de su concepto existen los denominados naive classifiers (clasificadores ingenuos), que -oh sorpresa- fueron utilizados en los primeros filtros de spam de correo electrónico.

La gran ventaja de las mismas es que son mucho mas fáciles de modelar que una red completa, y cálculo de probabilidad para cualquier nodo se vuelve mucho más rápido y sencillo.

Si quieres saber más de las redes Naive Bayes, y la teoría detrás de las mismas, puedes visitar los siguientes links:

http://es.wikipedia.org/wiki/Clasificador_bayesiano_ingenuo

http://www.cs.cmu.edu/~tom/mlbook/NBayesLogReg.pdf

Y si quieres más diversion, aquí está una guía para implementar un clasificador naive:

https://www.bionicspirit.com/blog/2012/02/09/howto-build-naive-bayes-classifier.html

Fuentes:

Koller, D. & Friedman, N. (2009). Probabilistic graphical models : principles and techniques. Cambridge, MA: MIT Press.