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.