Ciencia De Datos

Los sospechosos habituales y Python

Llamo sospechosos habituales a esos programas y lenguajes para el análisis de datos distintos de R cuya decreciente popularidad nos parece tan natural a los partidarios de este último. Abundan los análisis de cuotas de mercado tales como What Analytic Software are People Discussing?

¿Cuáles son estos sospechosos habituales? Pues SAS, SPSS y algún otro: Stata, Statistica, Minitab,…

Sin embargo, R tiene competidores más serios a medio plazo. Uno de ellos, el más importante, es Python. Lo veo a mi alrededor: son muchos los físicos, los ingenieros, los informáticos que tienen experiencia en ese lenguaje y, sintiéndose cómodos en él —y les alabo el gusto— quieren utilizarlo para analizar datos cuando les toca.

Sobre el artículo de Domingos

Leí el otro día A Few Useful Things to Know about Machine Learning de Pedro Domingos, que me dejó ojiplático. Os cuento por qué.

El artículo yuxtapone una serie de temas (debidamente organizados en secciones independientes) tales como:

  • Lo que cuenta es la generalización
  • Que, por eso, los datos no son suficientes y hacen falta modelos testables
  • Que el overfitting es un problema serio
  • Que en dimensiones elevadas pasan cosas raras
  • Que hay que tener cuidado con la teoría (en particular, los resultados asintóticos)
  • Que hay que elegir muy bien las variables (las llama features) de los modelos
  • Que es bueno combinar modelos
  • Que la correlación no implica causalidad
  • Etc.

Cosas todas, como se puede apreciar, muy razonables. Por lo que el artículo no habría estado mal hace treinta o cuarenta años. Pero, desafortunadamente, es del 2012.

Experimentos con el paquete gbm

No conocía el paquete gbm. Pero como ahora ando rodeado de data scientists que no son estadísticos…

Bueno, la cuestión es que había que ajustar un modelo para el que yo habría hecho algo parecido a

dat <- read.csv("http://www.ats.ucla.edu/stat/data/poisson_sim.csv")
summary(m.glm <- glm(num_awards ~ prog + math, family = "poisson", data = dat))
# Call:
#   glm(formula = num_awards ~ prog + math, family = "poisson", data = dat)
#
# Deviance Residuals:
#   Min       1Q   Median       3Q      Max
# -2.1840  -0.9003  -0.5891   0.3948   2.9539
#
# Coefficients:
#   Estimate Std. Error z value Pr(>|z|)
# (Intercept) -5.578057   0.676823  -8.242   <2e-16 ***
#   prog         0.123273   0.163261   0.755     0.45
# math         0.086121   0.009586   8.984   <2e-16 ***
#   ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
# (Dispersion parameter for poisson family taken to be 1)
#
# Null deviance: 287.67  on 199  degrees of freedom
# Residual deviance: 203.45  on 197  degrees of freedom
# AIC: 385.51
#
# Number of Fisher Scoring iterations: 6

como en esta página.

Nueva edición de mi taller de R y Hadoop en Zaragoza

Los días 17 y 18 de enero impartiré una versión extendida (¡siete horas!) de mi taller de R y Hadoop en Zaragoza. Para los interesados:

El temario será el mismo que en las ediciones anteriores aunque en esta ocasión habrá más tiempo para profundizar en algunos conceptos, realizar ejercicios adicionales, etc.

Importancia de variables en árboles

Los árboles (o árboles de inferencia condicional) valen fundamentalmente para hacerse una idea de cómo y en qué grado opera una variable en un modelo controlando por el efecto del resto. Su valor reside fundamentalmente en la interpretabilidad.

No obstante lo cual, no es infrecuente construir árboles muy grandes. Y el tamaño dificulta censar qué variables y en qué manera aparecen. Por eso me vi obligado recientemente a crear un pequeño prototipo para extraer el peso de las variables de un árbol.

Un récord personal

El otro día, casi por error, cargué este dataframe en R:

dim(raw)
# [1] 115318140         4

Es todo un récord personal logrado en un servidor con 24GB de RAM bastante caro.

El anterior estaba en otro de algo así como 20 millones de filas y unas 6 o siete columnas. Eso sí, logrado en tiramisu, mi ordenador personal de 8GB de RAM de 400 euros (monitor incluido).

Os preguntaréis si pude hacer algo con ese monstruo. La verdad es que sí: pude muestrear un 10% de las filas y trabajar con ellas sin problemas.

"Datathon for Social Good" de Telefónica

El Datathon for Social Good es una iniciativa de Telefónica para desarrollar aplicaciones analíticas que redunden en un bien social que está teniendo lugar estos días (¡aún hay tiempo para registrarse!).

Estos son los tres tipos de datos con los que se contará:

  • Recuento de personas en el área metropolitana de Londres durante 3 semanas, por sexo, edad y grupos para cada área en rango horario. Datos inferidos de cuántos están en su hogar, en trabajo o de visita.
  • Datos abiertos y geo-localizados de medios de transporte (autobús, metro, bicicleta). Admisiones en hospitales. Localizaciones de servicios de emergencia.
  • Datos no-localizados de Twitter con el hash-tag “London”. Cantidad representativa de tuits por hora.

Además, la competición será inaugurada con una conferencia a cargo del profesor Alex “Sandy” Pentland del MIT y Gavin Starks, director del Open Data Institute el martes 3 de Septiembre.

Mi definición de "big data"

No sin descaro, me atrevo a aportar una definición alternativa a eso que llaman big data y que yo traduzco en ocasiones como grandes datos.

No obstante, para comprenderla, considero necesaria una pequeña digresión de dos párrafos —con la que muchos, espero, no aprenderán nada que no traigan ya sabido— sobre los lenguajes de programación declarativos e imperativos.

En los primeros, programar consiste esencialmente en escribir con cierta notación aquello que quieres: la suma de los elementos de un vector, el promedio de los valores de una columna de una tabla, la suma de los saldos de los clientes de Soria, etc. El intérprete se encarga de servirte los resultados en la proverbial bandeja.

Sobre los límites de la minería de datos

Guardaba en la cartera un artículo que ya pronto cumple sus cinco años. Sirve de contrapunto a toda esa literatura que describe la minería de datos como una suerte de panacea, la cómoda senda hacia un futuro de armonía y color.

Se trata de una entrevista a Peter Fader sobre a lo que la minería de datos alcanza y no alcanza.

Los estadísticos se sienten relativamente cómodos ascendiendo de lo particular a lo general (por ejemplo, calculando una media). En contraposición, la promesa de la minería de datos consiste en la predicción del comportamiento de los individuos, de cada individuo, a partir de modelos construidos sobre repositorios de datos cada vez más extensos y perfiles más detallados de cada sujeto.

Las ocho peores técnicas analíticas

La noticia es vieja y posiblemente conocida de muchos. Además, procede de esta otra bitácora. Pero no está de más dejar constancia de ella aquí.

Estas ocho técnicas son:

  • La regresión lineal
  • Los árboles de decisión tradicionales (yo los uso mucho, sin embargo, como herramienta descriptiva)
  • El análisis discriminante lineal
  • Las k-medias para construir clústers (véase esto)
  • Las redes neuronales (por su difícil interpretación, inestabilidad y su tendencia al sobreajuste)
  • La estimación por máxima verosimilitud, particularmente cuando la dimensionalidad del problema es elevada
  • Naive Bayes (véase esto)