Path: blob/master/site/es-419/probability/examples/Linear_Mixed_Effects_Models.ipynb
25118 views
Copyright 2018 The TensorFlow Probability Authors.
Licensed under the Apache License, Version 2.0 (the "License");
Modelos lineales de efectos mixtos
Un modelo lineal de efectos mixtos es un enfoque simple para modelar relaciones lineales estructuradas (Harville, 1997; Laird y Ware, 1982). Cada punto de datos consta de entradas de distintos tipos (clasificadas en grupos) y una salida de valor real. Un modelo lineal de efectos mixtos es un modelo jerárquico: comparte solidez estadística entre grupos para mejorar las inferencias sobre cualquier punto de datos individual.
En este tutorial, demostramos modelos lineales de efectos mixtos en TensorFlow Probability con un ejemplo del mundo real. Usaremos los módulos JointDistributionCoroutine y el método de Monte Carlo basado en cadenas de Markov (tfp.mcmc
).
Dependencias y requisitos previos
¡Aceleremos el proceso!
Antes de sumergirnos, asegurémonos de que estamos usando una GPU para esta demostración.
Para hacer esto, seleccione "Tiempo de ejecución" -> "Cambiar tipo de tiempo de ejecución" -> "Acelerador de hardware" -> "GPU".
El siguiente fragmento verificará si tenemos acceso a una GPU.
Nota: Si, por alguna razón, no puede acceder a una GPU, esta colaboración seguirá funcionando. (La capacitación simplemente llevará más tiempo).
Datos
Usamos el conjunto de datos InstEval
del popular paquete en R lme4
(Bates et al., 2015). Es un conjunto de datos de cursos y sus calificaciones de evaluación. Cada curso incluye metadatos como students
, instructors
y departments
, y la variable de respuesta de interés es la calificación de evaluación.
Cargamos y preprocesamos el conjunto de datos. Guardamos el 20 % de los datos para poder evaluar nuestro modelo ajustado en puntos de datos invisibles. A continuación, visualizamos las primeras filas.
Configuramos el conjunto de datos en términos de un diccionario de features
de entradas y una salida labels
correspondiente a las calificaciones. Cada característica se codifica como un número entero y cada etiqueta (calificación de evaluación) se codifica como un número de punto flotante.
Modelo
Un modelo lineal típico supone independencia, donde cualquier par de puntos de datos tiene una relación lineal constante. En el conjunto de datos InstEval
, las observaciones surgen en grupos, cada uno de los cuales puede tener diferentes pendientes e intersecciones. Los modelos lineales de efectos mixtos, también conocidos como modelos lineales jerárquicos o modelos lineales multinivel, capturan este fenómeno (Gelman & Hill, 2006).
Ejemplos de este fenómeno incluyen lo siguiente:
Estudiantes. Las observaciones de un estudiante no son independientes: algunos estudiantes pueden calificar sistemáticamente las clases con un valor bajo (o alto).
Instructores. Las observaciones de un instructor no son independientes: esperamos que los buenos profesores generalmente tengan buenas calificaciones y los malos profesores generalmente tengan malas calificaciones.
Departamentos. Las observaciones de un departamento no son independientes: ciertos departamentos generalmente pueden tener material poco variado o una clasificación más estricta y, por lo tanto, recibir calificaciones más bajas que otros.
Para capturar esto, recuerde que para un conjunto de datos de características y etiquetas , la regresión lineal postula el modelo
donde hay un vector de pendiente , intersección y ruido aleatorio . Decimos que y son "efectos fijos": son efectos que se mantienen constantes en toda la población de puntos de datos . Una formulación equivalente de la ecuación como probabilidad es . Esta probabilidad se maximiza durante la inferencia para encontrar estimaciones puntuales de y que se ajusten a los datos.
Un modelo lineal de efectos mixtos extiende la regresión lineal de este modo:
donde todavía hay un vector de pendiente , intersección y ruido aleatorio . Además, existe un término , donde es una matriz de características y es un vector de pendientes aleatorias; se distribuye normalmente con el parámetro del componente de varianza . se forma dividiendo la matriz de características original en términos de una nueva matriz y una matriz , donde : esta partición nos permite modelar las características por separado usando los efectos fijos y la variable latente respectivamente.
Decimos que las variables latentes son "efectos aleatorios": son efectos que varían a lo largo de la población (aunque pueden ser constantes a lo largo de las subpoblaciones). En particular, debido a que los efectos aleatorios tienen media 0, la media de la etiqueta de datos es capturada por . El componente de efectos aleatorios captura variaciones en los datos: por ejemplo, "El instructor n.º 54 tiene una calificación de 1.4 puntos por encima de la media".
En este tutorial, planteamos los siguientes efectos:
Efectos fijos:
service
.service
es una covariable binaria que corresponde a si el curso pertenece al departamento principal del instructor. No importa cuántos datos adicionales recopilemos, solo pueden tomar valores y .Efectos aleatorios:
students
,instructors
ydepartments
. Con más observaciones de la población de calificaciones de evaluación de cursos, podríamos estar observando nuevos estudiantes, profesores o departamentos.
En la sintaxis del paquete de R lme4 (Bates et al., 2015), el modelo se puede resumir de la siguiente manera:
donde x
denota un efecto fijo, (1|x)
denota un efecto aleatorio para x
y 1
denota un término de intersección.
A continuación, implementamos este modelo como JointDistribution. Para tener un mejor soporte para el seguimiento de parámetros (por ejemplo, queremos hacer un seguimiento de todos los tf.Variable
en model.trainable_variables
), implementamos la plantilla del modelo como tf.Module
.
Como programa gráfico probabilístico, también podemos visualizar la estructura del modelo en términos de su grafo computacional. Este grafo codifica el flujo de datos a través de las variables aleatorias del programa, haciendo explícitas sus relaciones en términos de un modelo gráfico (Jordan, 2003).
Como herramienta estadística, podríamos mirar el grafo para ver con mas claridad, por ejemplo, que intercept
y effect_service
dependen condicionalmente de ratings
que se den; esto puede ser más difícil de ver en el código fuente si el programa está escrito con clases, referencias cruzadas entre módulos o subrutinas. Como herramienta computacional, también podríamos notar que las variables latentes fluyen hacia la variable ratings
a través de las operaciones tf.gather
. Esto puede ser un cuello de botella en ciertos aceleradores de hardware si la indexación de Tensor
es costosa; visualizar el grafo hace que esto sea evidente.
Estimación de parámetros
Dados los datos, el objetivo de la inferencia es ajustar la pendiente de efectos fijos , la intersección y el parámetro del componente de varianza modelo. El principio de máxima verosimilitud formaliza esta tarea de este modo:
En este tutorial, usamos el algoritmo de EM de Monte Carlo para maximizar esta densidad marginal (Dempster et al., 1977; Wei y Tanner, 1990)¹. Ejecutamos el método de Monte Carlo basado en cadenas de Markov para calcular la expectativa de la probabilidad condicional con respecto a los efectos aleatorios ("paso E"), y llevamos a cabo un descenso de gradiente para maximizar la expectativa con respecto a los parámetros ("paso M"):
Para el paso E, configuramos el Hamiltoniano de Monte Carlo (HMC). Toma un estado actual (los efectos de estudiante, instructor y departamento) y devuelve un nuevo estado. Asignamos el nuevo estado a las variables de TensorFlow, que denotarán el estado de la cadena HMC.
Para el paso M, usamos la muestra posterior del HMC para calcular una estimación no sesgada de la probabilidad marginal hasta una constante. Luego, aplicamos su gradiente con respecto a los parámetros de interés. Esto produce un paso de descenso estocástico imparcial sobre la probabilidad marginal. Lo implementamos con el optimizador Adam de TensorFlow y minimizamos el negativo del marginal.
Ejecutamos una etapa de calentamiento, que ejecuta una cadena del MCMC durante varias iteraciones para que el entrenamiento pueda inicializarse dentro de la masa de probabilidad posterior. Luego, ejecutamos un ciclo de entrenamiento. Ejecuta conjuntamente los pasos E y M, y registra los valores durante el entrenamiento.
También puede escribir el bucle for de preparación en un tf.while_loop
y el paso de entrenamiento en un tf.scan
o tf.while_loop
para lograr una inferencia aún más rápida. Por ejemplo:
Arriba, no ejecutamos el algoritmo hasta que se detectó un umbral de convergencia. Para comprobar si el entrenamiento fue válido, verificamos si la función de pérdida tiende a converger durante las iteraciones de entrenamiento.
También utilizamos un gráfico de seguimiento, que muestra la trayectoria del algoritmo de Monte Carlo basado en cadenas de Markov a través de dimensiones latentes específicas. A continuación, vemos que los efectos específicos del instructor efectivamente se alejan significativamente de su estado inicial y exploran el espacio de estados. El gráfico de seguimiento también indica que los efectos difieren entre los instructores pero con un comportamiento de mezcla similar.
Crítica
Arriba, instalamos el modelo. Ahora nos disponemos a analizar su ajuste a partir de los datos, lo que nos permitirá explorar y comprender mejor el modelo. Una de esas técnicas es un gráfico residual, que traza la diferencia entre las predicciones del modelo y la verdad fundamental para cada punto de datos. Si el modelo fuera correcto, entonces su diferencia debería tener una distribución normal estándar; cualquier desviación de este patrón en el gráfico indica un desajuste del modelo.
Para construir el gráfico residual, primero formamos la distribución predictiva posterior sobre las puntuaciones, que sustituye la distribución previa sobre los efectos aleatorios por su posterior dados los datos de entrenamiento. En particular, ejecutamos el modelo e interseccionamos su dependencia de efectos aleatorios previos con sus medias posteriores inferidas².
Tras una inspección visual, los residuales parecen tener una distribución normal. Sin embargo, el ajuste no es perfecto: hay una masa de probabilidad mayor en las colas que en una distribución normal, lo que indica que el modelo podría mejorar su ajuste si se flexibilizaran sus supuestos de normalidad.
En particular, aunque lo más común es usar una distribución normal para modelar calificaciones en el conjunto de datos InstEval
, una mirada más cercana a los datos revela que las calificaciones de evaluación de cursos son en realidad valores ordinales del 1 al 5. Esto sugiere que deberíamos usar una distribución ordinal, o incluso categórica, si tenemos suficientes datos para descartar el orden relativo. Este es un cambio de una línea al modelo anterior; se aplica el mismo código de inferencia.
Para explorar cómo hace predicciones individuales el modelo, observamos el histograma de efectos para estudiantes, profesores y departamentos. Esto nos permite comprender cómo los elementos individuales en el vector de características de un punto de datos tienden a influir en el resultado.
No resulta sorpresivo comprobar a continuación que, cada estudiante normalmente tiene poco efecto en la calificación de evaluación de un instructor. Curiosamente, vemos que el departamento al que pertenece un instructor tiene un gran efecto.
Notas a pie de página
¹ Los modelos lineales de efectos mixtos son un caso especial en el que podemos calcular analíticamente su densidad marginal. Para los propósitos de este tutorial, demostramos el algoritmo de EM de Monte Carlo, que se aplica más fácilmente a densidades marginales no analíticas, como si la probabilidad se extendiera para ser categórica en lugar de normal.
² Para simplificar, formamos la media de la distribución predictiva con solo un paso hacia delante del modelo. Esto se hace mediante el condicionamiento de la media posterior y es válido para modelos lineales de efectos mixtos. Sin embargo, esto no es válido en términos generales: la media de la distribución predictiva posterior suele ser intratable y requiere tomar la media empírica en múltiples pasos hacia adelante del modelo dadas muestras posteriores.
Agradecimientos
Este tutorial fue escrito originalmente en Edward 1.0 (fuente). Agradecemos a todos los contribuyentes por escribir y revisar esa versión.
Referencias
Douglas Bates, Martin Machler, Ben Bolker y Steve Walker. Fitting Linear Mixed-Effects Models Using lme4. Journal of Statistical Software, 67(1):1-48, 2015.
Arthur P. Dempster, Nan M. Laird y Donald B. Rubin. Maximum likelihood from incomplete data via the EM algorithm. Journal of the Royal Statistical Society, Series B (Methodological)), 1-38, 1977.
Andrew Gelman y Jennifer Hill. Data analysis using regression and multilevel/hierarchical models. Cambridge University Press, 2006.
David A. Harville. Maximum likelihood approaches to variance component estimation and to related problems. Journal of the American Statistical Association, 72(358):320-338, 1977.
Michael I. Jordan. An Introduction to Graphical Models. Technical Report, 2003.
Nan M. Laird y James Ware. Random-effects models for longitudinal data. Biometrics, 963-974, 1982.
Greg Wei y Martin A. Tanner. A Monte Carlo implementation of the EM algorithm and the poor man's data augmentation algorithms. Journal of the American Statistical Association, 699-704, 1990.