-
Así que, ahora, vamos a ver un ejemplo en una red real,
-
y trataremos de ver como es el aspecto de una CPD,
-
cuál es el comportamiento que obtenemos,
-
y cómo podríamos aumentar la red
-
para incluir cosas adicionales.
-
Ahora, déjenme advertirles por adelantado
-
que se trata de una red de juguete,
-
no es una red real,
-
aunque es lo suficientemente compacta como para mirarla, pero
-
aún lo suficientemente interesante como para obtener algunos comportamientos no triviales.
-
Por lo tanto, para explorar la red,
-
vamos a utilizar un sistema llamado SAMIAM.
-
Fue producido por Adnan Darwiche y su grupo de la UCLA,
-
y es bueno
-
porque en realidad funciona en todo tipo de plataformas diferentes,
-
así que puede ser utilizado por cualquiera.
-
Así que echemos un vistazo a un problema particular:
-
Imaginemos que somos una compañía de seguros
-
y estamos tratando de decidir
-
para una persona que llega
-
si se le da seguro o no.
-
Así, el aspecto operativo para tomar esa decisión
-
es cuanto nos va a costar la póliza,
-
es decir, cuánto vamos a tener que pagar
-
en el transcurso de un año para asegurar a esta persona.
-
Por lo tanto hay una variable llamada "Cost".
-
Vamos a hacer clic sobre él para ver qué propiedades tienen esa variable.
-
Y podemos ver que en este caso,
-
hemos decidido dar sólo dos valores para la variable "Cost",
-
Bajo y Alto.
-
Esto es claramente una aproximación muy de grano grueso
-
y no una que vayamos a utilizar en la práctica.
-
En realidad, es probable que
-
ésta sea una variable continua
-
cuyo entendimiento depende de varios aspectos del modelo.
-
Sin embargo, para los propósitos de nuestro ejemplo,
-
vamos a utilizar esta distribución discreta
-
que sólo tiene valores Bajo y Alto.
-
Está bien.
-
Así que ahora, vamos a construir esta red mediante la técnica de
-
"ampliar la conversación" que mencionamos antes.
-
Así que, ¿cuál es el factor determinante más importante
-
en cuanto a costos que la compañía de seguros tiene que pagar?
-
Bueno, probablemente si la persona tiene accidentes
-
y qué tan severos son.
-
Así que aquí tenemos una red que tiene dos variables:
-
una es "Accident" y la otra es "Cost".
-
Y en este caso hemos decidido seleccionar
-
tres valores posibles para la variable "Accident",
-
Ninguno, Leve y Severo,
-
y con las probabilidades que ven en la lista.
-
Y lo que se ve abajo es la variable "Cost".
-
Y abrimos la CPD
-
de la variable "Cost" dada la variable "Accident".
-
Y podemos ver que, en este caso,
-
tenemos una tabla de probabilidad condicional
-
de "Cost" dado "Accident".
-
Noten que esto en realidad está invertido
-
respecto a la notación que hemos utilizado en la clase anterior,
-
porque acá los casos condicionados son columnas,
-
mientras que en los ejemplos que hemos dado
-
han sido filas.
-
Pero eso está bien, es la misma cosa, sólo invertida.
-
Y así vemos, por ejemplo,
-
que si la persona no tiene accidentes,
-
es muy probable que los costos sea muy bajos.
-
Accidentes leves incurre en distribuciones diferentes sobre los costos.
-
Y los accidentes graves tienen
-
una probabilidad de 0,9 de tener alto costo
-
y 0,1 de tener un bajo costo.
-
Así que ahora, vamos a seguir ampliando la conversación
-
y preguntar que depende de "Accident".
-
Y parece ser que uno de los factores obvios
-
es si la persona es un buen conductor o no.
-
Y así podríamos esperar que la calidad del conductor
-
sea un padre de "Accident".
-
Pero hay otras cosas
-
que también afectan no sólo la presencia de un accidente,
-
sino también la gravedad del accidente.
-
Así, por ejemplo, el tamaño del vehículo afectaría
-
la gravedad de un accidente porque
-
si están conduciendo una SUV de gran tamaño, entonces
-
es probable que no tengan un accidente tan grave,
-
pero a su vez quizás podría aumentar
-
la probabilidad de tener un accidente global,
-
ya que a lo mejor un coche grande es más difícil de manejar.
-
Y entonces, el año del vehículo podría afectar las posibilidades de un accidente
-
debido a la presencia o ausencia de ciertas características de seguridad
-
como los frenos antibloqueo y airbags.
-
Así que vamos a abrir la CPD de "Accident"
-
y vemos como luce
-
ahora que tenemos todos los padres para ella.
-
Y podemos ver acá que tenemos,
-
en este caso, ocho casos condicionados,
-
correspondiente a tres variables, dos valores cada uno.
-
Y acá, sólo para ver una una de las muestra
-
de la distribución, por ejemplo,
-
si se trata de un vehículo bastante nuevo (después de 2000)
-
y es una SUV,
-
la probabilidad de tener un accidente grave es muy baja,
-
y la probabilidad de tener un accidente leve es moderada,
-
y la probabilidad de no tener accidentes es de 0,85.
-
Mientras que si se compara con la entrada correspondiente
-
cuando mantenemos todo fijo, excepto que ahora es un coche compacto,
-
vemos que la probabilidad de tener un accidente leve es menor,
-
pero la probabilidad de no tener accidentes es mayor,
-
representando patrones de conducción diferentes, por ejemplo.
-
Bien, entonces con esta red
-
podemos empezar a hacer preguntas simples.
-
Así que, para dar algún ejemplo de inferencia causal,
-
vamos a instanciar, por ejemplo, "Driving_quality" en Bueno,
-
y en Malo.
-
Y podemos ver que para un mal conductor
-
la probabilidad de un costo bajo es 81%.
-
Y para un buen conductor de la probabilidad de un costo bajo es 87%.
-
Si nos fijamos en los accidentes
-
se puede ver que para un buen conductor
-
hay una probabilidad de 87,5% de no tener accidentes
-
y 10% de tener un accidente leve.
-
Y la probabilidad de no tener accidentes baja para un mal conductor,
-
y accidentes leves sube,
-
y accidentes graves también se va hacia arriba.
-
Ahora, tengan en cuenta que muchas de estas diferencias son muy sutiles.
-
Hay una diferencia de un par de puntos porcentuales de una manera u otra.
-
Y se podría pensar que,
-
si estuvieran diseñando una red,
-
les gustaría que estos cambios de probabilidad sean realmente extremos
-
cuando se instancias valores distintos.
-
Pero en muchos casos esto no es realmente cierto,
-
y estas diferencias sutiles
-
son en realidad muy importante para una compañía de seguros
-
que asegura cientos de miles de personas.
-
Un par de puntos porcentuales en la probabilidad de un accidente
-
puede hacer una gran diferencia a la propia rentabilidad.
-
Así que ahora vamos a pensar en
-
cómo podríamos expandir esta red aún más.
-
El tamaño de vehículo y año del vehículo son cosas
-
que podemos observar en el foro de seguros.
-
Pero la calidad del conductor es muy difícil de observar.
-
No se puede preguntarle a alguien: "Oh, ¿eres un buen conductor?"
-
Porque todo el mundo va a decir:
-
"Claro, soy el mejor conductor!".
-
Por lo tanto no va a ser una cuestión de gran utilidad.
-
Entonces, ¿qué evidencias podemos observar que nos
-
podrían indicar el valor de la calidad de conductor?
-
Una obvia es el registro de conducir de la persona.
-
Es decir, si ha tenido accidentes anteriores
-
o infracciones anteriores.
-
Por lo tanto, vamos a pensar en añadir una variable
-
que representa la historia de conducción.
-
Y así vamos a introducir esa variable.
-
Por lo tanto, puede hacer clic en este botón
-
que nos permite crear un nodo.
-
El nodo ahora se llama "variable1"
-
por lo que tenemos que darle un nombre.
-
Así, por ejemplo, vamos a llamarlo "DrivingHistory".
-
Y ese es su identificador,
-
y también tenemos el nombre de la variable,
-
que es generalmente el mismo.
-
Y vamos a darle dos valores,
-
digamos PreviousAccident y NoPreviousAccident.
-
Ahora, ¿dónde vamos a poner esta variable en la red?
-
Uno podría pensar inicialmente que hay que
-
colocar "DrivingHistory" como padre de "Driver_quality"
-
porque el historial de conducción puede influenciar
-
nuestras creencias sobre la calidad del conductor.
-
Ahora, es verdad que la observación del historial de conducción
-
cambia nuestra probabilidad de la calidad del conductor,
-
pero si piensan en la propia estructura causal de esta situación,
-
lo que realmente tenemos es que la calidad del conductor es un factor causal
-
tanto de un accidente anterior
-
como un accidente posterior.
-
Y lo que si queremos mantener es
-
la estructura causal intuitiva del dominio,
-
algo más adecuado es añadir "DrivingHistory" como hijo
-
en lugar de padre de "Driver_quality".
-
Pueden preguntarse por qué es importante,
-
y en este ejemplo muy sencillo
-
los dos modelos son, en cierto sentido equivalentes
-
y podríamos haberlas colocado de cualquier manera,
-
excepto que la CPD de la calidad del conductor dado el historial de conducción
-
puede ser un poco menos intuitivo.
-
Pero si tuviéramos otros indicadores de calidad del conductor,
-
por ejemplo, una infracción anterior,
-
entonces en realidad tiene mucho más sentido
-
tener todos ellos como hijos de la calidad del conductor
-
en vez de padres de la calidad del conductor.
-
Está bien.
-
Esto nos muestra cómo podemos añadir una variable a la red.
-
Y ahora vamos a abrir una red mucho más grande
-
que incluye estas variables y otras.
-
Miramos ahora en esta red más grande,
-
y podemos ver
-
que hemos añadido algunas variables diferentes a la red.
-
Hemos añadido atributos del vehículo,
-
por ejemplo, si el vehículo tenía frenos antibloqueo y airbag,
-
que nos va a permitir dar
-
probabilidades más informativas sobre el accidente.
-
También hemos introducido aspectos del conductor,
-
por ejemplo, si ha tenido una ruta de entrenamiento extra,
-
que va a aumentar la calidad de conducción,
-
si es joven o viejo,
-
donde se supone
-
que las personas más jóvenes tienden a ser conductores más imprudentes,
-
y si el conductor es enfocado o fácilmente distraído,
-
que a su vez va a afectar a la calidad de conducción.
-
Ahora bien, como el tipo de personalidad es difícil de observar,
-
añadimos otra variable que es "Good_student"
-
lo que podría indicar el tipo de personalidad.
-
Así que vamos a abrir la CPD para este,
-
y así podemos ver acá que, por ejemplo,
-
si sos una persona enfocada y joven,
-
es mucho más probable que seas un buen estudiante,
-
mucho más que si no sos una persona enfocada y joven.
-
Si sos viejo, no es muy probable que seas un estudiante,
-
por lo que esta probabilidad básicamente dice que si sos viejo,
-
no es muy probable que seas un estudiante,
-
y por lo tanto no es probable ser un buen estudiante.
-
Así que, ahora que hemos añadido todas estas variables a la red,
-
vamos a seguir adelante y ejecutar algunas consultas para ver qué pasa.
-
Y vamos a empezar por mirar la probabilidad a priori de "Accident"
-
antes de observar nada.
-
Podemos ver que la probabilidad de ningún accidente es cercana al 79,5%.
-
La probabilidad de accidente grave es de aproximadamente 3%.
-
Ahora vamos a seguir adelante y decirle al sistema
-
que tenemos un buen estudiante en cuestión.
-
Así que vamos a observar
-
que el estudiante es un buen estudiante,
-
y vamos a ver qué pasa.
-
Podemos ver, sorprendentemente,
-
que a pesar de que se observa
-
que alguien es un buen estudiante,
-
la probabilidad de ningún accidente
-
se redujo de 79,5% a 78%,
-
y la probabilidad de accidentes graves
-
subió de 3,5% a 3,67%.
-
Ustedes pueden decir:
-
"Bueno, pero me dijo que es un buen estudiante,
-
¿No debería bajar la probabilidad de accidentes?"
-
Así que echemos un vistazo a algunos caminos activos en este grafo.
-
Un camino activo pasa desde "Good_student" a "Focused",
-
a "Driver_quality",
-
a "Accident".
-
Y es bastante seguro que, si tenemos en cuenta ese camino de forma aislada,
-
probablemente va a hacer que la probabilidad de ningún accidente sea mayor.
-
Sin embargo, tenemos otro camino activo.
-
Tenemos el camino activo que va de "Good_student" hasta "Age",
-
y luego hacia abajo, a través de "Driver_quality".
-
Por lo tanto, para ver esto, vamos a desmarcar en buen estudiante
-
y ver qué pasa.
-
Noten que inicialmente la probabilidad de que el conductor sea joven era del 25%,
-
pero cuando observé un buen estudiante,
-
subió a cerca de 95%.
-
Y eso fue suficiente para contrarrestar la influencia
-
a lo largo de este camino activo más evidente.
-
Así que, para demostrar que esto es precisamente lo que está pasando,
-
hagamos click para
-
instanciar el hecho de que el estudiante es joven,
-
y podemos ver que la probabilidad de accidente grave subió hasta el 3,7%
-
y ningún accidente bajó un poco por debajo del 77%.
-
Y ahora vamos a observar buen estudiante y ver qué pasa.
-
Así que ahora observamos buen estudiante,
-
y la probabilidad de ningún accidentes se fue a 78%,
-
a diferencia del anterior, cuando era 77%.
-
Y la razón de esto
-
es que ahora hemos bloqueado este camino
-
que va de buen estudiante, a través de la edad, a la calidad del conductor
-
mediante la observación de esta variable que bloquea el camino.
-
Así podemos ver que los patrones de razonamiento
-
en una red bayesiana a veces son sutiles.
-
Y hay diferentes caminos que pueden afectar a las cosas
-
y interactúan entre sí de diferentes maneras.
-
Y de esta manera, es útil tomar el modelo
-
y jugar con diferentes consultas
-
y diferentes combinaciones de evidencias
-
para entender el comportamiento de una red.
-
Y especialmente si están diseñando
-
dicha red para una aplicación particular,
-
es útil para probar las diferentes consultas
-
y ver si el comportamiento que se obtiene
-
es el comportamiento que desean conseguir.
-
Y si no, entonces necesitan preguntarse
-
¿cómo puedo modificar esta red para obtener un comportamiento
-
que es más similar a la conducta deseada?.
-
Esta red está disponible para que jueguen
-
y puedan probar diferentes cosas
-
y ver qué comportamientos se obtienen.