Path: blob/master/site/es-419/probability/examples/Generalized_Linear_Models.ipynb
25118 views
Copyright 2018 The TensorFlow Probability Authors.
Licensed under the Apache License, Version 2.0 (the "License");
Modelos lineales generalizados
En este bloc de notas, se presentan los Modelos Lineales Generalizados (GLM) a través de un ejemplo resuelto. Este ejemplo se resuelve de dos maneras diferentes con dos algoritmos para ajustar los GLM de manera eficiente en TensorFlow Probability: puntuación de Fisher para datos densos y descenso de gradiente proximal en coordenadas para datos dispersos. Se comparan los coeficientes ajustados con los coeficientes verdaderos y, en el caso de un descenso de gradiente proximal en coordenadas, con la salida del algoritmo glmnet
similar de R. Finalmente, se ofrecen más detalles matemáticos y derivaciones de varias propiedades clave de los GLM.
Antecedentes
Un modelo lineal generalizado (GLM) es un modelo lineal () envuelto en una transformación (función de enlace) y equipado con una distribución de respuesta de una familia exponencial. La elección de la función de enlace y la distribución de la respuesta es muy flexible, lo que otorga una gran expresividad a los GLM. Los detalles completos, incluida una presentación secuencial de todas las definiciones y resultados de los GLM en notación inequívoca, se encuentran en "Derivación de hechos del GLM" a continuación. Resumimos:
En un GLM, una distribución predictiva para la variable de respuesta se asocia con un vector de predictores observados . La distribución tiene la siguiente forma:
Aquí son los parámetros ("ponderaciones"), un hiperparámetro que representa la dispersión ("varianza") y , , , se caracterizan por la familia de modelos especificada por el usuario.
La media de depende de por la composición de la respuesta lineal y la función de enlace (inversa), es decir:
donde es la conocida función de enlace. En TFP, la elección de la función de enlace y la familia de modelos se especifican conjuntamente mediante una subclase tfp.glm.ExponentialFamily
. Entre los ejemplos, se incluyen:
tfp.glm.Normal
, también conocido como "regresión lineal"tfp.glm.Bernoulli
, también conocido como "regresión logística"tfp.glm.Poisson
, también conocido como "regresión de Poisson"tfp.glm.BernoulliNormalCDF
, también conocido como "regresión probit".
TFP prefiere nombrar familias modelo según la distribución sobre Y
en lugar de la función de enlace, ya que las distribuciones tfp.Distribution
ya son ciudadanos de primera clase. Si el nombre de la subclase tfp.glm.ExponentialFamily
contiene una segunda palabra, esto indica una función de enlace no canónica.
Los GLM tienen varias propiedades notables que permiten la implementación eficiente del estimador de máxima verosimilitud. Entre estas propiedades se destacan las fórmulas simples para el gradiente de la probabilidad logarítmica y para la matriz de información de Fisher, que es el valor esperado del hessiano de la probabilidad logarítmica negativa bajo un nuevo muestreo de la respuesta bajo los mismos predictores. Es decir:
donde es la matriz cuya ésima fila es el vector predictor para la ésima muestra de datos, y es el vector cuya ésima coordenada es la respuesta observada para la ésima muestra de datos. Aquí (en términos generales), y , y la negrita denota vectorización de estas funciones. Todos los detalles de lo que representan las distribuciones de estas expectativas y varianzas se pueden encontrar en "Derivación de hechos de GLM" a continuación.
Un ejemplo
En esta sección, describimos y mostramos brevemente dos algoritmos de ajuste de GLM integrados en TensorFlow Probability: puntuación de Fisher (tfp.glm.fit
) y descenso de gradiente proximal por coordenadas (tfp.glm.fit_sparse
).
Conjunto de datos sintéticos
Supongamos que cargamos algún conjunto de datos de entrenamiento.
Nota: Conéctese a un entorno de ejecución local.
En este bloc de notas, compartimos datos entre los núcleos de Python y R a través de archivos locales. Para habilitar este uso compartido, utilice tiempos de ejecución en la misma máquina donde tiene permiso para leer y escribir archivos locales.
Sin regularización L1
La función tfp.glm.fit
implementa la puntuación de Fisher, que toma como uno de sus argumentos:
model_matrix
=response
=model
= invocable que, dado el argumento , devuelve el triple .
Recomendamos que model
sea una instancia de la clase tfp.glm.ExponentialFamily
. Hay varias implementaciones prediseñadas disponibles, por lo que para los GLM más comunes no se requiere ningún código personalizado.
Detalles matemáticos
La puntuación de Fisher es una modificación del método de Newton que nos permite encontrar la estimación de máxima verosimilitud
El método de Newton básico, que busca ceros en el gradiente del logaritmo de verosimilitud, seguiría la regla de actualización
donde es una tasa de aprendizaje que se usa para controlar el tamaño del paso.
En la puntuación de Fisher, el hessiano se reemplaza por la matriz de información negativa de Fisher:
[Tenga en cuenta que aquí es aleatorio, mientras que sigue siendo el vector de respuestas observadas].
Mediante las fórmulas en "Ajuste de parámetros del GLM a los datos" a continuación, esto se simplifica de la siguiente manera:
Con regularización L1
tfp.glm.fit_sparse
implementa un ajustador del GLM más adecuado para conjuntos de datos dispersos, basado en el algoritmo de Yuan, Ho y Lin 2012. Sus características incluyen lo que sigue:
Regularización L1
Sin inversiones de matrices
Pocas evaluaciones del gradiente y del hessiano
En primer lugar, presentamos un ejemplo de uso del código. Los detalles del algoritmo se detallan mejor en "Detalles del algoritmo para tfp.glm.fit_sparse
" a continuación.
Tenga en cuenta que los coeficientes aprendidos tienen el mismo patrón de dispersión que los coeficientes verdaderos.
Comparación con glmnet
de R
Comparamos la salida del descenso de gradiente proximal por coordenadas con la de glmnet
de R, que usa un algoritmo similar.
NOTA: Para ejecutar esta sección, se debe cambiar a un tiempo de ejecución de Colab de R.
Compare R, TFP y coeficientes verdaderos (Nota: Vuelva al núcleo de Python)
Detalles del algoritmo para tfp.glm.fit_sparse
Presentamos el algoritmo como una secuencia de tres modificaciones al método de Newton. En cada uno, la regla de actualización de se basa en un vector y una matriz que se aproximan al gradiente y al hessiano de la probabilidad logarítmica. En el paso , elegimos una coordenada para cambiar y actualizamos de acuerdo con la regla de actualización:
Esta actualización es un paso similar a Newton con una tasa de aprendizaje . Excepto por la pieza final (regularización L1), las siguientes modificaciones difieren solo en cómo actualizan y .
Punto de partida: método de Newton por coordenadas
En el método de Newton por coordenadas, establecemos y en el gradiente verdadero y el hessiano de la probabilidad logarítmica:
Menos evaluaciones del gradiente y del hessiano
El gradiente y el hessiano de la probabilidad logarítmica suelen ser costosos de calcular, por lo que a menudo vale la pena aproximarlos. Podemos hacerlo de la siguiente manera:
Por lo general, se aproxima el hessiano como localmente constante y se aproxima el gradiente al primer orden con ayuda del hessiano (aproximado):
De vez en cuando, se ejecuta un paso de actualización "básico" como el anterior, configurando con el gradiente exacto y con el hessiano exacto de la probabilidad logarítmica, evaluado en .
Sustitución de la información negativa de Fisher por el hessiano
Para reducir aún más el costo de los pasos de actualización básicos, podemos establecer en la matriz de información negativa de Fisher (que se puede calcular eficientemente si se usan las fórmulas en "Ajuste de parámetros del GLM a los datos" a continuación) en lugar del hessiano exacto:
Regularización L1 mediante descenso de gradiente proximal
Para incorporar la regularización L1, reemplazamos la regla de actualización.
con la regla de actualización más general
donde ParseError: KaTeX parse error: Expected 'EOF', got '&' at position 15: r_{\text{L1}} &̲gt; 0 es una constante proporcionada (el coeficiente de regularización L1) y es el operador de umbral suave, definido por
Esta regla de actualización tiene las siguientes dos propiedades inspiradoras, que se explican a continuación:
En el caso de limitación (es decir, sin regularización L1), esta regla de actualización es idéntica a la regla de actualización original.
Esta regla de actualización se puede interpretar como la aplicación de un operador de proximidad cuyo punto fijo es la solución al problema de minimización regularizado L1.
El caso degenerado recupera la regla de actualización original
Para ver (1), tenga en cuenta que si entonces , por lo tanto
Por eso
Operador de proximidad cuyo punto fijo es el MLE regularizado
Para ver (2), primero tenga en cuenta (ver Wikipedia) que para cualquier , la siguiente regla de actualización
satisface (2), donde es el operador de proximidad (ver Yu, donde este operador se denota ). El lado derecho de la ecuación anterior se calcula aquí:
En particular, al establecer (tenga en cuenta que siempre que la probabilidad logarítmica negativa sea convexa), obtenemos la regla de actualización
Luego reemplazamos el gradiente exacto con su aproximación , y obtenemos
Por eso
Derivación de hechos del GLM
En esta sección, declaramos con todo detalle y derivamos los resultados sobre los GLM que se utilizan en las secciones anteriores. Luego, utilizamos gradients
de TensorFlow para verificar numéricamente las fórmulas derivadas para el gradiente de la probabilidad logarítmica y la información de Fisher.
Puntuación e información de Fisher
Considere una familia de distribuciones de probabilidad parametrizadas por el vector de parámetros , que tiene densidades de probabilidad . La puntuación de un resultado en el vector de parámetros se define como el gradiente de la probabilidad logarítmica de (evaluada en ), es decir,
Afirmación: La expectativa de la puntuación es cero
En condiciones de regularidad leves (que nos permiten pasar la diferenciación bajo la integral),
Prueba
Tenemos
donde hemos utilizado: (1) regla de la cadena para la diferenciación, (2) definición de expectativa, (3) paso de la diferenciación bajo el signo integral (mediante el uso de las condiciones de regularidad), (4) la integral de una densidad de probabilidad es 1.
Afirmación (información de Fisher): La varianza de la puntuación es igual a la probabilidad hessiana negativa esperada de la probabilidad logarítmica.
En condiciones de regularidad leves (que nos permiten pasar la diferenciación bajo la integral),
donde denota la matriz hessiana, cuya entrada es .
El lado izquierdo de esta ecuación se llama información de Fisher de la familia en el vector de parámetros .
Prueba de la afirmación
Tenemos
donde hemos usado (1) la regla de la cadena para la diferenciación, (2) la regla del cociente para la diferenciación, (3) la regla de la cadena nuevamente, a la inversa.
Para completar la demostración, basta demostrar lo siguiente:
Para hacer eso, pasamos la diferenciación bajo el signo integral dos veces:
Lema sobre la derivada de la función de partición logarítmica
Si , y son funciones con valores escalares, dos veces diferenciables, de modo que la familia de distribuciones definido por
cumple las condiciones de regularidad leves que permiten pasar la diferenciación con respecto a bajo una integral con respecto a , entonces
y
(Aquí denota diferenciación, por lo que y son la primera y la segunda derivada de ).
Prueba
Para esta familia de distribuciones, tenemos . La primera ecuación se deriva entonces del hecho . A continuación, tenemos
Familia exponencial de distribuciones sobredispersas
Una familia exponencial (escalar) de distribuciones sobredispersas es una familia de distribuciones cuyas densidades toman la forma
donde y son funciones escalares conocidas, y y son parámetros escalares.
[Tenga en cuenta que está sobredeterminado: para cualquier , la función está completamente determinada por la restricción de que para todos los . Los producidos por diferentes valores de deben ser todos iguales, lo que impone una restricción a las funciones y ].
Media y varianza del estadístico suficiente
En las mismas condiciones que en el "Lema sobre la derivada de la función de partición logarítmica", tenemos
y
Prueba
De acuerdo con el "Lema sobre la derivada de la función de partición logarítmica", tenemos
y
El resultado se deriva entonces del hecho de que la expectativa es lineal () y la varianza es homogénea de grado 2 ().
Modelo lineal generalizado
En un modelo lineal generalizado, una distribución predictiva para la variable de respuesta se asocia con un vector de predictores observados . La distribución es miembro de una familia exponencial de distribuciones sobredispersas y el parámetro se reemplaza por donde es una función conocida, es la llamada respuesta lineal y es un vector de parámetros (coeficientes de regresión) que se deben aprender. En general, el parámetro de dispersión también se puede aprender, pero en nuestra configuración trataremos como si fuera conocido. Entonces nuestra configuración será la siguiente:
donde la estructura del modelo se caracteriza por la distribución y la función que convierte la respuesta lineal en parámetros.
Tradicionalmente, la asignación de la respuesta lineal al significado se denota así:
Se requiere que esta asignación sea uno a uno, y su inverso, , se denomina función de enlace para este GLM. Normalmente, se describe un GLM nombrando su función de enlace y su familia de distribuciones; por ejemplo, un "GLM con distribución de Bernoulli y función de enlace logit" (también conocido como modelo de regresión logística). Para caracterizar completamente el GLM, también se debe especificar la función . Si es la identidad, entonces se dice que es la función de enlace canónico.
Afirmación: se expresa en términos del estadístico suficiente
Defina
y
Entonces, tenemos
Prueba
Mediante la "Media y varianza del estadístico suficiente", tenemos
Al derivar con la regla de la cadena obtenemos
y mediante la "Media y varianza del estadístico suficiente",
La conclusión es la siguiente.
Ajuste de parámetros del GLM a los datos
Las propiedades derivadas anteriormente se prestan muy bien para ajustar los parámetros del GLM a un conjunto de datos. Los métodos cuasi-Newton, como la puntuación de Fisher, se basan en el gradiente del logaritmo de probabilidad y la información de Fisher, que ahora mostramos se puede calcular de manera especialmente eficiente para un GLM.
Supongamos que hemos observado vectores predictores y respuestas escalares asociadas . En forma matricial, diremos que hemos observado predictores y respuesta , donde es la matriz cuya ésima fila es y es el vector cuyo ésimo elemento es . La probabilidad logarítmica de los parámetros es entonces la siguiente:
Para una sola muestra de datos
Para simplificar la notación, consideremos primero el caso de un único punto de datos, ; luego, extenderemos al caso general por aditividad.
Gradiente
Tenemos
Por lo tanto, según la regla de la cadena,
Por separado, mediante la "Media y varianza del estadístico suficiente", tenemos . Por lo tanto, según "Afirmación: ser expresa en términos del estadístico suficiente", tenemos
Hessiano
Al derivar por segunda vez, de acuerdo con la regla del producto obtenemos
Información de Fisher
Mediante la "Media y varianza del estadístico suficiente", tenemos
Por eso
Para múltiples muestras de datos
Ahora extendemos el caso al caso general. Digamos que denota el vector cuya ésima coordenada es la respuesta lineal de la ésima muestra de datos. Supongamos que (resp. , resp. ) denota la función transmitida (vectorizada) que aplica la función de valor escalar (resp. , resp. ) a cada coordenada. Entonces tenemos
y
donde las fracciones denotan división por elementos.
Cómo verificar las fórmulas numéricamente
Ahora usamos tf.gradients
para verificar numéricamente la fórmula anterior para el gradiente de la probabilidad logarítmica y verificamos la fórmula para la información de Fisher con una estimación de Monte Carlo con ayuda de tf.hessians
:
Referencias
[1]: Guo-Xun Yuan, Chia-Hua Ho y Chih-Jen Lin. An Improved GLMNET for L1-regularized Logistic Regression. Journal of Machine Learning Research, 13, 2012. http://www.jmlr.org/papers/volume13/yuan12a/yuan12a.pdf
[2]: skd. Derivation of Soft Thresholding Operator. 2018. https://math.stackexchange.com/q/511106
[3]: Contribuyentes de Wikipedia. Proximal gradient methods for learning. Wikipedia, The Free Encyclopedia, 2018. https://en.wikipedia.org/wiki/Proximal_gradient_methods_for_learning
[4]: Yao-Liang Yu. The Proximity Operator. https://www.cs.cmu.edu/~suvrit/teach/yaoliang_proximity.pdf