Ciencia De Datos

Así se inventó el nudo gordiano del "hombre medio"

Lo cuenta muy bien Todd Rose en How the Idea of a ‘Normal’ Person Got Invented.

Hay tres grandes eras en la estadística moderna:

  • La queteliana, resumida en la imagen del hombre medio: existe un prototipo sobre el que, tal vez, se consideran variaciones. Es decimonónica, pero colea.
  • La kamediana, que es una versión pizza partida en ocho de la anterior. Es de mitad del siglo pasado y perdura en paleomentes.
  • La contemporánea, que contempla cada sujeto en su individualidad (aunque inserta en su circunstancia). Es propia del big data bien hecho.

Que se desenvuelva exige deshacer (¿cortar a tajos?) un par de nudos gordianos.

Un párrafo afortunadísimo sobre las "nuevas aptitudes"

Traduzco:

Las nuevas aptitudes que tanto atraen la atención de los medios no sirven para resolver más eficazmente el problema de la inferencia; son puras técnicas de supervivencia para gestionar los artefactos inducidos por la computación distribuida a gran escala. Lidian con las enormes restricciones que impone el mundo de los sistemas multiproceso y distribuidos sobre los algoritmos. En este mundo tan constreñido, el elenco de algoritmos utilizables es tan limitado si se lo compara con el disponible en el de un único procesador, que es inevitable adoptar técnicas estadísticas que hubieran sido tachadas de rudimentarias, si no de inadecuadas, en otros tiempos. Estos problemas consumen nuestro tiempo y energía, deforman nuestro criterio sobre lo que resulta adecuado y nos desvían de las estrategias de análisis de datos que habríamos aplicado de oficio en otras circunstancias.

Nueva charla: "Antikaggle: contra la homeopatía de datos"

La impartiré el día 2017-02-10 en el Campus de Google dentro del Machine Learning Spain Meetup y la he resumido así:

Kaggle es una plataforma fantástica. Lo sabemos y nos lo han hecho saber innumerables veces. Esta charla es, sin embargo, una revisión crítica sobre lo que puede enseñar y lo que no; sobre el valor que aporta (entre otros, a los participantes) y el que no y sobre, finalmente, la ciencia de datos y una degeneración suya que ha encontrado en Kaggle otra vía de propagación y que he dado en llamar homeopatía de datos.

Repensando la codificación por impacto

R

Hay una entrada mía, esta, que me ronda la cabeza y con la que no sé si estoy completamente de acuerdo. Trata de justificar la codificación por impacto de variables categóricas en modelos lineales (generalizados o no) y cuanto más la releo, menos me la creo. O, más bien, comienzo a cuestinarme más seriamente contextos en los que funciona y contextos en los que no.

Pero comencemos por uno simple: los árboles. Es moda pensar que, dado un predictor categórico, un árbol explora todas las permutaciones posibles de categorías y que por eso algunas implementaciones de, por ejemplo, bosques aleatorios no permiten variables categóricas de más de cierto número no particularmente generoso de niveles.

Una fina, tenue, somera capa de sintaxis

Estuve el otro día en una charla de José Luis Cañadas en el grupo de usuarios de R de Madrid sobre sparklyr. Hoy en otra de Juan Luis Rivero sobre, esencialmente, lo mismo, pero esta vez con Python. Y podría escribir “etc.”.

evolucion_convergente

Me centraré en la de José Luis, aunque podría decir lo mismo de cualquiera de las otras. No había trabajado con sparklyr. No soy siquiera fan de dplyr (aunque no es que no se lo recomiende a otros; es simplemente, como tantas cosas, que soluciona problemas que no tengo). Pero la seguí sin mayores problemas. Lo que tenía de nuevo era una fina, somera capa de sintaxis que enlazaba fundamentos con fundamentos.

Las dos culturas, con comentarios de 2016

En 2012 mencioné de pasada ese artículo de Breiman al que hace referencia el título. Estaba bien, tenía su gracia.

leo_breiman

Lo he visto utilizar recientemente como punto de partida en discusiones sobre lo distinto o no que puedan ser la ciencia de datos y la estadística. Y espero que, efectivamente, se haya usado como punto de partida y no como otra cosa porque el artículo tiene 15 años (cerrad los ojos y pensad dónde estabais en 2001 y cómo era el mundo entonces).

Homeopatía de datos

Me mandan un whatsapp. Es de alguien que está en una charla de ciencia de datos. Acaba de oír decir al ponente que en una de esas competiciones de Kaggle le ha servido optimizar a lo largo del conjunto de semillas aleatorias. Sí, del set.seed().

homeopatia_funciona

Supongo que al ponente le funcionaría.

El éxito de la ciencia de datos parece tener aparejada una plaga de homeopatía de datos. Algo habrá que hacer. Por lo pronto, emplear el escepticismo para algo más que para asestar grandes lanzadas a moros muertos.

El principio de información

Tramontando el recetariado, llegamos a los principios. Y el más útil de todos ellos es el de la información (o cantidad de información).

(Sí, de un tiempo a esta parte busco la palabra información por doquier y presto mucha atención a los párrafos que la encierran; anoche, por ejemplo, encontré un capitulito titulado The Value of Perfect Information que vale más que todo Schubert; claro, que Schubert todavía cumple la función de proporcionar seudoplacer intelectual a mentes blandas y refractarias al concepto del valor de la información perfecta).

Recetas y principios

En algunas de las últimas charlas (de ML) a las que he asistido se han enumerado recetas con las que tratar de resolver distintos problemas. Pero no han explicado cuándo ni por qué es conveniente aplicarlas. Incluso cuando se han presentado dos y hasta tres recetas para el mismo problema.

receta

Me consta que parte de la audiencia quedó desconcertada y falta de algo más. ¿Tal vez una receta para aplicar recetas? ¿De una metarreceta?

k-medias es como las elecciones; k-vecinos, como los cumpleaños

El otro día asistí a la enésima confusión sobre k-medias y k-vecinos. Que lo es, más en general, sobre el clústering contra modelos locales de la clase que sean, desde k-vecinos hasta el filtrado colaborativo. Veamos si esta comparación que traigo hoy a mis páginas contribuye a erradicar dicha confusión.

k-medias es como las elecciones. Hace poco tuvimos unas en España. Alguien decidió (aproximadamente) que k = 4 y nos pidió, a nosotros, punticos del espacio, identificar el centroide más próximo a nosotros para que lo votásemos. Pues eso, la misma frustración que muchos dizque sintieron teniendo que elegir entre partidos/centroides subjetivamente igual de alejados de los intereses de uno es la que sienten nuestros punticos cuando los procrusteamos para asociarlos al totum revolutum de los clientes estrella, etc.

Validación cruzada en R

Está de moda usar caret para estas cosas, pero yo estoy todavía acostumbrado a hacerlas a mano. Creo, además, que es poco instructivo ocultar estas cuestiones detrás de funciones de tipo caja-negra-maravillosa a quienes se inician en el mundo de la construcción y comparación de modelos. Muestro, por tanto, código bastante simple para la validación cruzada de un modelo con R:

# genero ids
ids <- rep(1:10, length.out = nrow(cars))

# Nota: da igual si nrow(df) no es múltiplo de 10

# los aleatorizo
ids <- sample(ids)

# esto devuelve una lista de dfs:
preds.cv <- lapply(unique(ids), function(i){
  preds <- predict(lm(dist ~ speed,
    data = cars[ids != i,]), cars[ids == i,])
  data.frame(
    preds = preds,
    real = cars[ids == i,]$dist)
})

# "apilo" los dfs:
preds.cv <- do.call(rbind, preds.cv)

# calculo el rmse
rmse <- sqrt(mean((preds.cv$preds - preds.cv$real)^2))

Sí, estoy usando el RMSE aunque sea un detractor del mismo.

La intersección de lo interesante, lo sorprendente, lo cierto y lo basado en datos

Me interesan, obviamente, los problemas interesantes.

Me interesan los problemas en que puedo argumentar basándome en datos. Para ello, obviamente, de nuevo, tienen que existir datos con los que tratar de dar respuesta a esas preguntas interesantes del párrafo anterior.

Me interesa que los datos revelen respuestas no obvias, que no sepamos ya de antemano. Me interesa que los datos me sorprendan.

Me interesa, obviamente, que esas respuestas sorprendentes a preguntas interesantes basadas en datos sean ciertas. O que tengan visos de certeza. Cuando menos, que no se caigan en la primera revisión crítica.

DBSCAN, ¿algo nuevo bajo el sol?

Ha sido en latitudes otras que las habituales que he aprendido y leído (mas no probado) sobre DBSCAN. Se conoce que es un nuevo (aunque ya tiene sus añitos: algo así como 20) método de clústering.

Por un lado, se agradecen las novedades.

Por el otro, tengo cierta aversión a las cosas que proceden de los congresos de Knowledge Discovery and Data Mining, que es donde fue publicado el algoritmo.

En esencia, funciona así: se fijan dos parámetros, e y n. Un punto es central si a distancia e o menor tiene, al menos, otros n puntos. Los clústers los conforman: