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 fasesLos 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.
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.