Está en la página 1de 44

Análisis y

visualización de
datos
Mario Macias Lloret
PID_00237568

Tiempo mínimo previsto de lectura y comprensión: 3�horas


© FUOC • PID_00237568 Análisis y visualización de datos

Ninguna parte de esta publicación, incluido el diseño general y la cubierta, puede ser copiada,
reproducida, almacenada o transmitida de ninguna forma, ni por ningún medio, sea éste eléctrico,
químico, mecánico, óptico, grabación, fotocopia, o cualquier otro, sin la previa autorización escrita
de los titulares del copyright.
© FUOC • PID_00237568 Análisis y visualización de datos

Índice

Introducción............................................................................................... 5

Objetivos....................................................................................................... 8

1. Streaming: análisis de datos en tiempo real............................... 9


1.1. Hadoop Storm ............................................................................. 10
1.1.1. Topologías predefinidas ................................................. 12
1.1.2. Tipos de bolts ................................................................ 13
1.1.3. Agrupamiento de streams................................................ 13
1.2. Spark Streaming .......................................................................... 14
1.3. Apache Flink ............................................................................... 15

2. Aprendizaje autónomo..................................................................... 17
2.1. Regresión ..................................................................................... 18
2.2. Clasificación ................................................................................ 19
2.3. Agrupamiento .............................................................................. 20
2.4. Reducción de dimensionalidad ................................................... 21
2.5. Filtrado colaborativo / sistemas de recomendación .................... 21

3. Análisis de grafos............................................................................... 23
3.1. Hadoop Giraph ........................................................................... 24
3.1.1. Tipos de grafos soportados por Giraph ......................... 25
3.1.2. Agregadores .................................................................... 25
3.2. Spark GraphX .............................................................................. 27

4. Visualización de datos masivos...................................................... 29


4.1. Herramientas para visualización de datos .................................. 34
4.1.1. Herramientas de visualización de software libre/
código abierto ................................................................ 34
4.1.2. Herramientas de visualización de pago o código
cerrado ........................................................................... 36

5. Otras herramientas para el análisis y la visualización de


datos....................................................................................................... 39
5.1. R ................................................................................................... 39
5.2. Jupyter Notebook ........................................................................ 40
5.3. Apache Zeppelin .......................................................................... 41
5.4. Apache Lucene y derivados ........................................................ 42

Bibliografía................................................................................................. 43
© FUOC • PID_00237568 5 Análisis y visualización de datos

Introducción

Es estadística, el análisis exploratorio de datos es un método para caracterizar


conjuntos de datos mediante su análisis, a menudo con métodos visuales. El
objetivo del análisis exploratorio es poder ver qué pueden contarnos los datos
más allá de la modelización formal o las tareas de test de hipótesis. Pudiendo
usarse o no los modelos estadísticos, el análisis exploratorio incentiva a los
estadísticos a explorar los datos y formular hipótesis que puedan proveer nue-
vos datos y experimentos.

Los objetivos del análisis exploratorio son, básicamente:

• Sugerir hipótesis acerca de las causas de los fenómenos observados.


• Evaluar las asunciones en las que se basará la inferencia estadística.
• Seleccionar de herramientas y técnicas estadísticas adecuadas.
• Proveer una base para futuras recolecciones de datos.

Muchas técnicas de análisis exploratorio han sido adoptadas dentro de la mi-


nería de datos y del análisis big data.

La figura 1 muestra el proceso de análisis y visualización del big data, y cómo


el análisis exploratorio y la visualización (marcados como cuadros grises) se
engloban en este. Por una parte, los datos a analizar proveen de diferentes
fuentes, y están en diferentes formatos. A veces incluso serán incompletos o
contradictorios. Es por ello que, tras la recolección de los datos “en crudo”,
será necesario procesarlos y almacenarlos en un formato normalizado.
© FUOC • PID_00237568 6 Análisis y visualización de datos

Figura 1. El proceso de análisis y visualización de datos

El análisis exploratorio orientado al big data surgió a raíz del nacimiento de la


web 2.0, en la que la abundancia de datos provoca complejidad en su búsqueda
e interpretación, lo que da lugar a la necesidad de un mecanismo que permita
facilitar la comprensión y asimilación de la información. En la actualidad, se
genera cada segundo la misma información que existía de forma global hace
20 años lo que provoca un conglomerado de datos que buscan la forma de
darse a comunicar. Como respuesta a este desafío digital surgió el big data,
concepto que abarca un conjunto de métodos cuya única finalidad estriba en
convertir un conglomerado de datos en una explicación clara y concisa de la
información que subyace en los mismos.

El análisis exploratorio de los datos nos permitirá comprender mejor los datos,
y proponer modelos y algoritmos que sean capaces de extraer información de
valor de estos. Incluso, aunque no esté explícitamente indicado en la figura
1, del análisis exploratorio se pueden extraer conclusiones que influyan en el
futuro procesado de los datos.

El proceso de visualización de datos es importante para comunicar y distribuir


los resultados del análisis exploratorio, pero también durante el propio análi-
sis exploratorio, ya que ayudará al científico de datos a descubrir patrones y
relaciones en los datos, y formular las hipótesis que más adelante se compro-
barán de una manera más analítica.

Los procedimientos que engloban el análisis exploratorio de datos son varios.


En primer lugar es necesario analizar los datos para compendiar aquellos útiles
para el conocimiento del tema y descartar los inconexos. En segundo lugar es
necesario interpretar los datos seleccionados de tal forma que sean compren-
sibles de forma exacta y detallada. Antes de continuar es imprescindible con-
trastar estos datos con otros vinculados y estudiar todos ellos para no cometer
© FUOC • PID_00237568 7 Análisis y visualización de datos

errores y saber discernir los verdaderamente significativos para lograr el fin


último, es decir, facilitar la comprensión del usuario. El último paso en este
proceso es saber comunicar la información obtenida, de tal forma que el usua-
rio adquiera los conocimientos necesarios para comprender correctamente los
datos facilitados.

El objetivo de este módulo es mostrar cómo las actuales herramientas y frame-


works de big data pueden ayudar al científico de datos a analizar y visualizar
datos a gran escala.
© FUOC • PID_00237568 8 Análisis y visualización de datos

Objetivos

En este módulo encontraremos las herramientas indispensables para alcanzar


los siguientes objetivos:

1. Conocer las principales librerías que se proporcionan para el procesado de


flujos de datos, aprendizaje autónomo, procesado de grafos y visualización
de datos.

2. Comprender cómo dichas herramientas pueden ayudar al proceso de aná-


lisis y visualización de datos estadísticos.
© FUOC • PID_00237568 9 Análisis y visualización de datos

1. Streaming: análisis de datos en tiempo real

Los escenarios que motivan el análisis de datos mediante herramientas de


streaming son:

• Necesidad de calcular estadísticas sobre datos que se generan al vuelo.


• Necesidad de calcular estadísticas sobre un conjunto de datos cuando este
es demasiado grande. Una solución es ir precomputando los datos a me-
dida que se generan.

Cuando se adopta un flujo de trabajo en modo de paquetes por lotes (tam-


bién conocido como batch), no existe una garantía de que estos vayan a ser
procesados en un tiempo corto, por lo que los datos a calcular pueden estar
desactualizados.

Ejemplo de las Fiestas de la Mercè

Como ejemplo imaginario, durante las Fiestas de la Mercè, el ayuntamiento de Barcelo-


na pretende localizar los recursos asistenciales y de seguridad (policía, ambulancias...)
allá donde se detecte una mayor concentración de personas. Dicha concentración puede
cambiar a lo largo de la noche (cuando acaban los conciertos del Fòrum, algunas personas
irán al parque de La Ciutadella y otras a Plaça Catalunya). En un alarde de optimización,
el ayuntamiento pretende saber al momento cuáles son las mayores concentraciones de
personas, y para ello procesará los datos geolocalizados que los asistentes a las fiestas
generan en cada momento (tuits, fotografías de Instagram, comentarios de Facebook...).

Figura 2. Concentración de personas en las fiestas de la Mercè de 2014, en base a


65.918 tuits

En una solución batch, tal como cualquiera de las que implemente el modelo MapReduce,
el sistema debería ir almacenando los datos y, llegado un momento, procesar las estadís-
ticas sobre estos. El ayuntamiento podrá tener una evolución de las concentraciones de
personas a lo largo de la noche, pero es posible que no tenga tiempo de reacción ante
cambios repentinos en la distribución de las personas, ya que casi siempre habrá un nú-
mero considerable de eventos "no absorbidos" por el sistema de análisis de datos.
© FUOC • PID_00237568 10 Análisis y visualización de datos

Los motores de procesado de datos por flujos (también conocidos como strea-
ming) surgen para habilitar el análisis de datos en tiempo real (es decir, se con-
sumen y procesan inmediatamente después de que sean producidos).

Las características deseables de estos son:

• Garantizan que los datos van a ser procesados en un tiempo razonable.


• Son horizontalmente escalables: añadiendo más recursos de computación
podremos procesar más datos.
• Son tolerantes a fallos: si un nodo de computación falla, los siguientes
nodos pueden absorber su carga trabajo.
• Son rápidos.

En este apartado se muestran las características de las tres herramientas para


el procesado de streaming que actualmente gozan de mayor difusión y proyec-
ción:

• Apache Hadoop Storm


• Apache Spark Streaming
• Apache Flink

1.1. Hadoop Storm

Storm es el motor de procesado en streaming para Apache Hadoop que


relaciona los datos con sus funciones de procesado según un grafo ací-
clico dirigido.

La unidad básica de datos es la n-tupla, un conjunto de datos que representan,


por ejemplo, un evento. En el ejemplo al inicio de este apartado, una n-tupla
podría guardar la latitud y la longitud de una foto geolocalizada, así como el
identificador único de su usuario.

Los flujos o streams serían una secuencia no acotada de tuplas. Y un spout


(canalón, en español) una fuente de flujos de datos.

Un bolt (algo así como una vía de desagüe) consume datos de uno o varios
streams y produce nuevos flujos de datos.

La figura 3 muestra visualmente los conceptos anteriormente descritos, así


como la relación entre estos.
© FUOC • PID_00237568 11 Análisis y visualización de datos

Figura 3. Un ejemplo de topología Storm para el procesado de eventos

A la hora de especificar la implementación de la topología de un sistema


Storm (es decir, qué componentes desplegar y cómo se relacionan entre
estos), se pueden especificar tres tipos de entidades (figura 4):

• Tareas que ejecutan el procesado de datos. Cada spout o bolt im-


plementado en el código ejecuta tareas. El número de tareas de un
componente siempre es el mismo durante la vida de una topología.

• Ejecutores, que son hilos que pueden ejecutar una o varias tareas
de un mismo componente (spout o bolt). El número de ejecutores
puede variar en el tiempo.

• Procesos Worker (trabajador), que ejecutan un subconjunto de una


topología, pudiendo ejecutar uno o varios ejecutores que a su vez
contienen uno o varios componentes (spouts o bolts). Una topología
consistirá en varios procesos worker ejecutándose en varias máqui-
nas de un clúster.

Figura 4. Arquitectura de un proceso worker


© FUOC • PID_00237568 12 Análisis y visualización de datos

1.1.1. Topologías predefinidas

Apache Storm no es más que un motor de procesado, por lo que no provee


herramientas analíticas, aunque sí anexa muchos ejemplos e implementacio-
nes de métodos comunes que pueden ser adaptados por el programador, como
por ejemplo:

• ReachTopology. Crea una topología que computa, mediante paraleliza-


ción y en tiempo real, el alcance (a cuántas personas llega y cómo se trans-
mite entre seguidores) de cualquier URL en Twitter. Para computar esta
métrica, conocida como reach, es necesario obtener toda la gente que tui-
teó la URL, obtener todos los seguidores de estas personas y crear un con-
junto sin duplicados con estas personas. Es una computación tan intensa
que puede requerir miles de llamadas a bases de datos y decenas de millo-
nes de registros de seguidores.

• RollingTopWords. Computa continuamente las principales palabras que


han pasado por la topología en términos de cardinalidad. El algoritmo está
implementado de una manera escalable y puede adaptarse para computar
otros conceptos como temas o imágenes populares del momento en una
red social.

• SlidingWindowTopology. Demuestra el uso de ventanas de tiempo para


realizar cálculos sobre un conjunto de las últimas tuplas procesadas.

• SlidingTupleTsTopology. Como el anterior, pero ordenando las tuplas por


cuándo fueron emitidas, en vez de cuándo han sido procesadas.

• TransactionalGlobalCount. Es un ejemplo básico de topología transac-


cional, que guarda la cuenta del número de tuplas vistas hasta el momento
en una base de datos.

• TransactionalWords. Usa como base la implementación anterior de Tran-


sactionalGlobalCount para procesar un flujo de palabras y producir dos sa-
lidas: primera, cuántas veces aparece una palabra en el texto; y, segunda,
el número de palabras que aparecen un rango de veces, es decir, cuántas
palabras aparecen de 0 a 9 veces, cuántas aparecen de 10 a 19 veces, etc.

• WordCountTopology. Demuestra las capacidades que Storm proporciona


para agrupar streams.
© FUOC • PID_00237568 13 Análisis y visualización de datos

1.1.2. Tipos de bolts

Apache Storm provee numerosos bolts que facilitan y agilizan el diseño de


topologías dedicadas al análisis de datos. Además de los bolts que conectan con
sistemas de persistencia (HBase, HDFS, Cassandra...), Storm provee también
los siguientes bolts:

• AbstractRankerBolt. Implementa el comportamiento básico y común de


los bolts que categorizan objetos según su numerosidad. Permite que las
implementaciones de esta clase abstracta especifiquen cómo las tuplas re-
cibidas deben ser procesadas (por ejemplo, cómo los objetos contenidos
en dichas tuplas deben ser extraídos y contados).

• IntermediateRankingBolt. Implementa AbstractRankerBolt y categoriza


objetos según su numerosidad. Asume que las tuplas de entrada tienen
el formato (objeto, numero_objetos, campoAdicional1, campoAdicional2, ...,
campoAdicionalN).

• TotalRankingBolt. Recibe ranking intermedios como los generados por


IntermediateRankingBolt y los mezcla en un ranking final, consolidado.

• RollingCountBolt. Cuenta los objetos que se han contado en una ventana


de tiempo definida. Los objetos más viejos que dicha ventana de tiempo
serán eliminados de la cuenta.

• SlidingWindowSumBolt. Realiza un sumatorio de los valores de tuplas


recibidas en una ventana de tiempo recibida. Los valores más viejos que
dicha ventana de tiempo serán eliminados del sumatorio.

1.1.3. Agrupamiento de streams

Storm también provee algunas primitivas básicas para agrupar los diferentes
flujos de datos y, dada una tupla a emitir, decidir a qué tarea debe ir a parar.
Las agrupaciones provistas son:

• Mezcla aleatoria, típicamente usada para emitir de manera distribuida.

• Por�campos, según el valor de un campo de una tupla (equivalente al SQL


GROUP BY).

• A�todas, replicará un flujo hacia todos los bolts conectados. Se debe usar
con cuidado para no sobrecargar el sistema.

• Directa, donde el productor de las tuplas decidirá qué tarea será la recep-
tora de estas.
© FUOC • PID_00237568 14 Análisis y visualización de datos

• LocalOrShuffle (local o mezclada): si el bolt de destino alberga varias ta-


reas en el mismo proceso worker, las tuplas serán mezcladas aleatoriamen-
te dentro de esas tareas, si no, se comportará como una mezcla aleatoria
normal.

1.2. Spark Streaming

El hecho de que Spark proporcione en un mismo entorno de trabajo los


dos modos de procesado (por lotes o batch y streaming) es uno de sus
puntos fuertes frente a otras alternativas especializadas en uno u otro
(por ejemplo, Hadoop para el modo batch o Storm, para el modo strea-
ming). La integración de ambos paradigmas convierte a Spark en una
implementación de lo que a nivel teórico se conoce como arquitectura
lambda.

La manera en que Spark incorpora el procesado de flujos de datos sin la nece- RDD
sidad de rehacer todos los demás componentes de la plataforma consiste en
RDD es la abreviatura de Re-
capturar pequeños paquetes de datos del flujo de entrada cada cierto intervalo silient-Distributed Dataset, o
de tiempo y presentarlos como un RDD. De este modo, el flujo de entrada conjunto de datos resiliente y
distribuido. Es la unidad míni-
toma la forma de una serie continua de RDD, lo que se denomina un DStream ma de procesado para Spark.

(del inglés, Discretized Stream), el concepto esencial y sobre el que gira todo
Spark Streaming.

Del mismo modo que ocurre con los RDD, se expresará el procesado del flujo
de datos mediante transformaciones sobre los DStreams. Existen una serie de
transformaciones estándar para su procesado, aunque también se podrán apli-
car transformaciones genéricas de RDD sobre los RDD que los componen.

Figura 5. Esquema del funcionamiento de Spark Streaming y un DStream

Cuando se procesan flujos de datos cobra mucha importancia el modo en que


los datos entran y salen del sistema. En el procesado de flujos de datos nor-
malmente intervienen múltiples sistemas, y conviene encontrar una manera
cómoda y eficiente de intercambiar los datos entre ellos. Spark facilita esta ta-
rea proporcionando utilidades para la recepción de datos de muchas fuentes
(Apache Kafka, Apache Flume, Amazon Kinesis, HDFS, sockets y más) y para
el envío de datos con todas las alternativas ya descritas para los RDD. A parte
© FUOC • PID_00237568 15 Análisis y visualización de datos

de los conectores que ya proporciona Spark Streaming, existe la posibilidad


de definir conectores a medida para interactuar con sistemas todavía no so-
portados.

Al igual que con Apache Storm, Spark Streaming es solo un motor de procesado
de flujos de datos, y su núcleo no proporciona herramientas para análisis es-
tadístico. No obstante, el paquete de clases org.apache.spark.examples.streaming
proporciona muchos ejemplos que pueden utilizarse como punto de partida
para la creación de aplicaciones de análisis estadístico de flujos de datos en
tiempo real. A destacar:

• *WordCount implementa receptores de streams para diferentes fuentes de


datos (Amazon Kinesis, Kafka, HDFS, Flume...) y cuenta las palabras emi-
tidas por estas

• *EventCount implementa receptores de streams para diferentes fuentes de


datos y cuenta los diferentes eventos que pueden ser emitidos por estos.

• PageViewStreams analiza un flujo de visitas a páginas web, demostrando


además varios tipos de operadores disponibles en Spark Streaming, tales
como contadores, contadores según valor, joins, agrupaciones por clave,
etc.

1.3. Apache Flink

Apache Flink, pese a ser más reciente e inmaduro que Storm y Spark
Streaming, se está abriendo paso debido a sus ventajas para el procesado
de flujos de datos. Mientras Spark y Storm procesan en micro-batch (es
decir, pequeños paquetes de lotes), Flink procesa en streaming real, lo
cual conlleva una menor latencia en el procesado en tiempo real.

Flink tiene otras ventajas:

• Se adapta automáticamente a los conjuntos de datos que le van llegando,


y Spark/Storm necesitan optimizar y ajustar los trabajos manualmente a
conjuntos individuales.

• Puede proveer resultados intermedios cuando se requiera.

• Provee una interfaz web para mandar y ejecutar trabajos remotamente me-
diante Apache Zeppelin (el cual se describirá en el subapartado 5.3).
© FUOC • PID_00237568 16 Análisis y visualización de datos

Cada tipo de procesado (batch o streaming) tiene sus ventajas, inconvenientes


y son más adecuados para diferentes tipos de situación. Streaming suele ser más
adecuado cuando tenemos alguna de las siguientes situaciones:

• Datos de entrada que llegan en forma de registros, en una secuencia espe-


cífica.
• Se requiere una salida de datos tan pronto como sea posible, aunque no
antes del tiempo requerido para analizar/verificar la secuencia.
• La salida no necesita ser modificada una vez ha sido escrita.

Por ejemplo, se puede considerar la media móvil del tiempo que cada visitante
permanece visitando una página web. En el caso de usar batch, el número de
visitas puede ser actualizado cada minuto, hora, incluso día. El problema es
que sería difícil definir cuándo empieza o acaba la sesión, así como los períodos
de inactividad, ya que estos puntos que marcan el inicio/fin de las sesiones
podrían caer en diferentes lotes. Por lo que en este caso, se requiere procesar
datos en tiempo real mediante streaming, en el que se puede ver el tiempo
como un continuo.

Hay otras situaciones en las que tanto el modelo de streaming y batch son útiles.
Por ejemplo, si se quisiera calcular el mensual móvil de ventas, en intervalos
de días. En este caso sería necesario computar las ventas diarias totales y al
final hacer una suma acumulativa de los últimos 30 días. En este caso, puede
ser suficiente con el procesado en batch de las ventas según sus respectivas
fechas. Incluso es aceptable que pueda haber latencia en los datos, pudiendo
agregar registros tardíos a los futuros lotes de procesado.
© FUOC • PID_00237568 17 Análisis y visualización de datos

2. Aprendizaje autónomo

El aprendizaje autónomo (también conocido por su denominación en


inglés, Machine Learning) es el conjunto de métodos y algoritmos que
permiten a una máquina aprender de manera automática en base a ex-
periencias pasadas.

Generalmente, un algoritmo de aprendizaje autónomo debe construir un mo-


delo en base a un conjunto de datos de entrada que representan el conjunto
de aprendizaje, lo que se conoce como conjunto de entrenamiento. Durante es-
ta fase de aprendizaje, el algoritmo va comparando la salida de los modelos
en construcción con la salida ideal que deberían tener estos modelos, para ir
ajustándolos y aumentando la precisión. Esta comparación forma la base del
aprendizaje en sí, y este aprendizaje puede ser supervisado o no�supervisa-
do. En el aprendizaje supervisado (figura 6), hay un componente externo que
compara los datos obtenidos por el modelo con los datos esperados por este,
y proporciona retroalimentación al modelo para que vaya ajustándose. Para
ello, pues, será necesario proporcionar al modelo con un conjunto de datos
de entrenamiento que contenga tanto los datos de entrada como la salida es-
perada para cada uno de esos datos.

Figura 6. Aprendizaje supervisado

En el aprendizaje no supervisado (figura 7), el algoritmo de entrenamiento


aprende sobre los propios datos de entrada, descubriendo y agrupando patro-
nes, características, correlaciones, etc.
© FUOC • PID_00237568 18 Análisis y visualización de datos

Figura 7. Aprendizaje no supervisado

Algunos algoritmos de aprendizaje autónomo requieren de un gran conjunto


de datos de entrada para poder converger hacia un modelo preciso y fiable,
siendo pues el big data un entorno ideal para dicho aprendizaje. Tanto Hadoop
(con su paquete de aprendizaje autónomo, Mahout) como Spark (con su solu-
ción MLlib) proporcionan un extenso conjunto de algoritmos de aprendizaje
autónomo. El resto del apartado los describirá según su clasificación y para
qué plataformas están disponibles.

2.1. Regresión

La regresión (figura 8) es un tipo de aprendizaje supervisado cuyo ob-


jetivo es, dado un conjunto de aprendizaje con datos de entrada y sus
respectivas salidas, tratar de encontrar una línea (recta o curva) que los
aproxime de tal manera que en el futuro podamos predecir las salidas
a partir de nuevas entradas.

Un ejemplo de problema solventable con regresión es, dado el precio de las ventas de
pisos durante el último mes en una zona, y los metros cuadrados de estos, tratar de pre-
decir a cuánto se podrá vender un piso recién puesto a la venta en esa zona, sabiendo
los metros cuadrados.

Figura 8. Ejemplo de regresión lineal. Los puntos


representan los datos de aprendizaje; la línea representa la
predicción sobre futuros eventos
© FUOC • PID_00237568 19 Análisis y visualización de datos

Es importante remarcar que una regresión no pretende devolver una predic-


ción exacta sobre un evento futuro, sino una aproximación (como muestra la
diferencia entre la línea y los puntos de la figura). Por lo general, datos más
dispersos resultarán en predicciones menos ajustadas.

Actualmente, MLlib y Mahout proporcionan métodos para la regresión�logís-


tica (aquellas que pueden ser aproximadas mediante una función logística.
Además, MLlib proporciona métodos para regresiones�lineales y regresiones
isotónicas (definidas por partes).

2.2. Clasificación

La clasificación (figura 9) es otro tipo de aprendizaje supervisado estrechamen-


te relacionado con las regresiones en el que, dado un punto en un espacio
multidimensional, se pretende decidir qué partes de ese espacio pertenece a
los elementos de un grupo de clases.

Figura 9. Ejemplo de clasificación. Las cruces y los círculos representan elementos de dos clases,
y se pretende dividir el espacio tal que separe a la mayoría de elementos de clases diferentes

Al contrario que las regresiones, que pretendían modelar un conjunto de datos


como un continuo, la salida de los algoritmos de clasificación está discretizada
a un conjunto de clases. Por ejemplo:

• Dado un conjunto de síntomas, ¿cuál es la enfermedad de una persona?


• Dada la presencia de ciertas palabras en un correo electrónico, ¿es spam
o no?
• Dado el peso, el consumo de alcohol semanal y la tasa de colesterol en
sangre ¿tiene una persona riesgo de infarto?
© FUOC • PID_00237568 20 Análisis y visualización de datos

Tanto MLib como Mahout proporcionan diversos métodos de aprendizaje para


la clasificación, tales como árboles de clasificación y regresión, clasificadores
bayesianos ingénuos, bosques de árboles de decisión, perceptrones multicapa
y modelos ocultos de Markov.

2.3. Agrupamiento

El agrupamiento es un tipo de clasificación no supervisada en la que,


dado un conjunto de elementos, se pretende clasificar a estos en fun-
ción de unas características representadas como puntos en un espacio
multidimensional (figura 10).

Figura 10. Ejemplo de agrupamiento. Cruces, círculos y cuadros pertenecen a tres clases de
elementos distintos

El algoritmo de agrupamiento más conocido es K-Means, el cual va formando


grupos iterativamente a partir de un conjunto dado. Este es implementado en
diferentes variantes tanto por MLlib como por Mahout.

Mahout, además, implementa el algoritmo Canopy y espectral. Por su parte,


MLlib también implementa mixturas gausianas, Latent Dirichlet Allocation e
iteraciones de potencias.
© FUOC • PID_00237568 21 Análisis y visualización de datos

2.4. Reducción de dimensionalidad

La reducción de dimensionalidad se basa en la reducción del número


de variables que se vayan a tratar en un espacio multidimensional. Es-
te proceso ayuda a reducir la aleatoriedad y el ruido a la hora de reali-
zar otras operaciones de aprendizaje autónomo, puesto que se eliminan
aquellas dimensiones que tengan escasa correlación con los resultados
a estudiar.

En ocasiones, reduciendo la dimensionalidad no solo se ahorrará en cálculos


a la hora de realizar regresiones o clasificaciones, sino que incluso estas serán
más precisas, al reducir ruidos del conjunto de entrenamiento.

Tanto Mahout como MLlib proporcionan métodos de descomposición�en�va-


lores�singulares (Singular Value Decomposition, SVD), descomposición QR y
análisis de componentes principales. Además, Mahout proporciona otros al-
goritmos como SVD estocástica o Lanczos.

2.5. Filtrado colaborativo / sistemas de recomendación

Los sistemas de recomendación tratan de predecir los gustos/intencio-


nes de un usuario en base a sus valoraciones previas y las valoraciones
de otros usuarios con gustos similares.

Son muy usados en sistemas de recomendación de música, películas, libros y


tiendas online.

Cuando se crea un perfil de gustos del usuario, se crea utilizando dos formas
o métodos en la recolección de características: implícitas o explícitas. Formas
explícitas podrían ser solicitar al usuario que evalúe un objeto o tema parti-
cular, o mostrarle varios temas/objetos y que escoja su preferido. Formas im-
plícitas serían tales como guardar un registro de artículos que el usuario ha
visitado en una tienda, canciones que ha escuchado, etc.

Por ejemplo, imagínese la siguiente situación en un sistema de películas en red:

• El usuario A ha valorado como excelente El Padrino y como mediocre La guerra de


las galaxias.

• El usuario B ha valorado como mala El Padrino, como excelente La guerra de las gala-
xias y como excelente Star Trek.

• El usuario C ha valorado como excelente El Padrino, como aceptable La guerra de las


galaxias y como excelente Casablanca.

Basándose en la afinidad del usuario A con el resto de usuarios, un sistema recomendador


probablemente recomendaría Casablanca al usuario A.
© FUOC • PID_00237568 22 Análisis y visualización de datos

Tanto Mahout como MLlib proveen sistemas de recomendación basados en


Factorización de matrices con Alternate Least Squares. Mahout también provee
filtrado colaborativo basado en ítems.
© FUOC • PID_00237568 23 Análisis y visualización de datos

3. Análisis de grafos

La teoría de grafos modela entidades (representadas como vértices) y sus


relaciones (representadas como aristas que unen vértices), y permite re-
solver diversos problemas del área de las ciencias, la ingeniería, la eco-
nomía, y muchos ámbitos no relacionados con el big data, tales como
control de producción, redes de ordenadores, automatización, etc.

Con el auge del big data, la teoría de grafos goza de gran popularidad para el
análisis de redes sociales, análisis de grandes cantidades de documentos enla-
zados entre sí (como las páginas web), o búsquedas de caminos y optimiza-
ción, entre otros.

Podemos considerar varios tipos de grafo:

• Grafo�simple�o�grafo�(a�secas). Es aquel que acepta una sola arista unien-


do dos vértices cualesquiera. Esto es equivalente a decir que una arista
cualquiera es la única que une dos vértices específicos. Es la definición es-
tándar de un grafo.

• Multigrafo o grafo�general. Acepta más de una arista entre dos vértices


(arista múltiple). Estas aristas se llaman múltiples o lazos (loops en inglés).
Los grafos simples son una subclase de esta categoría de grafos.

• Pseudografo. Si incluye algún lazo, es decir, saltando de un vértice a otro


a través de sus aristas se puede llegar al vértice de partida.

• Grafo�orientado, dirigido o digrafo. Son grafos a cuyas aristas se les ha


añadido una orientación, representada gráficamente por una flecha.

• Grafo�etiquetado. Es aquel a cuyas aristas se les ha añadido un peso (nu-


mérico) o una etiqueta a sus vértices.

• Grafo�aleatorio. Es aquel a cuyas aristas se les ha asociado una probabi-


lidad.

Como en apartados anteriores, tanto Hadoop como Spark proporcionan ele-


mentos para procesar grafos: Giraph y GraphX, respectivamente.
© FUOC • PID_00237568 24 Análisis y visualización de datos

3.1. Hadoop Giraph

Giraph es un motor de procesado de grafos cuyos cálculos se realizan


sobre una máquina Bulk Synchronous Parallel (BSP) a gran escala que se
ejecuta enteramente sobre Hadoop. El modelo BSP para diseñar algo-
ritmos paralelos no garantiza la comunicación y sincronización entre
nodos.

Dicho modelo consiste en:

1) Componentes con capacidad de proceso y realizado de transacciones en la


memoria local (por ejemplo, una CPU).

2) Una red que encamina mensajes entre pares de los mencionados compo-
nentes de procesado.

3) Un entorno hardware que permite la sincronización de todos o un subcon-


junto de los componentes de procesado.

Una máquina BSP suele estar implementada como un conjunto de procesado-


res que ejecutan diferentes hilos de computación, equipados con una memoria
local rápida e interconectados por una red de comunicación. La comunicación
es un componente esencial en un algoritmo BSP, donde cada proceso que se
lleva a cabo en una serie de super-pasos que se repiten, y están compuestos
por tres subfases:

• Computación�concurrente. Con ella cada procesador realiza cálculos de


manera local, y asíncrona accediendo solo a los valores guardados en la
memoria local.

• Comunicación. Mediante ella los procesos intercambian datos entre ellos


para facilitar la persistencia remota de datos.

• Sincronización�de�barrera. Cuando un proceso alcanza un punto de ba-


rrera, espera hasta que los demás procesos hayan alcanzado dicha barrera.

La computación y la comunicación no tienen por qué estar ordenadas tempo-


ralmente. La comunicación típicamente es unidireccional, en la que el proceso
pide y envía datos a una memoria remota (nunca recibe datos si no los pide).
La posterior sincronización de barrera asegura que todas las comunicaciones
unidireccionales de los procesos han finalizado satisfactoriamente.
© FUOC • PID_00237568 25 Análisis y visualización de datos

Giraph define los sistemas de procesado como un grafo compuesto por vér-
tices unidos por aristas dirigidas. Por ejemplo, los vértices podrían represen-
tar una persona y las aristas las peticiones de amistad en una red social. La
computación se lleva a cabo mediante una serie de super-pasos anteriormente
descritos.

A la hora de implementar vértices, el usuario puede decidir las características,


memoria, y velocidad de cada uno de estos. Esto se puede conseguir imple-
mentando varias de las superclases abstractas de Vertex que Giraph provee.
Mientras los usuarios expertos pueden implementar sus propios vértices a ba-
jo nivel, el equipo de Giraph recomienda a los usuarios noveles/intermedios
implementar subclases de Vertex y adaptar los ejemplos que ellos mismos pro-
veen.

3.1.1. Tipos de grafos soportados por Giraph

El tipo de grafo por defecto en Giraph son grafos dirigidos, en los que todas
las aristas se consideran aristas de salida que salen del vértice en el cual se han
definido.

A partir de ahí, existe también la posibilidad de definir otros tipos de grafos:

• Grafos�no�dirigidos. El programador debe asegurarse que por cada arista


de salida que sale de un vértice A a un vértice B, hay otra arista que sale de
B a A. Giraph no detectará si el grafo simple no está compuesto como tal.

• Grafos�no�etiquetados. Para ello, el programador deberá extender las cla-


ses que se encargan de leer la información de los vértices (VertexInputFor-
mat/VertexReader) que lea las aristas y no espere ninguna información, o
definir los parámetros genéricos de un vértice que definen el tipo de peso
como NullWritable.

• Grafos�etiquetados. Se definen de manera análoga a los no etiquetados,


pero implementando las clases asociadas para que lean los datos pertinen-
tes de las aristas, o definiendo el tipo de datos genérico de estas.

• Multigrafos. El equipo de Giraph ha anunciado que recientemente sopor-


tan este tipo de grafos, aunque en el momento de escribir este documento,
su uso no está documentado.

3.1.2. Agregadores

Los agregadores permiten realizar computaciones de manera global, sobre to-


dos los nodos. Se pueden usar para comprobar que una condición global se
cumple, o para calcular algunas estadísticas (por ejemplo, contar elementos).
Durante un super-paso, los vértices asignan valores a los agregadores, que lue-
© FUOC • PID_00237568 26 Análisis y visualización de datos

go son agregados (valga la redundancia) por el sistema, haciendo que los re-
sultados estén disponibles para todo el sistema en el siguiente super-paso. Por
ello, la operación realizada por un agregador debe cumplir la propiedad con-
mutativa y asociativa (por ejemplo, una suma, un AND o OR booleano...).

El usuario puede crear sus propios agregadores, pero Giraph provee algunos
agregadores básicos: encontrar el máximo o mínimo entre dos números, su-
matorios, etc.

Giraph es un motor de computación de grafos, y no una biblioteca de algorit-


mos, por lo que los algoritmos para tratar grafos son presentados como “ejem-
plos” en el paquete org.apache.giraph.examples, entre los cuales se encuentran:

• BrachaTouegDeadlockComputation para detectar situaciones de dead-


lock, en las que un vértice A necesita para continuar un recurso proporcio-
nado por un vértice B, pero B no puede proporcionarlo porque necesita
un recurso que solo A lo puede proporcional.

• ConnectedComponentsComputation detecta componentes que conec-


tan varios vértices y asigna a cada vértice un identificador del componente
al que pertenecen.

• MaxComputation, que detecta el valor máximo de un grafo.

• PageRankComputation, que implementa el algoritmo PageRank de Goo-


gle para puntuar la importancia de los vértices de un grafo en base a, entre
otros, cuántos vértices le enlazan y qué características tienen.

• RandomWalkComputation, que ejecuta un “paseo aleatorio” por los vér-


tices de un grafo.

• SimpleShortestPathsComputation, para hallar el camino más corto entre


dos vértices de un grafo, en base al número de aristas y el peso asignado
a estas.

Además, es fácil encontrar librerías de terceros que agrupan algoritmos para


Giraph, por ejemplo las del grupo de investigación en bases de datos de la
Universidad de Leipzig, tales como:
© FUOC • PID_00237568 27 Análisis y visualización de datos

• BTG: extrae grafos de transacciones de negocio (Business Transactions Lectura complementaria


Graphs, BTG).
A.�Petermann;�M.�Jung-
hanns;�R.�Müller;�E.�Rahm
• Propagación�de�etiquetas: encuentra comunidades dentro de redes me- (2014). "BIIIG: Enabling bu-
siness intelligence with in-
diante la propagación a través de los vértices de etiquetas identificativas tegrated instance graphs".
En: Data Engineering Works-
de la comunidad. Los vértices migran a la comunidad representada por la
hops (ICDEW), 2014 IEEE
mayoría de etiquetas enviadas por sus vecinos. 30th International Conferen-
ce on (págs. 4-11). Chica-
go, IL. doi: 10.1109/IC-
• Repartición� adaptativa: particiona un grafo utilizando propagación de DEW.2014.6818294

etiquetas.

Lectura complementaria

3.2. Spark GraphX L.�M.�Vaquero;�F.�Cuadra-


do;�D.�Logothetis;�C.�Mar-
tella (2014). "Adaptive Parti-
tioning for Large-Scale Dyna-
mic Graphs". En: Distributed
Apache GraphX, además de las API para escribir programas para analí- Computing Systems (ICDCS),
ticas de grafos, distribuye implementaciones de algunos de los algorit- 2014 IEEE 34th International
Conference on (págs. 144-153).
mos esenciales para Grafos. Madrid. doi: 10.1109/ICD-
CS.2014.23

En su versión 1.6.1, GraphX soporta los siguientes algoritmos:

• PageRank, también implementado en Giraph, mide la importancia de ca-


da vértice en un grafo, asumiendo que una arista de un vértice A a un vér-
tice B supone una validación de la importancia de B para A. Por ejemplo,
si una página web es enlazada por muchas otras páginas, esta será catalo-
gada como página importante (motivo para que aparezca en las primeras
posiciones de un buscador). GraphX implementa versiones estáticas y di-
námicas de PageRank. Las versiones estáticas ejecutan un número fijo de
iteraciones, mientras que las dinámicas se ejecutan hasta que los rankings
convergen hasta llegar a una solución aceptable. GraphX incluye un ejem-
plo basado en los datos de una red social sobre la que ejecutar PageRank.

• Componentes�conectados, conocido como Connected Components en in-


glés, y también implementado en Giraph, es un algoritmo que etiqueta a
cada componente (grupo de vértices) conectado del grafo con el identifica-
dor del vértice etiquetado con un número menor. Por ejemplo, en una red
social, el algoritmo de Componentes Conectados puede detectar grupos de
usuarios (conocidos como clúster) con algún tipo de afinidad. GraphX usa
los anteriormente mencionados datos de una red social para proporcionar
un ejemplo de ejecución del análisis de Componentes Conectados.

• Conteo�de�triángulos, un vértice forma parte de un triángulo cuando tie-


ne dos vértices adyacentes, también unidos por una arista entre sí. El algo-
ritmo TriangleCount de GraphX determina el número de triángulos de los
que forma parte un vértice, y se usa para detectar agrupaciones o clústeres.
© FUOC • PID_00237568 28 Análisis y visualización de datos

• Propagación�de�etiquetas, también disponible en Giraph, encuentra co-


munidades dentro de redes mediante la propagación a través de los vérti-
ces de etiquetas identificativas de la comunidad. En dicho algoritmo, cada
vértice es inicialmente asignado a una comunidad propia. En cada itera-
ción, los nodos envían su afiliación comunitaria a los vecinos y actualizan
su estado según las afiliaciones que reciben de otros vértices. El algoritmo
de propagación de etiquetas es posiblemente el más común a la hora de
detectar comunidades en grafos, ya que es computacionalmente muy ba-
rato. No obstante, tiene dos desventajas: primera, la convergencia hacia
una solución aceptable no está garantizada; y, segunda, puede converger
hacia una solución trivial (cada nodo forma parte de su propia comunidad
individual).
© FUOC • PID_00237568 29 Análisis y visualización de datos

4. Visualización de datos masivos

La visualización de datos es un campo esencial dentro del análisis estadístico,


ya que es la base de dos pasos importantes dentro del proceso de análisis ex-
ploratorio de datos (figura 11):

• Facilita al científico de datos realizar el análisis exploratorio de los conjun-


tos de datos, de tal manera que pueda estimar características y proponer
hipótesis sobre estas, como paso previo al análisis de datos mediante otros
modelos y técnicas más precisas.

• Permite la exposición de las conclusiones derivadas, respaldando el proce-


so de comprensión y/o posterior decisión. Para conseguir este fin, el pro-
pio creador de la visualización debe tener muy clara la información que
desea comunicar, para que le resulte más sencillo transmitírsela a otras
personas a través de las observaciones y cotejos oportunos de los datos
constituyentes de la visualización.

Figura 11. La visualización de datos es un elemento vital en el análisis exploratorio y la


comunicación de los datos

La visualización en sí es una herramienta que da soporte al análisis estadístico,


no una técnica analítica o estadística en sí. Los usuarios la utilizan para llevar a
cabo comparaciones o determinar causalidades. Facilita el análisis exploratorio
y la comunicación de conclusiones pero no sustituye a las técnicas estadísticas
usadas para extraer valor de los datos.

“El mayor valor de una figura se da cuando insta a darnos cuenta de aquello que jamás
esperamos ver.”

(Turkey, 1977)
© FUOC • PID_00237568 30 Análisis y visualización de datos

Los buenos gráficos estadísticos muestran datos complejos con claridad, preci-
sión y eficiencia. Algunas de las características de una buena visualización son:

• Muestran los datos.


• Inducen a quien los ve a pensar acerca de la información subyacente más
que en la metodología, diseño, tecnología o cualquier otro aspecto técnico,
evitando distorsionar qué quieren decir los datos.
• Muestran mucha información en poco espacio.
• Son coherentes con grandes conjuntos de datos.
• Incentivan la comparación de diferentes partes de los datos.
• Muestran diferentes niveles de detalle, desde una vista grosso modo a pe-
queños detalles.
• Cumplen un propósito claro: describir, explorar, tabular...
• Están integrados con las descripciones estadísticas y verbales de un con-
junto de datos.
• Deben aportar la precisión de los cálculos estadísticos convencionales, y
ser más reveladores que estos.
• Están adaptados a los conocimientos de la audiencia a los que están des-
tinados.
• Son autocontenidos (siguen aportando valor aún fuera de un contexto más
grande, como un informe).

La no aplicación de los principios descritos puede llevar a gráficos engañosos


y poco orientativos, que distorsionan el mensaje o refuerzan una conclusión
errónea. Por ejemplo, sobrecargar los gráficos de decoraciones que no mejoran
el mensaje, o efectos gratuitos tridimensionales o de perspectiva.

Como ejemplo de buen gráfico, el diagrama de Minard (figura 12) muestra las
pérdidas sufridas por el ejército de Napoleón en 1812 y 1813. En este se mues-
tran seis variables: el tamaño del ejército, su posición en una superficie de dos
dimensiones, tiempo, dirección del movimiento y temperatura. El grosor de
la línea permite comparar el tamaño del ejército entre dos puntos temporales
cualesquiera, a la vez que la temperatura sugiere las causas de los cambios en el
tamaño del ejército. Tal visualización de múltiples variables en una superficie
bidimensional cuenta una historia completa que desafió con datos contrasta-
dos la versión redactada por los historiadores de la época.
© FUOC • PID_00237568 31 Análisis y visualización de datos

Figura 12. Mapa figurativo de las sucesivas pérdidas de hombres de la Armada Francesa en la
campaña de Rusia 1812-1813. Charles Joseph Minard, 1869

Fuente: dominio público

Otro ejemplo es el mapa del Dr. John Snow (figura 13), en el cual se superponen
sobre un mapa de Londres los hogares afectados con casos de cólera, así como
las diferentes fuentes de donde los vecinos recogían el agua. Lo que permitió
identificar de manera visual la fuente que propagó el cólera, estando esta en
el epicentro de los hogares afectados y siendo mayor la densidad de casos a
más cercanía a la fuente.

Figura 13. Mapa original dibujado por el Dr. John Snow (1813-1858), médico inglés precursor
de la epidemiología, que muestra los casos de cólera en la epidemia ocurrida en Londres en
1854

Fuente: dominio público


© FUOC • PID_00237568 32 Análisis y visualización de datos

Las formas y técnicas de visualizar los datos son muy diversas, y con la infor-
mática y las herramientas para el análisis big data, se van incorporando otros
avances técnicos tales como animaciones, interactividad, navegación, etc. No
obstante, es necesario considerar las formas más clásicas de representar los da-
tos:

• Tablas (figura 14a), que muestren números o clases de elementos. Su com-


prensión a primera vista se puede mejorar con colores, tonos, leyendas,
explicaciones previas...

• Gráfico�de�barra (figura 14b), para hacer énfasis en la comparación entre


elementos.

• Gráfico�de�línea (figura 14c), para mostrar las relaciones de los cambios


en los datos en un período de tiempo.

• Diagrama�de�caja (figura 14d), gráfico que está basado en cuartiles y me-


diante el cual se visualiza la distribución de un conjunto de datos. Está
compuesto por un rectángulo, la caja, y dos brazos, los bigotes. Es un grá-
fico que suministra información sobre los valores mínimo y máximo, los
cuartiles Q1, Q2 o mediana y Q3, y sobre la existencia de valores atípicos
y la simetría de la distribución.

• Gráfico�circular (figura 14e), también conocido como pie (pastel) en in-


glés. Se utiliza para mostrar cómo diferentes partes representan un total.

• Diagrama�de�dispersión (figura 14f), también conocido como Scatter Plot


en inglés. Son útiles para mostrar la relación entre diferentes puntos de
datos.

• Gráfico�de�burbujas (figura 14g), variación de un diagrama de dispersión


en el que los puntos de datos se reemplazan por burbujas y el tamaño de
las burbujas representa una dimensión adicional de los datos.

• Mapa�de�árbol (figura 14h), conocido como Tree Map en inglés, muestra


datos jerárquicos en forma de rectángulos que ocupan el total del espacio
de forma proporcional al valor de una variable.

• Gráficos�sociales (figura 14i), un mapa que muestra cómo se relacionan


entre sí las personas u otras entidades. Estos gráficos constan de nodos y
flechas (relaciones) que conectan los nodos.

• Cartograma (figura 14j), mapa o diagrama que muestra datos de cantidad


asociados a respectivas áreas, mediante la modificación de los tamaños de
las unidades de enumeración.
© FUOC • PID_00237568 33 Análisis y visualización de datos

• Mapa�de�densidad (figura 14k), mapa que muestra la distribución a través


de un área geográfica de una variable a medir, generalmente asociada a un
color o textura.

Figura 14. Algunos de los tipos de gráficos clásicos

Fuente: dominio público

De entre los mensajes cuantitativos que pueden ayudar a comunicar o enten-


der un conjunto de datos, pueden encontrarse:

• Series�temporales, que muestran las mediciones de una variable a lo largo


de un período de tiempo (por ejemplo, la tasa de desempleo durante un
período de 20 años). Se pueden utilizar líneas o barras para mostrar la
tendencia.

• Rankings, en los que se miden subdivisiones categóricas. Se muestran en


un orden ascendente o descendente (por ejemplo, los productos más ven-
didos de una tienda) durante un período. Se puede usar un gráfico de ba-
rras para mostrar las comparaciones entre elementos.

• Parte-a-todo, en los que las categorías se miden como una proporción del
total (por ejemplo, un porcentaje). Puede usarse un gráfico circular o un
gráfico con múltiples barras.
© FUOC • PID_00237568 34 Análisis y visualización de datos

• Distribución�de�frecuencia, que muestra las observaciones de una varia-


ble particular para un intervalo de frecuencia dado. Por ejemplo, qué por-
centaje de la población tiene una edad comprendida de 0 a 9 años, de 10
a 20, de 20 a 30, etc. Un histograma, mostrado como un gráfico de barras,
ayuda a visualizar las estadísticas sobre la distribución. Puede ayudar tam-
bién un diagrama de caja que muestre datos adicionales sobre la distribu-
ción, mediana, media, desviación estándar, etc.

• Correlación, que es la comparación entre las observaciones representa-


das por dos variables, que determine si estas se mueven en la misma (o
en opuesta) dirección. Por ejemplo, superponer la tasa de crecimiento del
producto interior bruto de un país con la tasa de desempleo puede mostrar
la relación entre estas dos variables. Pueden usarse, solos o superpuestos,
diagramas de líneas, de barras, de dispersión, etc. Es importante tener en
cuenta que correlación no implica relación causa-efecto.

• Comparación�nominal, que compara subdivisiones categóricas sin un or-


den particular. Por ejemplo, el volumen de ventas según un código de pro-
ducto cualquiera. Un gráfico de barras es adecuado para este tipo de grá-
fico.

• Geográfico�o�geoespacial, que es la comparación de una variable a lo largo


de un mapa o distribución del espacio, tal como la tasa de desempleo por
provincia. Típicamente son usados cartogramas o mapas de densidad.

4.1. Herramientas para visualización de datos

Dada la extensa demanda de herramientas de visualización de datos, existen


gran cantidad de estas en el mercado. En los siguientes subapartados vamos a
destacar, por orden alfabético y según su licencia (abierta o cerrada), diversas
soluciones.

4.1.1. Herramientas de visualización de software libre/código


abierto

Dentro del ámbito del software libre vamos a destacar las siguientes herra-
mientas de visualización:

• Atlasboard implementa un tablero de mandos para el diseño y la visuali-


zación de gráficos relacionados con la gestión del código fuente de gran-
des aplicaciones, así como la monitorización de hardware y software (aun-
que se puede extender a cualquier propósito general). Permite visualizar
en diferentes tableros de mando las gráficas y las métricas relacionadas
con errores, aportaciones, contribuidores, etc., proveyendo plantillas para
© FUOC • PID_00237568 35 Análisis y visualización de datos

su visualización mediante gráficos de barras, datos geoespaciales o mapas


sociales, entre otros.

• D3�Data�Driven�Documents es una herramienta de narración visual, una


biblioteca de JavaScript para la manipulación de documentos basados en
datos. D3 permite enlazar datos a un Modelo en Objetos para la Represen-
tación de Documentos (DOM) y aplicar transformaciones en el documen-
to. Consume pocos recursos, es rápido y permite comportamientos diná-
micos de interacción y animación. Facilita la reutilización a través de com-
ponentes o plug-ins y funciona con cualquier navegador moderno. Puede
llegar a ser difícil de utilizar, ya que está orientado a gráficos de propósito
general y requiere conocimientos de programación, existiendo plantillas
abiertas para construir diferentes gráficos de visualización de datos.

• Gephi tiene como objetivo la visualización y consulta de grafos. Además,


Gephi permite manejar grafos grandes con buena calidad, algo no común
en este tipo de herramientas. Gephi da la posibilidad al usuario de agrupar
nodos del grafo, colorearlos, dotarlos de tamaños proporcionales a indica-
dores, etc. Su objetivo principal es ayudar a los analistas de datos a hacer
hipótesis, aislar estructuras de datos o descubrir patrones de una forma
intuitiva. Entre sus características, incluye el análisis dinámico de datos, la
creación de cartografía y el uso de métricas preestablecidas. Además, per-
mite extender su funcionalidad mediante plug-ins.

• Kibana es usada para visualizar los datos pertenecientes a documentos


indexados en el motor y buscador Elasticsearch. Los usuarios pueden crear
diversos gráficos, tales como gráficos de barra, líneas, dispersiones, mapas,
etc. para visualizaciones relacionadas con grandes volúmenes de datos.

• Matplotlib es una librería bidimensional de gráficas para Python, análoga


a D3 y derivados. Orientada a personas con conocimientos de programa-
ción, facilita desde programas y entornos Python la creación de gráficos
como histogramas, gráficos de barras, de dispersión, espectrales, etc. en
pocas líneas de código.

• Nodebox está diseñada para crear gráficos en 2D, tanto estáticos como di-
námicos, a partir de programas en lenguaje Python. Al igual que D3, puede
ser difícil de utilizar para visualización de datos, ya que está orientado a un
propósito general, existiendo plantillas abiertas para construir diferentes
gráficos de visualización de datos.

• NVD3 es una biblioteca basada en D3 que facilita el uso y creación de


gráficos estáticos e interactivos (figura 15). Si bien siguen siendo necesarios
conocimientos básicos de programación para su uso, esta biblioteca aporta
una mayor facilidad de uso a costa de tener menos flexibilidad en los tipos
de gráficos a representar.
© FUOC • PID_00237568 36 Análisis y visualización de datos

• R es una herramienta estadística de código abierto desarrollada por los La-


boratorios Bell. Se ejecuta en variedad de plataformas como Mac, UNIX o
Windows. Está centrada en la creación de gráficos estadísticos y el análisis
de datos. Es un programa muy potente que puede soportar grandes volú-
menes de datos y librerías extensas. R es una herramienta muy compleja
ya que se requieren conocimientos de programación para utilizarla. Con
el auge de la ciencia de los datos, el lenguaje R se está convirtiendo en un
estándar de facto para el análisis por parte de economistas, matemáticos
y estadísticos.

Figura 15. Colección de gráficos disponibles en NVD3

4.1.2. Herramientas de visualización de pago o código cerrado

Dentro del ámbito de las soluciones de pago vamos a destacar las siguientes
herramientas de visualización:

• Highcharts es una biblioteca que, al igual que NVD3, trabaja sobre D3.js
para crear gráficos estáticos e interactivos, aportando facilidad de uso a
costa de una menor flexibilidad. Si bien el código es accesible para el usua-
rio debido a que se ejecuta sobre un navegador web, la licencia de este no es
abierta. Existe una licencia gratuita y otra de pago para usos profesionales.

• IBM�Cognos y Watson�Analytics son las soluciones que IBM provee pa-


ra aplicaciones de inteligencia de negocio en versiones para diferentes tama-
ños de datos. Enfocados en la facilidad de uso, proveen funcionalidades
para la preparación de datos automatizada, analítica predictiva, creación
de informes, paneles de control, colaboración y visualización. Proporcio-
© FUOC • PID_00237568 37 Análisis y visualización de datos

na, además, ayudas para que directivos y cargos de responsabilidad que


no conozcan la ciencia de los datos puedan sacar conclusiones o tomar
decisiones en base a los datos.

• Periscope�Data puede ser conectado a bases de datos relacionales y crear


gráficos mediante comandos SQL.

• QlikView es una plataforma de Business Discovery cuya finalidad es pro-


veer intuitividad y fácil manejo a la hora de utilizar y visualizar grandes
cantidades de datos, agregadas desde diferentes fuentes, con diferentes for-
matos. Una vez introducidos se pueden manipular y organizar libremente
según como se quieran presentar, para conseguir el objetivo final, que es
obtener una forma atractiva de visualizar cantidades de datos. Entre sus
características más destacadas está la de poseer los datos integrados en el
propio cuadro de mandos, posibilitando trabajar con ellos sin la necesidad
de estar conectado al origen de donde proceden.

• Quadrigram es un software de programación visual que se ejecuta en el


propio navegador, permitiendo construir y compartir de manera sencilla
proyectos interactivos de visualización de datos mediante un sistema de
módulos interconectados, aplicando una operación o un control al flujo
de datos de cada módulo, que permite personalizar, iterar y prototipar so-
luciones interactivas basadas en datos extraídos de procesos de análisis.
La aplicación contiene una colección de ejemplos de plantillas predesarro-
lladas para monitorizar, analizar, investigar y comunicar con datos, fácil-
mente transformables en un proyecto personalizado para analizar datos.
Se pueden crear visualizaciones de datos interactivas y combinables, eli-
giendo entre un amplio abanico de herramientas. El programa cuenta con
más de 50 tipos de gráficos interactivos, desde barras hasta sistemas más
complejos de árboles o pictogramas.

• SAS�Visual�Analytics es una solución privada para facilitar, mediante vi-


sualización, el análisis de grandes cantidades de datos, permitiendo llevar
a cabo análisis de datos exploratorios sin necesidad de crear subconjuntos
o muestras de datos.

• Tablas� Dinámicas o Fusion Tables, de Google, es un añadido a Google


Drive que permite crear tablas y gráficos de manera colaborativa con otras
personas remotamente. Permite la inserción de datos públicos así como de
fuentes propias. Permite interpolar los datos con Google Maps y ofrecer
API para poder integrar los datos con aplicaciones de terceros.

• Tableau es otra solución privada de inteligencia de negocios que permite fá-


cilmente crear gráficos mediante el arrastre de diversos componentes, sin
necesidad de tener conocimientos de programación. Permite crear infor-
mes, tableros de control y gráficos de diferentes tipos y formas que van
© FUOC • PID_00237568 38 Análisis y visualización de datos

cambiando en tiempo real, a medida los datos se van introduciendo. Per-


mite además la inserción de documentos o enlaces asociados a los datos.

• Visually es un servicio de Internet para crear y compartir infografías tan-


to para expertos como principiantes. Permite crear infografías, visualiza-
ciones de información y esquemas de representación de datos de forma
útil y llamativa. Es una forma de desarrollar las ideas a través de gráficas
con iconos, flechas y colores. Los propietarios del material pueden ejercer
créditos y derechos sobre su trabajo. Es una herramienta que dispone de
un archivo para compartir trabajos de todo tipo con otras personas. Las
infografías se pueden subir, marcar por temas e ideas además de archivar
las imágenes que ocupan mucho espacio a través de códigos. Esto propor-
ciona más velocidad siempre que el programa funcione correctamente.
© FUOC • PID_00237568 39 Análisis y visualización de datos

5. Otras herramientas para el análisis y la


visualización de datos

Además de las herramientas y librerías mencionadas en otros apartados, cabe


mencionar otras herramientas que no han podido clasificarse dentro de las
categorías de este módulo, por ser de un propósito muy general y transversal
a todas.

5.1. R

Aunque R ha sido mencionado en el apartado anterior como herramien-


ta de visualización, la realidad es que es un entorno estadístico que abar-
ca muchas más fases, tales como el cómputo de estadísticas, la adqui-
sición, exploración y transformación de datos y, por descontado, la vi-
sualización.

R es además un lenguaje de programación usado ampliamente por eco-


nomistas, estadísticos, matemáticos y mineros de datos para desarrollar
cálculos complejos y software estadístico y de análisis de datos. Con el
auge de la ciencia de los datos, en los últimos años R ha pasado de ser
un lenguaje marginal para ámbitos académicos concretos a ser uno de
los lenguajes de programación más usados en la actualidad.

Uno de los puntos fuertes de R es la inmensa cantidad de bibliotecas de ter-


ceros que implementan técnicas estadísticas y gráficas, tales como modelado
no lineal, tests estadísticos clásicos, análisis de series de tiempo, clasificación,
agrupado y otros. Además, es fácilmente integrable con otros lenguajes de pro-
gramación en ambas direcciones, como C, C++, Java, Fortran, .NET o Python,
lo que permite tanto implementar algunas funcionalidades para ser usadas
desde R de manera más rápida, como facilitar la programación de funciones
estadísticas en R para ser usadas desde programas escritos en otros lenguajes
de propósito más general.

Otro punto fuerte de R son los gráficos estáticos, con suficiente calidad para
ser incluidos en publicaciones profesionales. Mediante paquetes adicionales
se pueden crear gráficos dinámicos e interactivos.

La distribución básica de R incluye varios paquetes estadísticos, aunque a fecha


de 2016 hay alrededor de 8.000 paquetes extra disponibles en repositorios
públicos como el Comprehensive R Archive Network (CRAN), que permiten llevar
© FUOC • PID_00237568 40 Análisis y visualización de datos

a cabo desde R tareas relacionadas con las finanzas, genética, computación de


altas prestaciones, aprendizaje autónomo, imagen médica, ciencias sociales y
un largo etcétera.

Su creciente popularidad ha llevado a que este lenguaje haya tenido que ser
tomado en cuenta por la comunidad de Spark y Hadoop, para crear enlaces de
sus plataformas a R: SparkR y RHadoop.

5.2. Jupyter Notebook

Jupyter Notebook es una aplicación web que permite crear y compar-


tir documentos que permiten insertar y editar código en vivo, así co-
mo ecuaciones, visualizaciones, texto explicativo, etc. Se suele usar para
transformar y limpiar datos, simulación numérica, modelado estadísti-
co, aprendizaje autónomo, y muchos más. Es también utilizado para
sistemas de auto-evaluación automática.

Si bien es una herramienta de propósito general, es posible integrarlo con Apa-


che Spark para la creación interactiva de documentos de análisis y visualiza-
ción de big data.

Jupyter Notebook está escrito en Python, y utiliza este lenguaje de programa-


ción para la inserción y edición de código en vivo.
© FUOC • PID_00237568 41 Análisis y visualización de datos

Figura 16. Captura de ejemplo de Jupyter Notebook, en la que se muestra un fragmento de


código para editar en vivo y el resultado de este como un gráfico interactivo incrustado

5.3. Apache Zeppelin

Apache Zeppelin es una herramienta análoga a Jupyter Notebook pero orientada


al ecosistema Java. En vez de Python, el lenguaje de uso principal es Scala.

Igual que Notebook, es una herramienta web que permite el análisis interac-
tivo de datos. Pese a no ser una herramienta tan madura como Jupyter Note-
book, Zeppelin está más orientado a proporcionar un entorno de alto rendi-
miento capaz de manejar con fluidez grandes cantidades de datos.

Como base para la visualización de datos, apache Zeppelin utiliza NVD3 (des-
crita en el subapartado 4.1.1). Además de Scala, permite crear documentos in-
teractivos y colaborativos orientados a datos con otros lenguajes, tales como
Python, SparkSQL, Apache Hive, Markdown y shell scripts.
© FUOC • PID_00237568 42 Análisis y visualización de datos

5.4. Apache Lucene y derivados

Apache Lucene es un motor de indexado y búsqueda de altas prestaciones


orientado a documentos de texto. Entre sus características, destacan:

• Altas prestaciones: rápido, poco consumo de memoria, índices pequeños.

• Precisión en la búsqueda: búsquedas ordenadas por mejores resultados, o


por criterios del usuario.

• Consultas detalladas: se pueden consultar frases, utilizar comodines, bus-


car por proximidad, por rangos, con sugerencias para faltas de ortografía.

• Ayudas visuales, como resaltados, mezclas y agrupaciones de resultados.

• Soporte para diferentes tipos de documentos y dispositivos de almacena-


miento, ampliables mediante codecs.

Construida sobre el motor de búsqueda de Lucene, Apache Solr es una pla-


taforma distribuida construida con criterios de fiabilidad, escalabilidad y to-
lerancia a fallos. Proporciona indizado, replicación y balanceo de carga para
las consultas, así como recuperación automática ante fallos y configuración
centralizada.

Elasticsearch es otra plataforma distribuida de indizado y búsqueda análoga


a Solr y, como esta, está también basada en Lucene. Pese a ser más reciente
que Solr, goza de amplia popularidad debido a que Kibana (subapartado 4.1.1.)
está integrada encima de Elasticsearch.
© FUOC • PID_00237568 43 Análisis y visualización de datos

Bibliografía
J. W. Tukey (1977). Exploratory Data Analysis. Addison-Wesley. ISBN 0-201-07616-0. OCLC
3058187.

También podría gustarte