Buscar este blog

domingo, 30 de marzo de 2014

Teorema de Bayes y Clasificador Bayesiano

En esta entrega platicaré a mi parecer uno de los mejores clasificadores probabilistas, el clasificador Bayesiano. Fundamentado en el teorema de Bayes. Este posee las siguientes características:

  • Es fuerte ante la presencia de ruido, debido a que los mismos se promedian estimando las probabilidades condicionales.
  • Puede admitir valores faltantes.
  • Es robusto ante atributos que sean irrelevantes.
  • Aquellos atributos que estén correlacionados pueden afectar el desempeño de este clasificador.

Básicamente este clasificador asume que cada atributo describe en cierta medida a una clase, y que la ausencia o presencia de los demás atributos no afectan esta medida, es decir, para clasificar un auto podríamos decir que tiene llantas, volante, asientos ,un motor, y puertas. El clasificador Bayesiano interpretara que cada uno de estos atributos contribuye en cierta medida a que sea un auto, sin importar si falta uno (el que tenga llantas indica que se puede tratar de un auto sin importar diga que no tiene puertas), de hecho Bayes trabaja mejor cuando sus atributos no están correlacionados.

Este clasificador está basado en el teorema de Bayes y expresa la probabilidad condicional de un evento aleatorio A dado B en términos de la distribución de probabilidad condicional del evento B dado A y la distribución de probabilidad marginal de sólo A [1]. Veamos un ejemplo basado de [2]


Consideremos un partido de fútbol entre dos equipos rivales (Real Madrid y Barcelona).Supongamos que la probabilidad de que gane el Real Madrid es de 65% y el Barcelona del 35% (no me odien es solo un ejemplo). De entre todos los juegos ganados por el Real Madrid solo 30% de ellos ocurrieron en el territorio del Barcelona. Por otro lado 75% de las victorias obtenidas del Barcelona han ocurrido en su propio campo.

Ahora supongamos que habrá un encuentro Real Madrid vs Barcelona, y que se jugará en el territorio del Barcelona, ¿Quien tiene mayor probabilidad de salir victorioso?

Bien, veamos la fórmula del teorema de Bayes

P(Y|X) = (P(X|Y) P(Y)) / P(X)

Ahora consideremos a X como una variable que representa el lugar de la disputa y a Y como la variable que representa la probabilidad de que un equipo gane el partido.

Recordando tenemos:


  • Probabilidad de que Real Madrid gane el encuentro es P(Y= Real Madrid) = 0.65 (1).
  • Probabilidad de que el Barcelona gane el partido es P(Y = Barcelona) = 0.35 (2).
  • Probabilidad de que el Barcelona gane en su propio campo sin importar con quien compita P(X=campo del Barcelona | Y = Barcelona) = 0.75 (3).
  • Probabilidad de que el partido sea jugado en el campo del Barcelona y el partido lo gane el Real Madrid P(X = campo del Barcelona | Y = Real Madrid) = 0.3 (4).


Ahora debemos computar la probabilidad P(X= campo del Barcelona|Y=gane el Real Madrid) y compararla contra P(X= campo del Barcelona|Y=gane el Barcelona)

entonces tenemos que:

P(Y= gane el Real Madrid|X= campo de Barcelona) = ((3) x (2))/ (3) x (2) + (4) x (1))

= P(Y= gane el Real Madrid|X= campo de Barcelona) = (.75 x .35) / (.75 x .35 + .3 x .65)
P(Y= gane el Real Madrid|X= campo de Barcelona) = 0.5738

Bueno, aquí para computar P(Y= gane el Barcelona|X= campo de Barcelona) de manera mas fácil seria:

P(Y= gane el Barcelona|X= campo de Barcelona) = 1 - P(Y= gane el Real Madrid|X= campo de Barcelona)
=0.4262

entonces tenemos que es mas probable que gane el Real Madrid si juega en el terreno del Barcelona.


Pero bueno esto es el teorema de Bayes, ahora nos compete conocer el clasificador Bayesiano, que básicamente tiene sus bases en dicha fórmula, y nos permite predecir clases (no solo estimar probabilidades), bien estudiémoslo con un ejemplo tomado de [2].

Supongamos que tenemos la siguiente tabla:


Id Casa Estado Civil Salario trimestral(miles) Evasor
1 Si Soltero 125 No
2 No Casado 100 No
3 No Soltero 70 No
4 Si Casado 120 No
5 No Divorciado 95 Si
6 No Casado 60 No
7 Si Divorciado 220 No
8 No Soltero 85 Si
9 No Casado 75 No
10 No Soltero 90 Si



Bien ahora supongamos que nos piden clasificar la siguiente información:



Id Casa Estado Civil Salario trimestral(miles) Evasor
11 No Casado 120
¿?


Primero debemos establecer el modelo de probabilidades de este clasificador, posteriormente determinar la probabilidad de que sea un evasor contra que no lo sea, es decir , P(X=Si) y P(X=No), en donde X representa si  es evasor o no.

Para obtener el modelo, se debe buscar las ocurrencias de cada valor de atributo con respecto a su clase, por ejemplo , para P(Casa = SI | Es evasor = No) tenemos que es 3/7, esto debido a que tenemos 7 filas en donde evasor = No y tenemos 3 filas en donde Casa = Si y Evasor = No.

Entonces obtenemos la siguiente tabla:

Evento Ocurrencia
P(Casa = Si | Es evasor = No) 3/7
P(Casa = No | Es evasor = No ) 4/7
P(Casa=Si | Es evasor = Si) 0
P(Casa = No | Es evasor = Si) 1
P(Estado civil = Soltero| Es evasor = No) 2/7
P(Estado civil = Divorciado| Es evasor = No) 1/7
P(Estado civil = Casado| Es evasor = No) 4/7
P(Estado civil = Soltero| Es evasor = Si) 2/3
P(Estado civil = Divorciado| Es evasor = Si) 1/3
P(Estado civil = Casado| Es evasor = Si) 0

Ahora para el atributo salario trimestral tenemos que es continuo, entonces tenemos dos opciones, una es discretizarlo (CAIM) y la otra es asumir una distribución de probabilidad (usualmente una distribución Gaussiana).

En esta entrada utilizaré la segunda opción, para ello se debe de obtener la media y la desviación estándar, para aquellos salarios anuales que son evasores y las mismas variables para los que no lo son.

Tenemos entonces:

Media No Evasores = 110.  ((125 + 100 + 70 + 120 + 60 + 220 + 75) / 7)
Desviación Estándar No Evasores = 54.54.
Media Evasores = 90.
Desviación Estándar Evasores = 5


Ahora aplicaremos la fórmula de la distribución[3]:


Esta fórmula la aplicaremos para el valor de nuestro caso, que es de 120 (es el valor del salario trimestral que tenemos que clasificar)

P(Salario Trimestral = 120 | Evasor = No) =

  

que da como resultado : 0.0072 y para

P(Salario Trimestral = 120 | Evasor = Si) =


tenemos que es 0.0000000012

Pues bien ya con esto ahora nos resta utilizar la fórmula del clasificador Bayesiano, que es la siguiente[4]:


Aquí P(Y) es la probabilidad de que ocurra la clase, para nuestro ejemplo tenemos 10 filas en donde 7 corresponden a la clase evasor = No y tres a Evasor = Si, entonces, para evasor = NO, P(Y) = 7/10 y para Evasor = Si, P(Y) = 3/10. d = a todas las probabilidades implicadas para los atributos en cuestión (P(Casa | Evasor), P(Estado Civil | evasor) , P(Salario Trimestral | Evasor))

Ahora para clasificar nuestro ejemplo :

Id Casa Estado Civil Salario trimestral(miles) Evasor
11 No Casado 120
¿?


Tendremos que aplicar la fórmula para Evasor = Si y Evasor = No, y tomar aquel valor superior:

P(X | No) = 7/10 x P( Casa = No | Evasor = No) x P( Estado civil = Casado | Evasor = No) x P(Salario trimestral = 120 | Evasor = No)

= 7/10 x 4/7 x 4/7 x 0.0072

P(X | No) = 0.0024.

P(X | Si) = 3/10 x P( Casa = No | Evasor = Si) x P( Estado civil = Casado | Evasor = Si) x P(Salario trimestral = 120 | Evasor = Si)

= 3/10 x 1 x 0 x 0.0000000012

P(X | Si) = 0.

Entonces para nuestro caso tenemos que la persona pertenece a la clase Evasor = No.

Bueno como verán este clasificador es sencillo y eficaz, no toma muchos recursos computacionales (a diferencia de Knn por citar un ejemplo) y mientras nuestros datos no estén correlacionados tendrá un alto grado de confiabilidad.





[2]Introduction to data mining, Pang-Ning Tang, Adisson Wesley



1 comentario:

Simeón Poissón dijo...

No has calculado la probabilidad que gane el Barcelona?