Regresión Logística

La regresión logística en sklearn no es la regresión logística sino otra cosa: el problema oculto

La semana pasada escribí una entrada que constaba únicamente de la frase

“La regresión logística en sklearn no es la regresión logística sino otra cosa.”

repetida muchas veces. El problema es que la implementación que hace scikit-learn de la regresión logística usa, por defecto, l2-regularization, es decir, ridge.

Lo cual, en principio, es preferible a la alternativa, es decir, no usar regularización en absoluto; pero usar regularización implica una serie de consideraciones y ajustes por parte del usuario que no siempre se tienen en cuenta.

La regresión logística en sklearn no es la regresión logística sino otra cosa

La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa. La regresión logística en sklearn no es la regresión logística sino otra cosa.

Un par de paradojas de la teoría de la probabilidad y algunos asuntos más

Comienzo la entrada de hoy con un enlace al muy denso Interpretations of probability, en la Enciclopedia de Filosofía de Stanford que, admito, no será del interés de la mayoría.

Podría llegar a decirse —aunque no me atreveré a tanto— que en toda disciplina intelectual tiene que haber paradojas porque de otra manera, sería indistinguible del uso sistemático del sentido común. Así que hoy traigo a colación este análisis de un caso particular de la paradoja de Berkson (que se añade a las ocasiones en las que ya me he referido a ella) y este otro sobre la de Lindley. La primera tiene que ver con la correlación que aparece entre dos variables aleatorias independientes cuando de repente observamos información concomitante; la segunda, con los test de hipótesis (asunto del que, por fortuna, me he mantenido alejado durante largo tiempo).

El Elo: prácticamente una regresión logística entrenada en línea

Los jugadores $A$ y $B$ se enfrentan al ajedrez. Los Elo de A y B son dos números $E_A$ y $E_B$ tales que la probabilidad de que $A$ gane la partida a $B$ es

$$P(A-B) = \frac{1}{1 + 10^{(E_B - E_A) / 400}} = \frac{1}{1 + \exp(-k(E_A - E_B))}$$

para un determinado valor de $k$ que no me voy a molestar en calcular.

Omitiendo la complicación de que las partidas de ajedrez pueden terminar en tablas, podríamos entender el Elo como —prácticamente— los coeficientes de una regresión logística ajustada sobre unos datos, un histórico de partidas de ajedrez, con una matriz de diseño muy particular:

Sobre la relación entre la teoría de la relatividad y la regresión logística

Según la teoría de la relatividad, las velocidades (lineales) se suman así:

v1 <- 100000
v2 <- 100000
velocidad_luz <- 300000

suma_relativista <- function(x,y){
  (x + y) / (1 + x * y / velocidad_luz^2)
}

suma_relativista(v1, v2)
# 180000

Lo que es todavía menos conocido es que esa operación es equivalente a la suma ordinaria de velocidades a través de una transformación de ida y vuelta vía la arcotangente hiperbólica (véase esto). En concreto:

f1 <- function(x) {
  atanh(x / velocidad_luz)
}

f2 <- function(x) {
  velocidad_luz * tanh(x)
}

f2(f1(v1) + f1(v2))
# 180000

Ahora imaginemos un universo donde la velocidad máxima no es la de la luz, sino que solo están permitidas las velocidades entre 0 y 1:

Infradispersión en la logística

Le he dado muchas vueltas en estos últimos tiempos al asunto de la sobredispersión, particularmente en dos tipos de modelos: Poisson y logístico. Así que, aunque solo sea por proximidad semántica, se me quedan pegados ejemplos y casos de ese fenómeno mucho menos frecuente que es el de la infradispersión.

Un ejemplo ilustrativo del fenómeno que se me ocurrió el otro día era

pero hace nada, ese señor lleno de paz y amor que es Putin, nos ha regalado otro:

Sobremuestreando x (y no y)

Construyo unos datos (artificiales, para conocer la verdad):

n <- 10000
x1 <- rnorm(n)
x2 <- rnorm(n)
probs <- -2 + x1 + x2
probs <- 1 / (1 + exp(-probs))
y <- sapply(probs, function(p) rbinom(1, 1, p))
dat <- data.frame(y = y, x1 = x1, x2 = x2)

Construyo un modelo de clasificación (logístico, que hoy no hace falta inventar, aunque podría ser cualquier otro):

summary(glm(y ~ x1 + x2, data = dat, family = binomial))
#Call:
#glm(formula = y ~ x1 + x2, family = binomial, data = dat)
#
#Deviance Residuals:
#    Min       1Q   Median       3Q      Max
#-2.2547  -0.5967  -0.3632  -0.1753   3.3528
#
#Coefficients:
#            Estimate Std. Error z value Pr(>|z|)
#(Intercept) -2.05753    0.03812  -53.97   <2e-16 ***
#x1           1.01918    0.03386   30.10   <2e-16 ***
#x2           1.00629    0.03405   29.55   <2e-16 ***
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#(Dispersion parameter for binomial family taken to be 1)
#
#    Null deviance: 9485.2  on 9999  degrees of freedom
#Residual deviance: 7373.4  on 9997  degrees of freedom
#AIC: 7379.4
#
#Number of Fisher Scoring iterations: 5

Correcto.

La regresión logística como el modelo más simple posible (que...)

Problema de regresión. Queremos $y = f(\mathbf{x})$. Lo más simple que podemos hacer: fiarlo todo a Taylor y escribir $ y = a_0 + \sum_i a_i x_i$.

Problema de clasificación. Lo más simple que podemos hacer, de nuevo: linealizar. Pero la expresión lineal tiene rango en $(-\infty, \infty)$. Solución, buscar la función $f$ más sencilla que se nos pueda ocurrir de $(-\infty, \infty)$ en $[0, 1]$. Entonces, $y = f(a_0 + \sum_i a_i x_i)$.

¿Lineal o logística?

Hay cosas tan obvias que ni se plantea la alternativa. Pero luego va R. Gomila y escribe Logistic or Linear? Estimating Causal Effects of Treatments on Binary Outcomes Using Regression Analysis que se resume en lo siguiente: cuando te interese la explicación y no la predicción, aunque tu y sea binaria, usa regresión lineal y pasa de la logística.

Nota: La sección 4.2 de An Introduction to Statistical Learning de se titula precisamente Why Not Linear Regression?

Modelos con inflación de ceros y separación perfecta

Al estudiar problemas de conteos, la llamada inflación de ceros ocurre frecuentemente: los datos contienen más ceros de los que ocurrirían según las distribuciones habituales (Poisson, binomial negativa). Un modelo con inflación de ceros es una mezcla (mixtura) de un modelo de conteos y una distribución de Dirac (en cero).

Las técnicas habituales para resolverlos involucran (explícita o implícitamente) una estructura jerárquica de modelos: primero, uno (similar a una logística), separa las observaciones que corresponderían a la Dirac del resto. Un segundo modelo de conteos trata de ajustar el segundo.