Mucho Data – Cuando los datos crecen – ¿Qué está pasando ahora mismo?



Mucho Data – Cuando los datos crecen – ¿Qué está pasando ahora mismo?

1 1


mucho-data

Mucho data, big data en Open E2 Arena

On Github JJ / mucho-data

Mucho Data

Cuando los datos crecen

Por JJ Merelo / @jjmerelo

En el programa decía que iba a hablar de software libre también. Pero es que, como leí hace un par de dias en Twitter hoy en día el software libre ha crecido hasta tal punto que es la opción por omisión en muchos casos (salvo, quizás, consumo). En general, todas las herramientas que voy a comentar son libres; si alguna no lo es, lo diré explícitamente.
Mucho data es un viaje data, que es como decimos los granaínos, como la alcaldesa de Elche, por ejemplo. Como en el chiste. "¿Quieres un viaje a Túnez?" "¿Para qué quiero yo tanto pescado?"
La Psicohistoria fue propuesta por Asimov en su trilogía de la fundación y viene a decir que la historia de una masa de gente suficientemente grande puede ser predicha, incluso con mucha antelación. Pero podía haber ciertas desviaciones, como por ejemplo...
El Mulo no se podía predecir por tal psicohistoria. Y la lió pardísima, claro. La idea del big data no es trabajar con lo que pueda hacer una persona, o un chisme, individualmente, sino...
Cuando hay mucha gente, o dispositivos, usando la Internet y produciendo datos es cuando nos encontramos con el big data. La actividad online siempre deja una huella, que, si nos dejan, podemos analizar. Pero el big data no sólo va de la actividad online de la gente; también en física, en finanzas, en ventas. Se ha popularizado el big data de comportamientos online simplemente porque está accesible para el público en general de varias formas posibles. No puedes acceder a las ventas diarias del Mercadona ni a cuanta gente hace streaming de qué serie del canal de series de Movistar, por ejemplo. Sólo puede el señor de Mercadona o don Movistar.
Big data tiene una definición muy específica: Técnicamente se trata de trabajar con múltiples filas y columnas, como en estas sillas. Todo el tiempo añaden sillas. Se sienta gente. ¿Cuánta gente hay sentada en la 6ª fila? ¿Cuánta gente hay delante mío? ¿Hay algún patrón en las sillas que indique que alguien con la cabeza especialmente grande se ha sentado y no deja ver al resto? El que sea big data depende de las filas, las columnas y del número de las mismas que se añaden cada cierto tiempo.
Se habla de 5 uves: velocidad, variedad, veracidad, volumen y variabilidad, aparte de una C, que es complejidad. Lo que ocurre es que, en general, el común de los mortales, los profes, los que montan apps y webs, no tratan con el big data directamente. Se suele tratar con el resultado de procesar esas técnicas de big data; por eso se habla con más generalidad de ingenieros de datos o científicos de datos. Pero, ¿qué genera tantos datos?
Cada vez que buscamos se está generando un dato que además va geolocalizado y por supuesto asignado a nuestro usuario de Google. Cada vez también que encendemos un móvil Android (y supongo que también otros) la localización se almacena y se actualiza cada cierto tiempo si tienes activado Google Now. Cada vez que se visita una página en la Wikipedia también se queda registardo, o una wetb cualquiera (pero en la Wikipedia podemos saberlo). También hay grandes cantidades de datos de origen biológico, procedentes del análisis de genomas, por ejemplo; datos de tráfico, datos de la administración (a veces disponibles como datos abiertos), metadatos de mensajes en sistemas como WhatsApp... uno genera datos sin saberlo por su actividad online, pero también se genera en todo tipo de actividades, sobre todo si la "actividad" es gratuita; recuerda que si un producto es gratis, el producto eres tú. No siempre son ni abiertos ni un viaje de datos, pero pueden llegar a serlo con el tiempo o si los fusionamos con otros. Y ahora queremos ponernos a currar con ellos, así que ¿de dónde sacamos los datos?

Aquí tenía que venir una transpa de APIs, el paté, ya sabéis, Apis, Papis. Era lo que iba buscando pero me encontré una historia que, curiosamente, tiene que ver con el big data y la big family. Buscando imágenes para ilustrar esta transparencia, no encontré ninguna buena de patés Apis. Así que, no reparando en esfuerzos para tener una transparencia chachi, me fui al Mercadona de al lado de Informática a buscar paté Apis, tomate triturado Apis o lo que fuera (Apis). No lo encontré (y saqué esta foto en vez de la anterior). Pero buscando la razón por la que un elemento tan fundamental de las meriendas patrias no estuviera en el Mercadona, me encontré con esta noticia que habla de como la big family de Ruiz Mateos trató de engañar a los algoritmos big data de Mercadona mandando a miembros de la familia extensa a pedir o comprar sus productos o reclamarlos en caso de que no lo encontraran al enterarse que Mercadona iba a rescindir el contrato con ellos. Lo que ocurre es que trataron de difundir la campaña por correo electrónico y, por equivocación, lo enviaron a la propia Mercadona. Algo muy común en las big family, que siempre hay una prima que se llama Mercadona o trabaja en el Mercadona o que se llama Mercedes pero, por su afición a los productos Hacendado, le llaman Mercedona. O algo.

Los denominados APIs, o interfaces de programación de aplicaciones (application programming interface), permiten extraer información ya procesada sobre la actividad online en una serie de servicios en la web. Por ejemplo, los APIs permiten recuperar tweets en Twitter (es lo que las apps de Twitter como Tweetdeck o Hootsuite), likes en Facebook, visitas en la Wikipedia y una gran cantidad de cosas sobre la actividad pública de la gente. También se puede acceder a otro tipo de APIs, recordad que el big data no se refiere sólo y exclusivamente a la gente: por ejemplo datos de acciones en bolsa o datos de tráfico o datos de todo tipo, desde el tiempo hasta archivos. Por cierto, vemos por primera vez R, el lenguaje que se usa, por excelencia, para trabajar con los datos. Lo veremos más adelante.

Por ejemplo, usando un API muy simple de la Wikipedia se pueden descargar las visitas a las páginas día a día. Aquí las visitas a la página de la Universidad de Alicante y la de la Miguel Hernández, por ejemplo.

De hecho, la Wikipedia da acceso a una buena cantidad de datos de una forma sencilla. Viene a ser una de las banderas de la nueva web (que ya no sé si va por la dos o la tres o ya ni siquiera se llama web): se crean plataformas, no sólo sitios con contenido. También es un signo de transparencia: por eso se puede acceder de esa forma a los datos de la Wikipedia (y no tanto a los de FB, por ejemplo).

for (year in (2010:2014)) {
    for (month in (1:12)) {
        theURL <- "http://stats.grok.se/json/es/"
        theURL <- paste0(theURL, year) # Adapta cosas        
        theURL <- paste0(theURL, month) 
        theURL.ugr <- paste0(theURL, "/Universidad_Miguel_Hernández")
        rawData.ugr <- getURL(theURL.ugr)
        data.UMH <- fromJSON(rawData.ugr)
        df.UMH <- data.frame(Date=names(data.UMH$daily_views),Views=data.UMH$daily_views)
        df.UMH <-  df.UMH[df.UMH$Views > 0,]
        df.UMH$Date <- as.Date(df.UMH$Date)
        alldata.UMH <- rbind( alldata.UMH, df.UMH )
    }
}
alldata.UA <- alldata.UA[order(alldata.UA$Date),]
Es sólo parte del programa, que se puede descargar de aquí; también se puede consultar la historia de R, es decir las pruebas, los datos y el resto de los comandos ejecutados. Recordad, todo software libre. En cualquier caso, si no entendéis del tema no tenéis que preocuparos: está escrito en un lenguaje llamado R, que es un lenguaje que os vais a encontrar una y otra vez cuando se habla de ciencia de datos y de big data. La idea es que los APIs o interfaces de programación publican los datos en un formato estándar, que se pueden usar desde cualquier lenguaje de programación, en particular este R.
Pero no todo el mundo es tan fácil y accesible. Scraping es extraer datos de dónde estén publicados sin, en principio, intención de que se descarguen.

¿Cuánto pesa el Elche CF?

Los pesos se han extraído de la página oficial del Elche y no ha sido nada fácil, la transparencia más complicada (después de la del paté; al menos en este no tuve que ir al Mercadona y de camino comprar plátanos). El más delgado es Víctor, un medio, y el más gordo Tyton, uno de los porteros. E igual sería interesante ver qué ocurre con el resto de los equipos y cómo se distribuyen los pesos según la posición.
my $url = "http://www.elchecf.es/plantilla";
my $dom = Mojo::DOM->new( get $url );
my $jugadores =  $dom->find("div.titulo_datos_comunes");
my @pesos;
for my $p ( @$jugadores ) {
  if ( $p->content() =~ /Peso/ ) {
    my $peso;
    if ( $p->content() =~ /div/ ) {
      ($peso) = ( $p->content() =~ /o: (\d+)/ );
    } else {
      ($peso) = ( $p->content() =~ /(\d+)/ );
    }
    push @pesos, $peso;
  }
}
say("Indice;Peso");
my $i = 1;
say join("\n",map($i++.";".$_, @pesos ));
Seguro que la mayoría no entiende nada. Si no entendéis nada, no miréis. Si R es complicado, este lenguaje, llamado Perl, ya es la leche. ¿Alguien lo ha usado? Pues debería, porque hacer esto, rascar información de una página es relativamente (muy relativamente, de hecho), simple. También se puede hacer en R, por cierto, pero no es tan fácil (o si lo es, no tengo ni idea de cómo hacerlo; cada uno usa las herramientas que le resultan más familiares). Perl es software libre y todas las librerías, o colecciones de procedimientos para hacer este tipo de cosas, son también software libre.
Hace falta un verdadero detective para extraer los datos. Un detective como Batman... La información qeu hay en una página web está semiestructurada, es decir, tiene una cierta estructura, pero a veces no es totalmente regular o no se puede distinguir a simple vista. Los números están semiocultos, muchas veces simplemente por tener haber hecho la página web a mano, o semiautomáticamente con algún retoque, otras veces por empeño explícito para ocultar datos, como suele suceder en ciertos servicios, empresas o ayuntamientos. La cuestión es que si está en la web y tú lo puedes ver, en la mayoría de las veces, lo puede extraer un programa, así que scraping es siempre una solución de último recurso.

Estoy harto de tanto rascar

Hay herramientas para trabajar con diferentes conjuntos de datos automáticamente e incluso un sitio, morph.io para almacenar procedimientos de scrapeado y ejecutarlos automáticamente; todo ello en scripts también libres que puedes modificar y adaptar a las necesidades propias. También hay extensiones a Firefox como Outwit. Hay que trabajar de múltiples formas pero, en muchos casos, se pueden obtener datos suficientes como para trabajar. Para hacer scraping en profundidad, en general, hay que tener ciertos conocimientos de programación web y saber, al menos, leer la estructura del fuente de una página web, porque lo que se hace, en la mayor parte de las ocasiones, es eso. En algunos casos también es cuestión de copiar y pegar, pero si tienes que actualizar la información cada cierto tiempo puede acabar siendo muy tedioso. Más recursos, incluyendo extensiones para Chrome, están en esta página. Incluso si usáis la hoja de cálculo de Google Drive y con un poquito de programación puedes trabajar hasta con cosas que se actualicen periódicamente.
A veces la forma mejor de ocultar algo es publicarlo. No todo lo publicado es transparente: los PDFs, por ejemplo, son bastante difíciles de consultar: una tabla en PDF es un reto a veces insuperable. Y en algunos casos los PDFs son documentos escaneados, mucho más difíciles todavía de extraer. En resumen: el reto en los datos, en muchas ocasiones y sobre todo en el periodismo de datos, es poder extraerlos.
Vale, ya tenemos todos los numeritos. Pero, ¿qué podemos hacer con los datos si son verdaderamente grandes?
Lo primero es visualizarlos. Por ejemplo, estos son los datos de variación del paro en Elche y comarca desde 2011, hecho con una herramienta llamada CartoDB, software libre hecho por una empresa española. Esta aplicación, aparte de poder instalártela en tu casa, permite subir datos geolocalizados (o geolocalizarlos fácilmente) y representar de decenas de formas diferentes sobre mapas de todo tipo.
En Donde Van mis Impuestos visualizan los impuestos de las comunidades autónomas, los globales y los de los ayuntamientos, mostrando dónde van las diferentes partidas y análisis como el presupuesto por persona. Donde van mis impuestos es un proyecto de la Fundación Ciudadana Civio, que tiene otros muchos proyectos relacionados con la transparencia.
Estos presupuestos fueron extraídos por Félix Ontañón en 2013, además de un PDF, que tiene mucho más mérito. La visualización es todo un arte y contribuye a hacer evidentes relaciones entre cantidades, patrones que se pueden captar a simple vista. Hay empresas como Vizzuality (de donde salió CartoDB) y otra como Graphext, creada hace poco por un granadino y afincada en Alicante.
Una de las opciones es machacar los datos, y si los datos no son muy grandes, o bien ya están preprocesados de alguna forma, podemos hacerlo usando técnicas tradicionales: bases de datos, un sólo ordenador, cosas así. Normalmente, sin embargo, necesitaremos algo un poco más potente. Y aquí es donde entra... El científico de datos.

Esto se parece a...

Hay tantas posibilidades de comparar datos con datos que hasta hay una página web dedicada a correlaciones espurias. Una vez que se tienen datos, se pueden comparar con cualquier cosa. Se trata de buscar correlaciones, para lo cual hacer gráficos no es suficiente: hay que descartar cualquier otro factor y también usar herramientas estadísticas para probar sin lugar a dudas que existe esa correlación y que un factor depende de otro. Correlación no implica causación, como lo demuestra el hecho de que el número de premios nóbeles está correlacionado con el consumo de chocolate.
En realidad, nos hemos saltado una parte importante del big data, o lo que lo es verdaderamente. Procesamiento de grandes cantidades de datos, con las 5 Vs y la V más importante, la velocidad y el volumen, como este torrente callejero en Teherán. Es algo que tu ordenador solitario no va a poder procesar. En general, necesitarás la nube.
En general, hace falta trabajar con la nube. La nube, para lo que nos interesa, es una infraestructura de computación que es escalable y que se paga por uso, compuesta por máquinas virtuales con algún tipo de software ejecutándose (libre, claro) y configuradas también por software. Hay cloud de unos cuantos "players" que incluye a Amazon, Google, Microsoft. La nube se adapta a la necesidad que cada persona tenga. Pero, a este nivel, simplemente estamos ejecutando una aplicación (con equilibrado o lo que sea) en una "máquina" que es elástica (o nubosa, que se nos va la metáfora). Generalmente hace falta algún tipo de procesamiento específico.
Posiblemente el peor chiste de la charla: mapa reducido, o map reduce, una de las técnicas principales aplicadas en big data para procesar grandes cantidades de datos. Consiste en un procesamiento en dos fases
Los datos son aplicados (que es lo que significa map) es decir, filtrados, o extraídos, ordenados, a una serie de resultados intermedios, que más adelante son agregados (por ejemplo, sumados siguiendo algún criterio) o reducidos de forma que den unos datos que son los que, eventualmente se van a utilizar. Google aplica continuamente este tipo de procesamiento para presentar las tendencias, para dar el número de resultados de una consulta y para cosas similares.

MapReduce es Hadoop

Hadoop es un programa de la fundación Apache (la misma del servidor web) y desarrollado originalmente por Yahoo, escrito en Java y que implementa Map reduce sobre un grupo de ordenadores físicos o máquinas virtuales. Normalmente no tiene que preocuparse uno de montarlo: si usas algún recurso en nube ya viene montado automáticamente y no hay más que usarlo, creando programas. Casi todas las grandes empresas de Internet, desde Facebook a Google, usan este tipo de programa, quizás adaptado. Y en la nube es fácil implementarlo. Últimamente se está empezando también a hablar de otra implementación, Spark, que es mucho más rápida que Hadoop (aunque está basada en él) y que está hecha en otro lenguaje, Scala. En general, este mundo de los datos se mueve a una velocidad que es imposible mantenerse al día. Y luego tienes Pig, un lenguaje para analizar conjuntos de datos, y Hive en caso de que quieras usar datos estructurados. En resumen: hay muchas herramientas para asistir al científico de datos.
Hay que ir un poco más allá buscando patrones, aprendiendo cosas y prediciendo qué va a suceder a continuación. Cuando trabajas con mucho data, tela de data, un viaje de data, los algoritmos que se utilizan para aprendizaje tienen que ir sobre la infraestructura anterior. Por ejemplo, Mahout funciona sobre Spark y tiene todo tipo de algoritmos de clustering, clasificación y de filtrado colaborativo. Y todo esto, ¿para qué sirve?

¿Qué está pasando ahora mismo?

Now-casting

Una tienda de ropa tiene que saber desde hace varios días qué es lo qeu tiene que haber en la tienda hoy; una fábrica necesita predecir los pedidos para ver de dónde van a venir. Y además, necesita saber de dónde le van a venir.
Por ejemplo, ¿qué tipo de zapatos va a pedir la gente? ¿Sandalias? ¿Chanclas? ¿Náuticos?
Lo importante con los datos es que cuenten una historia. Una predicción, un mapa, una gráfica de correlación, no significa absolutamente nada. ¿Existe alguna causa? ¿Cómo puedes explicar lo que ocurre? Si descubres que la cantidad de crímenes está correlacionada con la venta de helados, ¿por qué puede ser? ¿Cómo puedes transmitir lo que los datos te están contando?

Hay mucho data

Pongamos nosotros la historia

La psicohistoria de Asimov va a estar jodida. Pero al menos podremos entender un poquito mejor nuestro mundo y tomar decisiones más informadas.

¿Alguna pregunta?

Créditos

Imagen del bus modificada de MTA photos Imagen de la Fundación del blog de Johnny Mackintosh Imagen del mulo de un foro Imagen de gente con móviles de Kris Krüg Imagen de fila de sillas por 2 funky Uves de ancient history Hulk de Clement127 Zarpa de oso de Valerie

Créditos II

Números de Andi Maguire Números de Perdidos por StuartPilbrow Tuppers de Boca Dorada Torrente por Hamed Saber Mapa doblado de George Oates Fuego de campamento de Jerry Kirkhart
Mucho Data Cuando los datos crecen Por JJ Merelo / @jjmerelo En el programa decía que iba a hablar de software libre también. Pero es que, como leí hace un par de dias en Twitter hoy en día el software libre ha crecido hasta tal punto que es la opción por omisión en muchos casos (salvo, quizás, consumo). En general, todas las herramientas que voy a comentar son libres; si alguna no lo es, lo diré explícitamente.