6 votos

Modelos aditivos generalizados: ¿Qué es exactamente lo que se penaliza cuando se utiliza un suavizador P-spline con $\texttt{mgcv}$ ?

Los modelos aditivos generalizados (GAM) evitan el sobreajuste introduciendo un $\color{#D55E00}{\text{penalty term}}$ en la función de pérdida: $$ ||\mathbf{y}-\mathbf{X\beta}||^{2} + \color{#D55E00}{\lambda\mathbf{\beta}^{\intercal}\mathbf{S\beta}} $$ donde $\lambda$ controla la ondulación del alisador o de la base. El óptimo $\lambda$ puede estimarse a partir de los datos utilizando varios métodos, como REML (máxima verosimilitud restringida), ML (máxima verosimilitud) o sobre la base del AIC (véase la maravillosa introducción video sobre GAMs por @GavinSimpson).

La función s() en R s mgcv le permite elegir el tipo de alisador o base (las splines de placa fina son las predeterminadas). Entre esos alisadores están las P-splines (Penalized B-Splines), introducidas por Eilers y Marx (1996) . Debo admitir que no entiendo del todo lo que están haciendo, pero la documentación de mgcv estados:

Las [P-splines] combinan una base B-spline, con una penalización discreta sobre la base y se permite cualquier combinación razonable de penalización y orden de base. se permite.

Así que me parece que estamos penalizando dos veces: una al usar P-splines y otra al gam es el ajuste del modelo mediante la penalización de la ondulación $\lambda$ .

Mis preguntas son: ¿Qué es exactamente lo que se penaliza cuando usamos P-splines en un GAM que ya penaliza la ondulación del liso? ¿Y cuál es el beneficio de penalizar dos veces (si es que eso es lo que sucede)?

3voto

David J. Sokol Puntos 1730

P splines en mgcv no se penalizan dos veces, sólo utilizan una forma diferente de matriz de penalización en la que penalizamos algún orden particular de diferencias entre los adyacentes $\beta_i$ .

Es importante señalar que GCV, REML, etc. son algoritmos para elegir $\boldsymbol{\lambda}$ los parámetros de suavidad; debido a la forma en que se define la complejidad del modelo en función de los coeficientes del mismo, el ajuste de un GAM penalizado implica básicamente encontrar $\boldsymbol{\beta}$ y $\boldsymbol{\lambda}$ para minimizar la log-verosimilitud negativa penalizada. Como medir La ondulación de las funciones ajustadas viene determinada por la forma de la matriz de penalización $\mathbf{S}$ pero al definir estas matrices no estamos penalizando nada con ellas en sí mismas. La penalización o contracción viene cuando elegimos valores para $\boldsymbol{\lambda}$ porque a medida que aumentamos $\boldsymbol{\lambda}$ tenemos que reducir los valores de $\boldsymbol{\beta}$ .

La medida de los wigglines en un GAM penalizado es

$$\boldsymbol{\beta}^{\mathsf{T}} \mathbf{S} \boldsymbol{\beta}$$

donde $\mathbf{S}$ es la matriz de penalización. Para los splines P, en lugar de una matriz de penalización directamente definida $\mathbf{S}$ que mide la ondulación de las funciones base, como hacemos con los splines de placa fina, definimos una matriz $\mathbf{P}$ de manera que nuestra medida de ondulación es ahora, siguiendo el argumento de Wood (2017, pp. 206; ligeramente modificado para corregir una errata)

$$\boldsymbol{\beta}^{\mathsf{T}} \mathbf{P}^{\mathsf{T}}\mathbf{P} \boldsymbol{\beta}$$

y por lo tanto $\mathbf{P}^{\mathsf{T}}\mathbf{P}$ es ahora nuestra matriz de penalización, y $\mathbf{P}$ la raíz cuadrada de la matriz de penalización.

En un spline P queremos penalizar las diferencias al cuadrado entre coeficientes adyacentes

$$\sum_{i=1}^{k-1}(\beta_{i+1} - \beta_i)^2 = \boldsymbol{\beta}^{\mathsf{T}} \mathbf{P}^{\mathsf{T}}\mathbf{P} \boldsymbol{\beta}$$

definimos $\mathbf{P}$ como

$$\mathbf{P} = \begin{bmatrix} -1 & 1 & 0 & \cdot & \cdot \\ 0 & -1 & 1 & 0 & \cdot \\ \cdot & \cdot & \cdot & \cdot & \cdot \\ \cdot & \cdot & \cdot & \cdot & \cdot \end{bmatrix}$$

para que tengamos

$$\begin{bmatrix} \beta_2 - \beta_1 \\ \beta_3 - \beta_2 \\ \cdot \\ \cdot \end{bmatrix} = \mathbf{P}\boldsymbol{\beta}$$

$\mathbf{P}$ es la raíz cuadrada de la matriz de penalización, por lo tanto, terminamos con

$$\boldsymbol{\beta}^{\mathsf{T}} \mathbf{P}^{\mathsf{T}}\mathbf{P} \boldsymbol{\beta} = \boldsymbol{\beta}^{\mathsf{T}} \begin{bmatrix} 1 & -1 & 0 & \cdot & \cdot & \cdot \\ -1 & 2 & -1 & 0 & \cdot & \cdot\\ 0 & -1 & 2 & -1 & 0 & \cdot \\ \cdot & \cdot & \cdot & \cdot & \cdot & \cdot \\ \cdot & \cdot & \cdot & \cdot & \cdot & \cdot \end{bmatrix} \boldsymbol{\beta}$$

Para ser claros, todo lo anterior se ha extraído/resumido de Wood (2017, pp. 206).

Espero que quede claro que la penalización se define directamente en términos de diferencias de grupos adyacentes (la diferencia puede ser de orden superior a las diferencias de primer orden mostradas aquí) de coeficientes. En otras palabras, los modelos más complejos son aquellos en los que hay grandes diferencias entre grupos adyacentes de coeficientes de spline/modelo.

En los splines de placa fina y los splines de regresión cúbica, por el contrario, la matriz de penalización $\mathbf{S}$ mide la ondulación de cada función base y cómo la ondulación de una función modifica la ondulación de la otra, es decir, cómo covierten las ondulaciones de las funciones base. Estas matrices de penalización se definen en términos de la ondulación de las propias funciones base, pero en un spline P la penalización se aplica a los coeficientes y no mide la ondulación de las propias funciones base.

Esto quiere decir que las splines P no se definen típicamente en términos de derivado -Las penalizaciones para los splines de placa fina y los splines de regresión cúbica son derivado -basado en. Digo típicamente, porque Simon Wood tiene una sección (5.3.4) en su libro de GAM (Wood 2017) que muestra cómo se pueden crear splines P con penalizaciones basadas en derivadas, pero puedes leerlo por ti mismo si estás interesado).

Si quieres jugar con esto en R (o traducirlo al idioma de tu elección), Simon incluye el siguiente fragmento sencillo para ilustrar cómo crear $\mathbf{P}$ para un tamaño determinado de $k$ y, por tanto, cuál es la matriz de penalización resultante $\mathbf{S}$ parece:

k <- 6
P <- diff(diag(k), differences = 1)
S <- crossprod(P)

con S ahora se

> S
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1   -1    0    0    0    0
[2,]   -1    2   -1    0    0    0
[3,]    0   -1    2   -1    0    0
[4,]    0    0   -1    2   -1    0
[5,]    0    0    0   -1    2   -1
[6,]    0    0    0    0   -1    1

Para obtener diferencias de orden superior, cambie el differences argumento

> P <- diff(diag(k), differences = 2)
> S <- crossprod(P)
> S
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1   -2    1    0    0    0
[2,]   -2    5   -4    1    0    0
[3,]    1   -4    6   -4    1    0
[4,]    0    1   -4    6   -4    1
[5,]    0    0    1   -4    5   -2
[6,]    0    0    0    1   -2    1

A medida que aumente el orden de las diferencias en la penalización, ésta actuará tirando, encogiendo, grupos más grandes de consecutivos $\beta_i$ entre sí como los elementos no nulos en $\mathbf{S}$ cubrir más de la $\beta_i$ .

Referencias

Wood, S.N., 2017. Modelos aditivos generalizados: An Introduction with R, Second Edition. CRC Press.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X