Ciencia De Datos

npl(nadaesgratis.es): el subproducto

Estos días me he entretenido repasando el estado del arte en NLP y otras tecnologías que hace un tiempo no toco y que, la verdad sea dicha, cambian —muy a mejor— una barbaridad. A tal fin, descargué al disco duro el texto de todas las entradas de un blog que leía en tiempos, nadaesgratis.es —unas 4388 entradas, menos unas 30 que ya no existen, a lo largo de 13 años y que vienen a ocupar, en texto no comprimido, como treinta quijotes, unos 33 MB— para mis pruebas.

¿Cómo aleatorizan las columnas los RRFF?: un experimento mental y una coda histórica

I. El experimento mental

Tienes una variable binaria y y 100 variables predictoras de las cuales 99 son puro ruido y la última es igual a y. En código,

n <- 1000
y <- as.factor(rbinom(n, 1, .4))
x <- matrix(rnorm(n*100), n, 100)
x[,100] <- y

El objetivo consiste, obviamente, en predecir y en función de x.

II. RRFF

Los RRFF, como es bien sabido, son conjuntos de n árboles construidos sobre los mismos datos. La predicción final se realiza por consenso. Obviamente, si todos los árboles se construyen sobre las mismas filas y las mismas columnas, el resultado es equivalente a construir un único árbol. Por eso, aleatorizan. Aleatorizan filas y columnas. Voy a obviar el asunto de las filas y me voy a concentrar en el de las columnas.

Cuantificación de la incertidumbre

IBM ha desarrollado una iniciativa, Uncertainty Quantification 360, que describe así:

Uncertainty quantification (UQ) gives AI the ability to express that it is unsure, adding critical transparency for the safe deployment and use of AI. This extensible open source toolkit can help you estimate, communicate and use uncertainty in machine learning model predictions through an AI application lifecyle. We invite you to use it and improve it.

En la página del proyecto hay documentación abundante pero recomiendo comenzar por la demo.

¿Quién inventó los "random forests"?

[Este artículo tiene una corrección —tachado en el texto que sigue— posterior a la fecha de publicación original. Véase la entrada "¿Cómo aleatorizan las columnas los RRFF?: un experimento mental y una coda histórica" para obtener más información al respecto.]

Si hacemos caso, por ejemplo, a la gente que estaba allí entonces, la que estaba al día de todo lo que se publicaba en la época, la que conocía personalmente a los presuntos implicados y la que seguramente había tenido constancia previa de la idea en alguna pizarra o en la servilleta de una cafetería, fue Leo Breiman en 2001. Así nos lo cuentan, por ejemplo, Hastie et al. al principio del capítulo 15 de The Elements of Statistical Learning (2ª edición):

Mi apuesta para el larguísimo plazo: Julia

  • Larguísimo, arriba, significa algo así como 10 o 20 años. Vamos, como cuando comencé con R allá por el 2001.
  • R es, reconozcámoslo, un carajal. Pocas cosas mejores que esta para convencerse.
  • No dejo de pensar en aquello que me dijo un profesor en 2001: que R no podría desplazar a SAS porque no tenía soporte modelos mixtos. Yo no sabía qué eran los modelos mixtos en esa época pero, desde entonces, vine a entender y considerar que “tener soporte para modelos mixtos” venía a ser como aquello que convertía a un lenguaje para el análisis de datos en una alternativa viable y seria a lo existente. Y mirad esto.
  • Obviamente, lo de los modelos mixtos no es más que una metáfora. Realmente significa algo así como “el sistema X tiene muchas cosas y su alternativa, Y, es un mero juguete”. Pero no hay nada que impida que Y comience a implementar todo aquello que le falta. Además, mucho más rápida y eficientemente. P.e., ¿cuánto tardó R en dotarse de su gramática de los gráficos? Pues bien, Juilia ya los tiene. (¿Cómo se dice leapfrog en español?)
  • Dicho de otra manera, R ha sido el estado del arte en computación estadística en los últimos años. Ha avanzado por prueba y error. Pero ahora, cualquier rival ya sabe qué tiene que hacer exactamente para llegar a donde está R.
  • Julia corre sobre LLVM. Es decir, que se beneficia automáticamente de cualquier mejora realizada sobre la máquina virtual (si es que se me permite llamar así a LLVM).
  • Esta semana he estado programando en C unas rutinas que tienen que ser llamadas desde R. Pero, ¿no sería el mundo más hermoso no tener que cambiar de lenguaje para tener rendimiento de C?
  • Arriba comparo R y Julia como extremos de un arco (en el que a la izquierda de R quedan aún irrelevancias como SAS o SPSS). Python ocupa una posición intermedia entre ambos. Desde un punto de vista meramente técnico, si alguna dimensión es Python mejor que R, Julia es todavía mejor que Python. Salvo, de nuevo, la cantidad de flecos y cascabeles de los que ya dispone Python y que todavía no están presentes en Julia. Pero, como se ha dicho arriba, desde la perspectiva del larguísimo plazo, es una objeción irrelevante que apunta a un estado transitorio de las cosas.

Y supongo que podría seguir.

Hayek vs "Machín Lenin"

Contexto: Una empresa tiene una serie de técnicos repartidos por todas las provincias que tienen que hacer visitas y reparaciones in situ a una serie de clientes dispersos. La empresa cuenta con un departamento técnico central que asigna diariamente y, fundamentalmente, con herramientas ofimáticas las rutas a cada uno de los técnicos.

Alternativas tecnológicas:

  • Machín Lenin: Unos científicos de datos usan algoritmos de enrutamiento para crear una herramienta que ayuda (o reemplaza total o parcialmente) al equipo técnico de las hojas de cálculo para generar rutas óptimas que enviar diariamente a los técnicos. El sueño húmedo de los burócratas del Gosplán (y de los Kantorovich que en el mundo han sido).
  • Anarcocapitalismo: Unos informáticos crean una herramienta que permite a los técnicos seleccionar sus rutas diarias (sujetas a ciertas restricciones fácilmente adivinables), intercambiarlas entre sí, etc. Sí, como quien se apunta a las clases del gimnasio (¿funciona este símil en general?).

Ejercicio para el lector: Ponderar las ventajas y desventajas de cada aproximación al problema.

PCA robusto

Esta semana he descubierto el PCA robusto. En la frase anterior he conjugado el verbo en cursiva porque lo he pretendido usar con un significado que matiza el habitual: no es que haya tropezado con él fortuitamente, sino que el PCA robusto forma parte de esa inmensa masa de conocimiento estadístico que ignoro pero que, llegado el caso, con un par de clicks, una lectura en diagonal y la descarga del software adecuado, puedo incorporarlo y usarlo a voluntad.

Nuevo vídeo en YouTube: analizo un proyecto de fugas de clientes en Paypal

Acabo de subir a Youtube mi último vídeo:

En él analizo este hilo de Twitter en el que su autor describe un proyecto muy particular —heterodoxo— de ciencia de datos cuyo objetivo consiste identificar y prevenir la fuga de clientes. El hilo ha circulado todo lo viralmente que permite el tema y me ha parecido interesante sacarle un poco de punta.

Nutri-Score: el "algoritmo"

Se hablará mucho de Nutri-Score y de cómo es pernicioso dejar en manos de un algoritmo la decisión sobre la conveniencia o no de ciertos alimentos. Nutri-Score se convertirá en otra de esas malévolas encarnaciones de las matemáticas con vocación de destrucción masiva.

Pero que conste que Nutri-Score es, como algoritmo, solamente esto (fuente):

Al menos, esta vez no se lo podrá tachar de opaco.

Solo el modelo vacío pasa todos los "checks"

Cuando uno crea uno de esos modelos que tanta mala fama tienen hoy en día —y sí, me refiero a esos de los que dependen las concesiones de hipotecas, etc.— solo tiene dos fuentes de datos:

  • La llamada información _estadística _acerca de los sujetos: donde vive, sexo, edad, etc.
  • Información personal sobre el sujeto: cómo se ha comportado en el pasado.

Sin embargo, aquí se nos informa de cómo ha sido multado un banco finlandés por

¿Qué modelas cuando modelas?

Ahora que estoy trabajando en el capítulo dedicado a la modelización (clásica, frecuentista) de mi libro, me veo obligado no ya a resolver sino encontrar una vía razonable entre las tres —¿hay más?— posibles respuestas a esa pregunta.

La primera es yo modelo un proceso (o fenómeno), los datos llegan luego. Yo pienso que una variable de interés $latex Y$ depende de $latex X_i$ a través de una relación del tipo

Máxima verosimilitud vs decisiones

En Some Class-Participation Demonstrations for Introductory Probability and Statistics tienen los autores un ejemplo muy ilustrativo sobre lo lo relativo (en oposición a fundamental) del papel de la máxima verosimilitud (y de la estadística puntual, en sentido lato) cuando la estadística deja de ser un fin en sí mismo y se inserta en un proceso más amplio que implica la toma de decisiones óptimas.

Se trata de un ejemplo pensado para ser desarrollado en una clase. Consiste en un juego en el que el profesor muestra a los alumnos un bote con monedas y les propone que traten de acertar su número exacto. En tal caso, los alumnos se la quedan y pueden repartirse el contenido.

Sobre la "Carta de Derechos Digitales"

No cualquier ministerio sino precisamente el de economía (lo subrayo: es muy relevante para lo que sigue) ha colgado de su portal una (propuesta de) Carta de Derechos Digitales para su pública consulta.

Se trata de un documento confuso, en el que se mezclan propuestas que afectan a ámbitos muy heterogéneos, desde el transhumanismo,

[L]a ley regulará aquellos supuestos y condiciones de empleo de las neurotecnologías que, más allá de su aplicación terapéutica, pretendan el aumento cognitivo o la estimulación o potenciación de las capacidades de las personas.