¿Se puede explicar la predicción de un modelo de caja negra?

Imaginemos un banco que construye modelos para determinar si se concede o no un crédito. Este banco tiene varias opciones para crear el modelo. Sin embargo, en algunos países el regulador exige que el banco pueda explicar el motivo de la denegación de un crédito cuando un cliente lo solicite. Esa restricción impediría potencialmente usar modelos de caja negra como el que construyo a continuación: library(randomForest) raw <- read.table("http://archive.ics.uci.edu/ml/machine-learning-databases/credit-screening/crx.data", sep = ",", na.strings = "?") dat <- raw dat$V14 <- dat$V6 <- NULL # me da igual dat <- na.omit(dat) # ídem modelo <- randomForest(V16 ~ ., data = dat) Fijémonos en el sujeto 100, a quien se le deniega el crédito (suponiendo, ¡mal hecho!, que el punto de corte de la probabilidad para concederlo es el 50%), y la variable $V8$. Podemos ver cuál sería el score del cliente modificando esa variable entre su valor real y el máximo del rango dejando las demás tal cual: ...

15 de marzo de 2016 · Carlos J. Gil Bellosta

Dime qué muestreas y te diré cuál es tu sesgo

El telón de Aquiles del big data es el sesgo. Me gustaría hablar más de ello, pero me agarra de la pluma uno de esos NDAs. Así que hablaré de otra cosa. Si le preguntas a la gente cuántos hermanos son en la familia, el promedio del resultado tenderá a ser superior al número medio de hijos por familia. Esencialmente, porque no estás muestreando familias sino hijos. El tautológico hecho de que las familias con más hijos tengan más hijos hace que estén sobrerrepresentadas en la muestra. ...

14 de marzo de 2016 · Carlos J. Gil Bellosta

GBM sintetizado en una línea

Es $$ \sum_i \Phi(y_i, f_1(x_i)) > \sum_i \Phi(y_i, f_1(x_i) - \lambda \nabla \Phi(y_i, f_1(x_i)) \sim$$ $$ \sim \sum_i \Phi(y_i, f_1(x_i) - \lambda f_2(x_i))$$ Por supuesto, el lector se preguntará muchas cosas, entre las que destaco: ¿Qué representa cada uno de los elementos que aparecen en la línea anterior? ¿Qué parte de ella es solo casi siempre cierta? ¿Qué tiene todo eso que ver con GBM?

11 de marzo de 2016 · Carlos J. Gil Bellosta

Hoy que me he puesto traje y corbata...

… (por motivos que importan pero no debo revelar a mis lectores) aprovecho para criticar a esos tipos que, vistiendo como yo, insisten reiteradamente a sus analistas en que les proporcionen un número. Un número que tiene que ser cerrado, indiscutible, pivotal. A esos que gastan traje y corbata como yo hoy les horroriza la varianza. Le espantan, seguro, esos punticos que tan opotunamente coloca Kiko Llaneras alrededor de las medias de este estupendo ...

10 de marzo de 2016 · Carlos J. Gil Bellosta

Sin datos solo eres alguien con una priori

Que es una manera de matizar Porque, recordemos, no solo con datos tomamos decisiones informadas: las prioris (experiencia cuantificada) tienen su importancia no podemos obtener datos que justifiquen todas, todas, todas las decisiones.

8 de marzo de 2016 · Carlos J. Gil Bellosta

Mezclas de distribuciones con Stan

y <- c(rnorm(1000), rnorm(2000, 1, 0.5)) es una mezcla de dos normales (N(0, 1) y N(1, 0.5)) con pesos 1/3 y 2/3 respectivamente. Pero, ¿cómo podríamos estimar los parámetros a partir de esos datos? Se puede usar, p.e., flexmix, que implementa eso del EM. Pero en el librillo de este maestrillo dice library(rstan) y <- c(rnorm(1000), rnorm(2000, 1, 0.5)) codigo <- " data { int<lower=1> K; // number of mixture components int<lower=1> N; // number of data points real y[N]; // observations } parameters { simplex[K] theta; // mixing proportions real mu[K]; // locations of mixture components real<lower=0> sigma[K]; // scales of mixture components } model { real ps[K]; // temp for log component densities sigma ~ cauchy(0,2.5); mu ~ normal(0,10); for (n in 1:N) { for (k in 1:K) { ps[k] <- log(theta[k]) + normal_log(y[n],mu[k], sigma[k]); } increment_log_prob(log_sum_exp(ps)); } }" fit <- stan(model_code = codigo, data = list(K = 2, N = length(y), y = y), iter=48000, warmup=2000, chains=1, thin=10) En el código anterior no sé si queda claro cómo cada punto $y_i$ sigue una distribución (condicionada a los parámetros) con densidad $\theta_1 \phi(y_i, \mu_1, \sigma_1) + \theta_2 \phi(y_i, \mu_2, \sigma_2)$. ...

3 de marzo de 2016 · Carlos J. Gil Bellosta

Los tres contraargumentos habituales

Hago pública por su interés (parte de) una respuesta de Ramón Díaz Uriarte a un correo mío en el que yo sugería que una vez que sabes especificar un modelo probabilístico para unos datos, p.e., para la regresión lineal, y ~ N(a0 + a1 x1 +..., sigma)), para el test de Student, y0 ~ N(mu, sigma); y1 ~ N(mu + delta, sigma), etc. no hace falta saber qué es lm, ni el test de Student, ni nada. Cero teoría; sobre todo, de teoría tipo recetario. Se especifica el modelo (con una determinada sintaxis), se deja correr la cosa y a interpretar. Su respuesta: ...

29 de febrero de 2016 · Carlos J. Gil Bellosta

¿Hay una epidemia en mi grafo?

Tengo un grafo, g cuyas aristas pueden ser cualquier cosa susceptible de contaminarse. Me pregunto si la contaminación puede contagiarse a través del grafo. Es decir, si A y B están unidos por una arista y A está contaminado, la probabilidad de que B también lo esté es superior a la normal. Se me ocurre probar esa hipótesis así: library(igraph) # mi grafo g <- erdos.renyi.game(10000, p.or.m = 0.001, type="gnp") min.mean.dist <- function(n){ # contaminación al azar contaminados <- sample(V(g), n) # distancias entre aristas contaminadas res <- shortest.paths(g, v = contaminados, to = contaminados) diag(res) <- Inf # distancia al contaminado más próximo min.dist <- apply(res, 1, min, na.rm = T) # y su media mean(min.dist) } # histograma bajo la hipótesis nula res <- replicate(100, min.mean.dist(100)) El resto son detalles que el lector atento sabrá completar por su cuenta.

26 de febrero de 2016 · Carlos J. Gil Bellosta

La democracia no representativa no es representativa

En estadística, una muestra representativa tiene que contener las características relevantes de la población en las mismas proporciones en que están incluidas en tal población (referencia). En estos tiempos, se están poniendo de moda alternativas a la muy tradicional democracia representativa que, en contraposición a ella, no aspiran a serlo. Y su principal problema radica, precisamente, en que no lo son. Lo anterior no es más que una opinión: es la constatación de un hecho. Esta semana pasada, en aras de una versión más directa y asamblearia de la democracia, ha habido en mi barrio un par de eventos en los que en presencia de la alcaldesa de Madrid el uno y del concejal de mi distrito el otro, se han tratado temas que me interesan directamente. Pero, oh, fatalidad, a la hora en que yo (y muchos otros) estamos lejos y ocupados ganándonos el pan. ...

22 de febrero de 2016 · Carlos J. Gil Bellosta

Clases sociales y clústering

El clústering (o análisis de conglomerados, o como se le quiera llamar) es un atajo intelectual. En lugar de estudiar individuos (no necesariamente personas), estos se agrupan de manera más o menos cuestionable, se eligen representantes en cada uno de ellos, cuyas características se atribuyen a continuación a todos sus miembros. No puedo evitar escribir párrafos como el anterior sin que me venga a la nariz ese olor a naftalina de cuando era crío y abría los armarios de mi abuela. ...

16 de febrero de 2016 · Carlos J. Gil Bellosta