Datanalytics: segunda posición en competición internacional de minería de datos

Me es más que grato anunciar que he alcanzado la segunda posición en el IEEE ICDM Contest: TomTom Traffic Prediction for Intelligent GPS Navigation (sección de tráfico): La competición constaba de tres partes (o subcompeticiones) distintas relacionadas con la predicción de ciertos aspectos relacionados con el tráfico en Varsovia: una para predecir el número de coches circulando por diez segmentos de calle de Varsovia a partir de recuentos durante los minutos previos; otra para predecir segmentos de calle donde se van a producir atascos a partir de la lista de otros que han ido atascándose previamente y una final para predecir la velocidad media del tráfico en determinadas calles a partir de datos de posición y velocidad enviados por sistemas de GPS instalados en un porcentaje de los vehículos a un servidor central. He logrado la segunda posición en la primera de ellas (usando R, obviamente) y espero redactar pronto un informe sobre la estrategia y métodos utilizados de cara a su posible publicación en las actas de la IEEE International Conference on Data Mining 2010 (ICDM10), que tendrá lugar en Sydney en diciembre.

8 de septiembre de 2010 · Carlos J. Gil Bellosta

Más sobre la integración de R y RapidMiner

Si el otro día anuncié la próxima integración de RapidMiner con R, hoy quiero dar a conocer un vídeo en el que se ilustra: Tiene buena pinta, la verdad.

8 de septiembre de 2010 · Carlos J. Gil Bellosta

Más sobre migraciones de SAS a WPS

El otro día escribí sobre WPS, un clon de SAS con unos costes de licencia sustancialmente menores. KDNuggets ha publicado los resultados de una encuesta entre usuarios actuales y potenciales de SAS en la que se les preguntaba por su disposición a migrar a dicha plataforma. Habedlos: ¿Cuál será la anomalía de la empresa española que no tengo noticia de ningún ERE en SAS? ¡Con la que está cayendo! Nota: he modificado la página de Datanalytics y ahora, en la sección de servicios, dentro del apartado de consultoría SAS, detallo específicamente la migración a WPS como uno de ellos. ¡A ver si pronto suena el teléfono!

7 de septiembre de 2010 · Carlos J. Gil Bellosta

Una tarea para mis lectores: ¡resultados!

El otro día dejé planteada una tarea para mis lectores (que han sido menos diligentes que yo, incluso). Trataba de una comparación entre varios métodos para acceder a diccionarios (o hashes) de datos desde R para tratar de identificar el más eficiente en términos de velocidad de acceso. Acá van los resultados: n <- 100000 dat <- data.frame( id = paste( "id", 1:n, sep = "_" ), valor = rnorm( n ), stringsAsFactors = F ) n.sample <- 20000 seleccion <- sample( dat$id, n.sample ) ### Con vectores: system.time( res <- sapply( seleccion, function( x ) dat$valor[ dat$id == seleccion ] ) ) # user system elapsed # 84.79 5.24 90.14 ### Con listas: mi.lista <- sapply( dat$valor, I, simplify = F ) names( mi.lista ) <- dat$id system.time( res <- sapply( seleccion, function( x ) mi.lista[[x]] ) ) # user system elapsed # 19.15 0.00 19.20 ### Con entornos: mi.entorno.0 <- new.env() invisible( sapply( 1:n, function(i) assign( dat$id[i], dat$valor[i], env = mi.entorno.0 ) ) ) system.time( res <- sapply( seleccion, function( x ) mi.entorno.0[[x]] ) ) # user system elapsed # 67.89 0.03 68.06 ### Con el paquete data.table: require( data.table ) tmp.dat <- dat tmp.dat$id <- factor( tmp.dat$id ) mi.data.table <- data.table( tmp.dat ) setkey( mi.data.table, id ) system.time( res <- sapply( seleccion, function( x ) mi.data.table[ J(x) ]$valor ) ) # user system elapsed # 371.07 25.91 400.39 ### Con hashes: mi.entorno.1 <- new.env( hash = T ) invisible( sapply( 1:n, function(i) assign( dat$id[i], dat$valor[i], env = mi.entorno.1 ) ) ) system.time( res <- sapply( seleccion, function( x ) mi.entorno.1[[x]] ) ) # user system elapsed # 0.14 0.00 0.14 Los números son tan concluyentes que me excusan de la necesidad de ofrecer explicaciones y distingos. Aunque para que mis lectores no tengan que ir subiendo y bajando por la entrada para realizar comparaciones, los resumo en un gráfico: ...

6 de septiembre de 2010 · Carlos J. Gil Bellosta

El vídeo de la conferencia "alRededores" disponible en DailyMotion

Como nunca conseguí ver el vídeo de la conferencia que di en las I Jornadas de Usuarios de R en noviembre del 2009 directamente desde los servidores de la Universidad de Murcia, lo he subido a DailyMotion. Los 60 minutos de la conferencia están partidos en tres partes que pueden verse consecutivamente aquí. Nota: al final de cada parte aparece un enlace para continuar a la siguiente.

5 de septiembre de 2010 · Carlos J. Gil Bellosta

Paquetes estadísticos: una anécdota sin moraleja

Un banco que gana mucho dinero quiso gastarse un nada desdeñable pellizco de sus ingresos contratando a unos consultores muy resabidos de un país extranjero donde, es fama, todos saben mucho. El resultado fue una documentación ininteligible y un larguísimo programa en VB sin apenas comentarios que se demoraba horas en realizar una simulación trivial. El banco, cansado de quemar ciclos de CPU en vano, encargó a una consultora local la reimplementación del algoritmo en un afamado paquete estadístico. A falta de documentación, la reimplementación hubo de hacerse tratando de adivinar qué demonios hacía el código original. Prácticamente, fue un proceso de ingeniería inversa. ...

4 de septiembre de 2010 · Carlos J. Gil Bellosta

Muestreando bases de datos

Aunque el concepto de minería de datos esté casi indisolublemente asociado al de bases de datos enormes, en la práctica, el análisis y desarrollo de los modelos se realizan sobre muestras pequeñas. Esencialmente, para lo que nos ocupa, es pequeño un conjunto de datos que cabe en la RAM de un PC. Actualmente son habituales las máquinas con 1 GB. A modo de comparación, la base de datos de clientes de una de las mayores compañías españolas y en la que trabajé hace un tiempo venía a ocupar 5 GB. ...

2 de septiembre de 2010 · Carlos J. Gil Bellosta

El paquete multicore de R

Tengo acceso a una máquina que, aunque anda un poco corta de memoria, cuenta con ocho CPUs. Tenía unas simulaciones bastante pesadas que correr y quise aprovechar su naturaleza perfectamente paralelizable. Y, de paso, hacer con R lo mismo por lo que he visto a un consultor de SAS cobrar a razón de 3.000 dólares diarios. En el fondo, es una trivialidad. Supongamos que la función que implementa la simulación se llama foo. Habitualmente, haríamos ...

1 de septiembre de 2010 · Carlos J. Gil Bellosta

Anuncio de la integración de Rapidminer y R

RapidMiner es, posiblemente, la plataforma de minería de datos libre que mejor reputación goza. Hasta la publicación de la versión 5 le veía un pequeño problema: tenía una interfaz bastante poco intuitiva. Hasta hace pocos días le veía otro: no podía extenderse —al menos de una manera obvia— programando en Java o, preferiblemente, R. Sin embargo, el módulo de integración de R con Rapidminer ya está listo y su lanzamiento va a ser el plato fuerte de RCOMM 2010, la conferencia de usuarios de Rapidminer (oficialmente, RapidMiner Community Meeting And Conference). ...

31 de agosto de 2010 · Carlos J. Gil Bellosta

Si yo fuera...

Si yo fuera responsable de una empresa de consultoría de, digamos (por mencionar un número redondo), 7.000 empleados, propondría la siguiente iniciativa: Crear un blog público de asuntos relacionados con la actividad de la empresa. Invitar a los empleados a mandar posibles entradas (originales, etc.). Cada día, publicar la mejor de las entradas recibidas. Recompensar a su autor con alguna chuche: un día de vacaciones, 100 euros, etc. ¿Ventajas? Supongo que muchas. De hecho, IBM patrocina una iniciativa similar en la que se publican artículos muy interesantes. ...

29 de agosto de 2010 · Carlos J. Gil Bellosta