ciencia de datos

Anomalías, cantidad de información e "isolation forests"

Identificar a un tipo raro es sencillo: el que lleva tatuada a su madre en la frente. Identificar a un tipo normal es más complicado: altura… normal, pelo… ¿moreno? Es… como… normal, ni gordo ni flaco… Identificar transacciones de tarjeta normales es prolijo: gasta más o menos como todos en supermercados, un poco más que la media en restaurantes, no tiene transacciones de gasolineras… Identificar transacciones fraudulentas es (o puede ser) sencillo: gasta miles de euros en las farmacias de los aeropuertos y nada en otros sitios.

Explicación de los scorings de "ciertos" modelos

Esta entrada la hago por petición popular y para rematar de alguna manera lo que incoé hace unos días. Seré breve hasta lo telegráfico: Tomo las observaciones con scorings más altos (en un árbol construido con ranger y cariño). Veo cuáles son los árboles que les asignan scorings más altos. Anoto las variables implicadas en las ramas por donde bajan las observaciones (1) en los árboles (2). Creo una matriz positiva: filas = casos, columnas = variables, valores = conteos.

Explicación de modelos como procedimiento para aportar valor a un "scoring"

El principal asunto preambular en todo lo que tiene que ver con la explicación de modelos es ético (ético en la versión ñoña de la palabra, hay que dejar claro). Pero tiene sentido utilizar técnicas de explicación de modelos para aportarles valor añadido. En particular, un modelo puede proporcionar un determinado scoring, pero se le puede pedir más: se le puede pedir una descripción de los motivos que justifican ese scoring, particularísimanete, en los casos más interesantes: los valores más altos / bajos.

Hoy sí, sobre tetas y culos (e Instagram, como excipiente)

Hoy voy a aprovechar una excusa peregrina para hablar de lo que por algún motivo se me antoja imperiosamente, que son tetas y culos. Que (este pronombre es un puntero a excusa) es [Nota: aquí quise incrustar un tuit de Analía Plaza que, aparentemente, fue borrado por su autora meses después.] Lo primero que tengo que decir al respecto es que las tetas y culos que asocia al Cabo de Gata el Instagram de quienqueira que haya tomado esas capturas son prácticamente las mismas que en el mío (y otro día os cuento por qué tengo Instagram, porque ni lo sabéis ni os lo podéis imaginar), a saber,

Rarezas: ML algebraico

Alguien (¡gracias!) me pasa Algebraic Machine Learning, que abunda sobre lo que escribí hace varios años. Confieso no haber entendido gran cosa en una primera (y última) lectura diagonal, pero tal vez alguno de mis lectores sí.

Análisis de arquetipos

De eso trata un artículo de los noventa de Breiman. Es decir, de encontrar dentro de conjuntos de datos conjuntos finitos de sujetos puros que permiten representar cualquier otro como una mezcla (o combinación convexa) de ellos. Ideas a vuelapluma: Cuando leo sobre el asunto, la palabra que no deja de aparecérseme es outlier. Curiosamente, la busco en el texto y se resiste a aparecer. Pero me aterra la posibilidad de estar caracterizando a los sujetos normales (¿aún se puede usar la expresión?

Regresión polinómica vs redes neuronales

Hace un tiempo se publicó un artículo, Polynomial Regression as an Alternative to Neural Nets, que se anunciaba como lo que anuncia su título: que usar redes neuronales (clásicas, al menos), equivalía a hacer regresión polinómica. El quid de la cosa es cosa simple, de primeros de carrera. Solo que los autores solo lo desvelan después de haber puesto a prueba la perseverancia de los lectores con montañas de frases que aportan poco.

AI (o ML, o DM, o...) y la "crítica de Lucas"

Supongo que ya sabéis la historia de los pañales y la cerveza (¡y acabo de averiguar que pudiera haberse publicado en el 92!): dizque usando DM, ML o AI (dependiendo de la década en que se cuente la historia) se ha identificado una correlación entre las ventas de cerveza y pañales. Una manera de proceder que me espantaba cuando comencé a trabajar en esto pero a la que me he ido acostumbrando con el tiempo es la siguiente.

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.

RuleFit

El otro día me sentí culpable porque me preguntaron sobre RuleFit y tuve que hacer un Simón (aka, me lo estudio para mañana). Y como mañana fue antier, lo que sigue. Hay descripciones estándar de RuleFit (p.e., esta o la del artículo original) pero me voy a atrever con una original de mi propio cuño. Comenzamos con lasso. Lasso está bien, pero tiene una limitación sustancial: se le escapan las iteracciones (vale, admito que lo anterior no es universalmente exacto, pero lo es casi y eso me vale).

Bagging y boosting, hermanados

Ambas son heurísticas para construir modelos buenos a partir de la combinación de modelos malos. Con la diferencia —¿recordáis los condensadores de la física de bachillerato?— de que en un caso se colocan en paralelo y en el otro, en serie. Entran Friedman y Popescu (algoritmo 1): Y, tachán: Bagging, si $latex \nu = 0$ Boosting otherwise.

Explicación de modelos

Este es el primer año en el que en mi curso de ciencia de datos (hasta ahora en el EAE; a partir del año que viene, vaya uno a saber si y dónde) introduzco una sección sobre explicación de modelos. Hay quienes sostienen que, mejor que crear un modelo de caja negra y tratar luego de explicar las predicciones, es recomendable comenzar con un modelo directamente explicable (p.e., un GLM). Por mucha razón que traigan, vox clamantis in deserto: hay y seguirá habiendo modelos de caja negra por doquier.