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.
[1]http://es.wikipedia.org/wiki/Teorema_de_Bayes,
29/03/2014
[2]Introduction to
data mining, Pang-Ning Tang, Adisson Wesley
[3]http://es.wikipedia.org/wiki/Distribuci%C3%B3n_normal
, 29/03/2014
[4]http://es.wikipedia.org/wiki/Clasificador_bayesiano_ingenuo,
30/03/2014
1 comentario:
No has calculado la probabilidad que gane el Barcelona?
Publicar un comentario