Está en la página 1de 81

Intro a la Tecnología

Big Data

1
Introducción a la Tecnología Big Data
Ayuda

Ayuda en la navegación

Objetivos

Objetivos

Introducción

Introducción

1.La (Pre)Historia del Big Data

1.1. La (Pre)Historia del Big Data

2. Y llegamos al siglo XX

2.1. Siglo XX

2.2. Cuestión de datos

3. Y se hizo el Big Data (al menos como definición)

3.1. Definición de Big Data

4. Pirámide del conocimiento: Datos, Información, Conocimiento

4.1. Pirámide del conocimiento: Datos, Información, Conocimiento

4.2. Revolución Big Data – Nivel conocimiento

4.3. Analítica predictiva

5. Nivel Dato: Extraer, Transformar y Cargar

5.1. Nivel Dato: Extraer, Transformar y Cargar

5.2. La revolución IoT

6. Nivel Información: Contextualización y flexibilidad

6.1. Intro al Nivel Información

6.2. SQL vs NoSQL

7. Bases de datos NoSQL

7.1. Bases de datos NoSQL

8. Sistemas no distribuidos vs sistemas distribuidos

8.1. Sistemas no distribuidos vs sistemas distribuidos

8.2. Hadoop

8.3. Ejemplo
2
9. Spark

9.1. Spark

10. Arquitecturas híbridas

10.1. Arquitecturas híbridas

11. ¿En mis instalaciones o en la nube?

11.1. ¿En mis instalaciones o en la nube?

11. 2. AWS productos y servicios

12. Nivel Conocimiento: Analizar y Comprender

12.1. Nivel Conocimiento: Analizar y Comprender

12.2. Visualización: a veces la vista no nos engaña

12.3. Herramientas de visualización de datos

12.4. Análisis: empezar a extraer conocimiento de los datos

12.5. Inteligencia Artificial: intentar que las máquinas piensen como nosotros

12.6. Tipos de inteligencia artificial

12.7. Términos a diferenciar

12.8. Sistemas cognitivos

Bibliografía

Bibliografía

Fin de módulo

¡Enhorabuena!

3
Ayuda

Ayuda en la navegación
1. Accede desde el menú principal al
listado de los apartados de la
unidad y sus secciones.
2. Muévete entre las secciones del
apartado utilizando las flechas
inferiores.
3. Avanza al siguiente apartado con
las flechas laterales.
4. Presta atención a las
instrucciones. Te indicarán cómo
interactuar con los contenidos.
5. No olvides hacer clic en todos los
textos que estén en azul para ver más información.
6. Haciendo clic en los iconos puedes descargar el pdf con los contenidos del
módulo.

Recuerda revisar todo el contenido de cada módulo.

4
Objetivos

Objetivos

En este módulo te presentamos una visión general de la tecnología que se


encuentra detrás de la revolución Big Data. El análisis de los datos masivos que
nos proporcionan la actividad de los usuarios cuando acceden a servicios online o
usan sus teléfonos inteligentes ha permitido a multitud de empresas conocer
mejor las necesidades de estos, y poder responder adecuadamente de formas
totalmente innovadoras y eficaces.

El campo del Big Data es muy extenso y algunos puntos exigen muchos
conocimientos y habilidades avanzadas que sólo se adquieren tras muchos años
de formación y dedicación. Sin embargo, en este módulo presentamos un marco
conceptual sencillo y accesible, que te permitirá tener una visión general para
comprender, en un primer momento, todo lo que conlleva la tecnología Big Data.
Además, te servirá de guía para seguir profundizando por tu cuenta, presentado
los principales conceptos de forma sencilla y enlazándolos entre sí dentro de ese
marco.

Ahora cuando alguna empresa te presente soluciones Big Data, podrás encajarlas
en alguno de los niveles descritos, y sabrás destacar los puntos importantes y
diferenciales de cada una de ellas. De la misma forma, cuando hables con
especialistas de esta tecnología, tendrás una base para hablar un lenguaje com.

5
Introducción

Introducción

En este módulo se introducirán los principales conceptos que han surgido dentro
del campo tecnológico que se ha ido denominando Big Data. Asociado a este
término, tan usado en multitud de ámbitos y escenarios distintos, se han ido
acumulando tecnologías, herramientas y soluciones que hacen de esta palabra un
concepto muy general y muchas veces no del todo comprendido.

Por este motivo comenzaremos por entender que la necesidad de comprender los
datos es algo consustancial al ser humano, desde su origen, y que poco a poco se
han ido creando herramientas que permitían un mejor uso de la información de la
que se disponía. Ya en la parte final del siglo XX coincidieron varias tecnologías
que supusieron un empuje definitivo a nuestras ansias de reconocer patrones y
obtener conocimiento de ellos, y que supusieron la puesta en marcha de lo que
luego se llamó Big Data.

Pero para comprenderlo, y ya que, como hemos dicho, es algo inseparable de la


actividad humana, utilizaremos un marco conceptual “robado” de otras ciencias
menos tecnológicas como psicología o teoría del conocimiento. Se trata de
comprender la diferencia ente datos, información y conocimiento, y usar esta
división para “compartimentar” y explicar las diferentes capacidades que hay que
desarrollar para poder usar en toda amplitud las tecnologías Big Data.

Con este mapa en la mano, se recorrerá el camino desde la información más


simple, el dato, hasta su transformación en conocimiento útil y válido. Se verá qué
significan conceptos como ETL, NoSQL, clústeres, llegando a marcos de desarrollo
como Hadoop o Spark., fundamentales y utilizados ampliamente en todas las
infraestructuras Big Data.

Para finalizar, analizaremos el nivel en el que de verdad en la actualidad se centra


la tecnología de Big Data: el conocimiento. Introduciremos en este nivel conceptos
como la inteligencia artificial, machine learning o deep learning.

6
1.La (Pre)Historia del Big Data

1.1. La (Pre)Historia del Big Data

Como se ha dicho anteriormente, la historia del Big Data comenzó hace muchos
años1, incluso siglos y milenios. Y la razón no es más que la de que el tratamiento
de la información y su utilización como herramienta ha sido fundamental en el
desarrollo evolutivo del ser humano. Nuestra ventaja primordial ha sido la
capacidad de comprender lo que nos rodeaba y usar ese conocimiento para
adaptarnos al medio.

En cuevas del paleolítico superior (alrededor del 18.000 A.C.) se han encontrado
indicios de que los humanos de ese tiempo ya tenían ciertas herramientas para
contar o hacer operaciones matemáticas sencillas. En palos o huesos2 se han
encontrado marcas que permitían llevar cierta contabilidad de comida o recursos.

Más adelante, alrededor del 2.400 A.C., en Babilonia se extiende el uso del ábaco,
aunque su origen parece ser las regiones de la actual China. Con esta herramienta
se podían hacer cálculos más sofisticados y con números más grandes.

También aparecieron las primeras


bibliotecas, siendo la más famosa de ellas
la Biblioteca de Alejandría, que buscaba
el objetivo de acumular todo el
conocimiento de la humanidad. Por
desgracia en el año 48 a.C. sufrió un
incendio y se perdieron gran cantidad de
libros, irrecuperables hoy en día.

Un poco antes, en el siglo II a.C. se


La Piedra del Sol es una representación del
desarrolló el primer ingenio mecánico
calendario azteca en la que se conjugan tres
que podría definirse como ordenador, el
factores del Big Data: a través de una
mecanismo de Anciticera3, con el
visualización comprensiva y compacta se
objetivo de hacer cálculos astronómicos
muestra información estructurada de multitud
y seguir el ciclo de los Juegos Olímpicos.
de datos con el objetivo de obtener un

7
Y siguiendo un poco más adelante, en conocimiento sobre los ciclos naturales de las
1663 se tiene noticia del primer uso de estaciones.
análisis de datos. El comerciante John
Graunt4, accediendo a los datos de
mortalidad de la ciudad de Londres, pudo crear un modelo con el que detectar
epidemias de peste bubónica.

Finalmente, el primer registro que se tiene del término “business intelligence”, uno
de los precursores del Big Data, aparece en 1865, gracias a Richard Millar
Devens5. Este lo usa en referencia al banquero Henry Furnese, que, analizando los
datos de los competidores de manera estructurada, consiguió obtener ventaje
comercial. Unos años después en 1881, para poder procesar los datos del censo
de Estados Unidos, un ingeniero llamado Herman Hollerith6 creó lo que se llamó la
“Hollerith Tabulating Machine”. La empresa que fundó gracias este antecesor de
las primeras computadoras modernas llegó a ser conocida como IBM.

1. https://linkedin.com/pulse/brief-history-big-data-everyone-should-read-bernard-marr

2. Ver el hueso de Ishango: https://wikipedia/wiki/Hueso_de_Ishango

3. Ver: https://wikipedia/wiki/Mecanismo_de_Anticitera

4. Ver: https:/wikipedia/wiki/John_Graunt

5. Ver: https://wikipedia/wiki/Business_intelligence#History

6. Ver: hhtps://wikipedia/wiki/Herman_Holleritch

8
2. Y llegamos al siglo XX

2.1. Siglo XX

Un gran hito que se produjo alrededor de mitad de siglo XX, con los estudios
teóricos de Alan Turing y la creación del primer ordenador totalmente digital
llamado ENIAC, fue la capacidad de poder procesar información según algoritmos
programables. En este momento se inició lo que hoy denominamos Informática.

Pero volvamos un poco más atrás en el tiempo. La necesidad de seguir utilizando


la información para mejorar la eficiencia empresarial produjo el gran avance de la
estadística y el marketing. Los grandes medios de comunicación (radio y televisión)
y los nuevos procesos de fabricación, permitieron llegar a gran cantidad de
consumidores. Para hacerlo de forma eficiente, era necesario conocer los gustos y
tendencias de los posibles clientes, y la única forma en la que se podía hacer era
mediante las encuestas y el tratamiento estadístico de las mismas. También se
utilizaban focus groups para obtener una información de tipo más cualitativo.
Ambas informaciones, cuantitativa y cualitativa, eran utilizadas ampliamente para
decidir las acciones a tomar en cuanto a fabricación, distribución o publicidad.
Esta era la etapa de lo que podíamos llamar Small Data. Esta información todavía
sigue usándose y en algunos momentos y etapas de todo producto es la única de
la que se puede disponer. La utilización del Big Data no implica que no se necesite
o sea útil la obtención de información a través de este tipo de métodos. Para
comprender ciertas actividades o comportamientos del usuario muchas veces es
imprescindible.

Aunque como se ha comentado, desde


mediados de siglo se dispone de los
primeros sistemas informáticos, pero
hasta las primera décadas del siglo XXI
no se ha producido el boom del Big Data.
Esto es debido a que en esa época se
produjo la convergencia de tres factores.

El primero fue la evolución en la


capacidad de procesar información de
9
los dispositivos informáticos. Desde la El desarrollo de la capacidad de los
creación y la fabricación de los circuitos procesadores ha seguido la Ley de Moore.
integrados basados en silicio, el número Parece que ya se está llegando al límite de
de transistores que se han podido capacidad física, el nuevo reto será el
integrar en los procesadores de los paradigma de procesadores cuánticos.
ordenadores ha ido creciendo
exponencialmente. Según la Ley de
Moore7, cada dos años se duplica el
número de transistores en los microprocesadores, lo que permite aumentar la
velocidad de procesamiento de estos.

7. Ver: https://wikipedia/wiki/Ley_de_Moore

10
2.2. Cuestión de datos
Por otra parte, también se ha producido
un gran avance en los dispositivos de
almacenamiento de datos. El precio por
Gigabyte ha decrecido enormemente
desde los 193.000 dólares del año 1980
hasta los 0,07 dólares del año 2009.

Finalmente, y también debido al


desarrollo tecnológico que ha hecho Evolución del coste del Gigabyte desde los
posible los dos anteriores fenómenos, a años 80
finales del siglo XX y principios del siglo
XXI se popularizó el uso de Internet y los
dispositivos móviles.

La posibilidad de enviar y recibir información desde cualquier parte del mundo y la


existencia de un dispositivo personal que siempre está con nosotros ha disparado
la cantidad de datos que las personas generan y que, por tanto, es necesario
almacenar, procesar y entender.

Para poder entender la gran cantidad de datos que se están generando, podemos
analizar los eventos que se producen en Internet cada minuto. Desde hace varios
años, se han publicado infografías al respecto de las que rescatamos la
comparativa entre 2018 y 2019.

Por ejemplo, como se puede ver, las horas de vídeo vistas en Netflix en un minuto
ha pasado de 266.000 horas a más de 996.000. En todas las demás categorías y
servicios han ocurrido también incrementos notables.

Esta gran cantidad de eventos e interacciones con los servicios conlleva, como
hemos dicho, una gran cantidad de información que puede ser almacenada,
11
tratada y analizada. Se han hecho diversos estudios de cuál es la cantidad de datos
e información que la humanidad genera y su evolución a lo largo del tiempo. Uno
de estos estudios realizado por Martin Hilbert y Priscilia López de la Universidad
de Carolina del Sur en 2011 puede servirnos de base.

Según este estudio 8, de 1986 hasta 2002, el ser humano generó unos 17
exabytes9 de información. Pero en los cinco años siguientes hasta 2007, se estima
que la creación de información creció hasta los 277 exabytes, 16 veces más. Y esta
evolución ha seguido un crecimiento exponencial hasta los 2,5 exabytes al día y
para 2020 se estima que llegaremos a generar un exabyte cada minuto.
Impresionante.

8. Ver: https://science.sciencemag.org/content/332/6025/60.abstract

9. Ver: 1 exabyte = 1.000 millones de GB.

12
3. Y se hizo el Big Data (al menos como definición)

3.1. Definición de Big Data

Ante esta situación, los ingenieros recogieron el reto para poder almacenar esa
gran cantidad de datos y también de crear las infraestructuras necesarias para
poder tratarlos de forma adecuada, rápida y flexible. Empezaron a crear la
tecnología que podía hacerlo realidad. Y poco a poco se fue creando un campo
que más tarde se definió como Big Data. En este campo se empezaron a mezclar
conceptos como información, datos, conocimiento, NoSQL, Data Mining,
Inteligencia Artificial, cloud, sistemas distribuidos, clústeres, privacidad, que hacían
muy difícil tener una definición concisa y clara de lo que significaba esta nueva
tecnología.

Una de las primeras definiciones fue presentada por la consultora Gartner 10 en


2012. Según este documento el Big Data son:

Big Data

Activos de información de gran volumen, gran velocidad y/o gran variedad que
demandan formas innovadoras y económicas de procesamiento de información,
que habilitan un conocimiento avanzado, la toma de decisiones y la
automatización de procesos.

Podemos ver que los tres conceptos básicos son volumen, variedad y velocidad.
Por eso se hablaba en un principio de las 3 Vs del Big Data. Con el tiempo esta
definición se fue haciendo más detallada, ampliando el número de Vs.

13
Volumen

Se necesita manejar una gran cantidad de datos, por lo que es necesario


gestionar de forma adecuada y flexible gran cantidad de información. La
dimensión o magnitud fundamental en este aspecto es "Cantidad".

Velocidad

Los datos se generan continuamente a toda velocidad, por lo que es


fundamental la capacidad de obtener datos, procesarlo y responder a ellos en
poco tiempo. De nada sirve tener muchos datos si al final la respeusta no llega
en el momento adecuado. La dimensión o magnitud fundamental es este
aspecto es "Latencia".

Variedad

En la actualidad se genera mucho tipo de información que no se ajusta ya al


formato tablas, como las imágenes, textos, comentarios en redes, audios, etc.
Por eso ha sido necesario crear nuevas formas de almacenamiento y acceso a
este tipo de datos. Es necesario gestionar la complejidad de estos múltiples
tipos de datos. La dimensión o magnitud fundamental en este aspecto es
"Complejidad".

Veracidad

Es necesario que estos datos tengan una calidad suficiente, que sean ciertos y
se ajusten a la realidad que se quiere capturar. La dimensión o magnitud
fundamental es "Incertidumbre". Siempre hay que tener en cuenta que se
debe manejar un nivel de incertidumbre por la calidad de los datos o por su
significación dentro de la situación real que se quiere analizar o medir.

Variabilidad

Los mismos datos y la misma información pueden significar cosas distintas


dependiendo del momento. Por ejemplo, un ususario puede acceder a una
págian web de una aseguradora para contratar un nuevo seguro o para
declarar un siniestro. El análisis debe ser distinto y se debe actuar de forma
distinta. Detectar la diferencia es crítico en el éxito de un caso de uso. La
dimensión o magnitud fundamental en este aspecto es "Contexto".

14
Visualización

Por el momento, la capacidad de encontrar conocimiento en la información


depende de personas. La IA puede ayudar a detectar eventos o mejorar el
análisis de la información, pero qué significa y qué hacer con ella depende de
la capacidad humana de comprensión. Por eso es de gran valor crear gráficos y
visualizaciones que nos permitan indagar en los datos y encontrar
regularidades. Y no solo apra poder buscar esos patrones, sino también y
sobre todo, para comunicar los resultados y hacerlos útiles dentro de la
organización. La comunicación es fundamental dentro de todos los proyectos
Big Data. La dimensión o magnitud es "Comprensión".

Valor

Objetivo básico de todo tipo de análisis: es necesario que se obtenga algún


tipo de conocimiento que permita a las personas y organizaciones utilizarlo
para mejorar algún aspecto u obtener nuevos ingresos. La dimensión o
magnitud fundamental es "Beneficio" como mejora que obtienen las personas.

10. Ver: Laney, Douglas. "The Importance of Big Data: A definition". Gartner Retrieved, 21 June 2012.

15
4. Pirámide del conocimiento: Datos, Información,
Conocimiento

4.1. Pirámide del conocimiento: Datos, Información,


Conocimiento

Durante todo este tiempo han surgido multitud de tecnologías y empresas que
han ido creando un mapa complejo y extenso. Es muy difícil categorizar a cada
empresa o tecnología en grupos estancos e incluso es difícil definir las categorías a
utilizar. Por eso es necesario crear un marco conceptual que nos permita disminuir
la complejidad de este horizonte y tener un punto de vista inicial para analizar lo
que ahora se llama Big Data. Y este marco debería ser lo suficientemente amplio y
estable para que pueda ser siempre útil, aunque se sigan introduciendo nuevas
tecnologías y soluciones.

Para ello acudiremos a un marco utilizado en psicología y teoría del conocimiento,


ampliamente utilizado. Para comprenderlo, analicemos las siguientes frases.

Todas las frases indican algún tipo de información, pero son diferentes
entre ellas. Están las más básicas, aquellas que indican un evento único,
individual ("No sale el sol", "Sale el sol"). Son puros datos no relacionados
con otro tipo de información. Este tipo de frase, de información, es la que
asociaríamos con el nivel Datos.
En el caso de "Hoy sale el sol", "Ayer salió el sol", "sale el sol a las 13:34", se

16
puede ver que la información es más compleja, se relacionan dos tipos de
eventos ("Sale el sol" y "Son las 13:34") que se corresponden con el nivel de
datos para crear un nuevo tipo de información más contextualilzada,
relacionada, agrupada en categorías, filtrada. Es el nivel Información.
"Mañana sale el sol" y "Todos los días sale el sol", son frases que no indican
ningún evento que se haya producido, surgen de analizar la información de
que se dispone en el nivel anterior, de relacionarla a un nivel más profundo
para buscar patrones, repeticiones que nos permiten inferir otros eventos
que se van a producir. Nivel Conocimiento.

Estos tres niveles forman lo que se puede denominar la pirámide del


conocimiento, que será el marco que utilizaremos para avanzar en la explicación
de los temas relacionados con el Big Data.

Nivel de los datos

Nos encontramos con la necesidad de conseguir datos desde multitud de


fuentes de diferentes tipos y a gran velocidad. Los datos pueden provenir de
organizaciones, empresas públicas o privadas, sensores, de redes sociales, de
Internet y de las mismas personas, a través de sus dispositivos o directamente.
La pregunta fundamental en este nivel es ¿cómo consigo datos con calidad
suficiente?

Nivel de la información

Este segundo nivel ya necesita de un procesado más avanzado de los datos. Es


necesario recoger los datos, categorizarlos, estructurarlos y relacionarlos unos
con otros para que, de forma sencilla, flexible y ágil, se puedan recuperar y
procesar. Aquí la pregunta fundamental es ¿cómo puedo almacenar los datos
y procesarlo de forma rápida y flexible?

17
Nivel del conocimiento

En este nivel superior lo importante es analizar la información y obtener


patrones que nos permitan extraer conocimiento de los datos. Este nivel
fundamentalmente es el nivel de las personas. Por el momento, y como se ha
indicado anteriormente, las únicas entidades que son capaces de extraer ese
conocimiento para comprender la información que existe en los datos, son los
seres humanos. Esto no implica que no sean necesarias herramientas y
algoritmos, pero al final, el sentido y la aplicación de ese conocimiento
depende de las personas. En la actualidad estas herramientas son tan
avanzadas gracias a la creación de la Inteligencia Artificial, aunque, como
veremos, todavía no se ha creado una inteligencia artificial que pueda
aplicarse a todos los casos de uso.

18
4.2. Revolución Big Data – Nivel conocimiento

Realmente la revolución del Big Data ha impactado en este nivel del


conocimiento. Desde hace mucho tiempo han existido multitud de datos e
información, se ha creado la tecnología necesaria para poder almacenarla y
procesarla. Desde la década de los 80, los bancos, las operadoras de
telecomunicaciones y otras compañías han contado con multitud de datos, que
han sido utilizados para la operativa principal, o para ver tendencias de ventas y de
mercado. También existían herramientas estadísticas y de data mining que
permitían extraer conocimiento de esos datos y aplicarlo para mejorar el negocio.

Sin embargo, con la explosión de los datos que hemos visto anteriormente, se ha
pasado de poder extraer información de forma agregada para ver tendencias de
tipo general o información de segmentos de mercado, a poder analizar y prever el
comportamiento de una persona determinada, pasando de un marketing basado
en segmentos a un micromarketing basado en las necesidades de cada usuario.

Por otro lado, también se ha pasado de la importancia de la respuesta a la


importancia de la pregunta. En el pasado, la investigación y análisis de datos
estaba enfocada en responder a las preguntas típicas del negocio: cuáles son las
ventas, cuántos clientes tengo, incluso preguntas más avanzadas como cuales son
las ventas previstas o estimaciones de mercado. Pero no era más que responder a
preguntas sobre información dentro de un ámbito que ya conocíamos, por lo que
siempre nos hacíamos las mismas preguntas. Era así, porque la dificultad de
conseguir datos adicionales, de poder procesarlos con rapidez y eficacia no
permitía tener recursos suficientes para poder dedicarlos al análisis más avanzado
y profundo de los datos.

Sin embargo, con las tecnologías asociadas al Big Data y la explosión de los datos,
han aumentado las posibilidades de disponer de información suficiente y de poder
procesarla con rapidez y eficacia. De esta forma, empiezan a surgir nuevas
preguntas que ni siquiera antes nos planteábamos. Nos movemos ahora en un
ámbito en el que no sabemos nada, pero tampoco sabemos qué preguntas son las
apropiadas. Por eso es tan importante hacerse las preguntas correctas, y por eso
de nuevo el aspecto más crítico es la capacidad humana de intuición e
imaginación. No es casualidad que en los últimos años Google ha estado buscando
perfiles más asociados a las ciencias humanas como psicología, antropología,
filosofía o sociología11. Estos perfiles obtienen las preguntas o hipótesis
adecuadas que hay que responder y los técnicos se encargan de analizar los datos
para corroborar o responder adecuadamente.

Este desplazamiento hacia preguntas y situaciones más complejas también ha


dejado su huella en la evolución de la analítica de las empresas. En primera
instancia nos encontramos con la etapa en la que la empresa no tiene ni siquiera la
capacidad mínima de poder utilizar los datos para obtener información sobre el

19
negocio. Cuando la empresa empieza a controlar la información operativa básica
para obtener cuadros de mando que indican la situación del negocio y el
conocimiento del cliente, estamos en el terreno de la Inteligencia de Negocio
“clásica”, y en este caso la analítica es del tipo descriptivo, es decir, se basa en
obtener información y conocimiento de lo que ha pasado. Así se puede conocer
cuántos clientes han comprado ciertos productos, cuántas ventas por delegación
se han contabilizado el mes pasado, y otra información de tipo similar
(acordémonos, preguntas que ya conocemos sobre lo que ya conocíamos).

11. Ver: https://www.elmundo.es/papel/todologia/2017/03/30/58db9331ca4741193b8b461

20
4.3. Analítica predictiva

Más adelante, cuando las necesidades de negocio aumentan y el mercado se hace


más competitivo, las empresas empiezan a preguntar sobre qué es lo que va a
pasar. Nos encontramos ahora en la analítica predictiva. En esta fase ya es
necesario conseguir más información, crear modelos más complejos y poder
entrenarlos para que nos den una respuesta adecuada a situaciones futuribles, por
lo que nos encontramos en el nivel superior de la pirámide, donde queremos
extraer patrones e inferencias a partir de los datos de los que disponemos.

Siguiendo por el camino, y si cada vez más tenemos modelos y conocimientos más
profundos sobre los datos, se llega a un tipo de analítica que se centra en darnos
propuestas sobre cuál es la mejor acción a realizar ante determinadas situaciones
de mercado, eventos del cliente o de los procesos de negocio. Es la analítica
prescriptiva. En este caso nos intentamos preguntar, a partir de la información de
la que disponemos, qué debemos hacer y, mediante modelos de simulación,
sugerir ciertos caminos de acción, con la previsión de sus consecuencias. Con todo
ello, los empleados de la empresa podrán tomar mejores decisiones y crear una
ventaja competitiva. Este tipo de modelos siempre deberían ofrecer propuestas
que serán validadas por una o varias personas. Pero puede ser que, en algún
momento, los modelos estén tan ajustados y hayan probado su eficacia en
multitud de ocasiones, que puede decidirse pasarlos a modo automático para que
esos empleados que antes validaban y elegían la acción final, no tengan que
hacerlo y se puedan dedicar a trabajar en investigar otros aspectos del negocio,
más creativos o importantes. En este punto nos encontramos ante la analítica
automatizada, donde juegan un papel fundamental la Inteligencia Artificial y la
Robotización.

Está claro que estas cuatro fases descritas conviven en la actualidad en cualquier
empresa, pero no solo porque el cambio organizativo y técnico es un proceso
largo que necesita el desarrollo en fases, sino, sobre todo, porque esta evolución
también es una evolución que afecta al mismo proceso de innovación basada en el
dato. En una primera fase, cuando se lanza cualquier producto o servicio, no se
tiene información sobre el mismo, y lo que se puede controlar es lo que está
pasando en ese momento (analítica descriptiva). A medida que se van
almacenando datos e información, ya se pueden realizar modelos más avanzados
que nos llevan hacia la analítica predictiva y prescriptiva, para llegar finalmente,
por razones de eficiencia y coste, a automatizar ciertos modelos y operaciones
(analítica automatizada). Y este proceso vuelve a empezar en un movimiento
cíclico y continuo.

Empecemos a utilizar este marco conceptual basado en los niveles de dato,


información y conocimiento para poder profundizar un poco más en la tecnología
Big Data y sus usos y aplicaciones.

21
22
5. Nivel Dato: Extraer, Transformar y Cargar

5.1. Nivel Dato: Extraer, Transformar y Cargar

El objetivo fundamental en este nivel se resume en el acrónimo ETL, ampliamente


utilizado en todo el ámbito de análisis de datos y Big Data.

ETL

Acrónimo de Extract, Transform & Load (Extraer, Transformar y Cargar).

Extraer (extract)

Se necesita crear la infraestructura y procesos necesarios para poder obtener


los datos desde las diversas fuentes disponibles. Hay que gestionar datos en
formato más estático desde fuentes tradicionales (bases de datos, sistemas
operacionales) y, también, datos en tiempo real a través de flujos (redes
dosciales, web, aplicaiones móviles). También es necesario enfrentarse a
multitud de interfaces distintas.

Transformar (transform)

Los datos obtenidos en la fase de extracción tienen formatos que puede que
no se adecúen a las necesidades de negocio, o que incluso no sea necesario
almacenarlos. Se trata, pues, de adaptarlos a la estructura que va a
almacenarlos. por ejemplo, un cambio típico es cambiar fechas de formato
anglosajón a formato europeo, o eliminar errores y campos vacíos.

23
Cargar (load)

Una vez que los datos están preparados, hay que cargarlos en los sistemas que
los almacenarán de forma definitiva. En esta fase se debe controlar la carga,
un proceso lento, costoso y con frecuentes errores, para asegurar que no se
pierdan datos y estos estén estructurados según se hayan definido.

Estos procesos aquí explicados también han cambiado profundamente ante el


avance de las tecnologías Big Data y del nuevo contexto de la explosión del dato.
Este cambio se ha producido en dos dimensiones fundamentales: en el tipo de
datos y en las fuentes que los originan.

En cuanto al tipo de datos, en períodos


anteriores solo podían utilizarse datos
estructurados. Esto significa que estos
datos tienen una estructura muy
definida y concreta, basada en registros
con campos fijos, tanto en su definición
como en su número. Es similar a tener
una tabla donde cada fila es una
observación o registro, y cada columna
es un valor asociado a esa observación.
Cada observación debe tener el mismo
número de campos, y además el orden
debe ser el mismo.

Sin embargo, a medida que los servicios digitales e Internet han ido
evolucionando, cada vez más se han ido creando información de forma no
estructurada: voz, textos, comentarios, imágenes, vídeos, etc. Este tipo de datos
no puede almacenarse en formatos de tipo tabla, y mucho menos, si se quieren
analizar, no se pueden ajustar al formato registro con campos fijos.

Por otra parte, también las fuentes de datos han ido cambiando. Debido a la
dificultad de almacenar información y a la inexistencia de un medio de
comunicación globalizado como Internet, en épocas anteriores solo se disponía de
los datos que las mismas empresas podían capturar y generar a partir de sus
operaciones o de su relación con el cliente. Podían disponer de sus ventas, de
información de sus clientes, del uso de sus servicios.

A medida que las empresas han empezado a utilizar las nuevas tecnologías,
comenzaron a recopilar información de sus páginas web, aplicaciones, redes
sociales. Esta información ha sido la que ha impulsado el desarrollo de las
tecnologías de Big Data y de analítica avanzada y ha supuesto una mina de oro
para mejorar las operaciones de las empresas.

24
Pero al mismo tiempo que esta información ha sido comprendida y utilizada por
las empresas, también ha destapado la necesidad de poder contar con información
más allá de la que la misma empresa dispone. Por ese motivo, también ha
empezado a utilizarse información pública e información incluso de otras
empresas. Por ejemplo, ahora se dispone información como la que provee ASNEF
para conocer el estado de morosidad de un posible cliente, o han surgido multitud
de iniciativas para poner de forma abierta información pública, lo que se ha
denominado Open Data.

25
5.2. La revolución IoT

En los próximos años esta expansión del dato aumentará de forma exponencial. En
un futuro no muy lejano cada persona dispondrá, tanto en su casa como para su
uso personal, de multitud de dispositivos conectados (relojes, televisores,
altavoces inteligentes, consolas, pulseras, etc.) que aportarán más datos, lo que se
conoce como la revolución IoT (Internet of Things). El uso y compartición de estos
datos provocará un salto adelante en el análisis del comportamiento de personas y
clientes. Esto ha provocado también un cambio en el mismo proceso ETL. Como
hemos visto, el proceso ETL comenzaba con la ingesta de los datos, su preparación
para eliminar errores y adaptarlos a la estructura final, para terminar con la carga
en los sistemas finales, mediante un proceso largo y costoso, proclive a fallos.
Además, al ajustar los datos a una estructura definida de antemano, es complicado
cambiarla ante nuevas necesidades de negocio, ralentizando la adaptación de este
ante los nuevos retos de mercado que puedan surgir.

Esta forma de trabajar es ineficiente en


el momento actual. Ahora se generan tal
cantidad de datos y a tal velocidad, que
no habría tiempo para poder adaptarlos a
la estructura final. Por eso, lo que se
hace ahora es alterar un poco el proceso,
modificando el orden “clásico” (ingesta,
carga y preparación). El dato llega en
formato de flujo o stream, en tiempo real
y mediante procesos de escritura
eficientes, se almacenan, en el mismo
formato y estructura con el que llegan,
en lo que se denomina un “data lake”
(luego veremos qué tipo de soluciones permiten crear estos data lakes). Y, ¿dónde
queda la etapa de preparación? Esta etapa se deja para cada uno de los procesos
que van a utilizar los datos. Accediendo a los datos almacenados en bruto, cada
proceso prepara sus datos según sus necesidades, por lo que se mejora la
flexibilidad y rapidez.

26
6. Nivel Información: Contextualización y flexibilidad

6.1. Intro al Nivel Información

Como hemos visto, en este nivel es donde se comienzan a relacionar los distintos
datos para poder contextualizar y extraer información de estos. Por tanto, el
objetivo fundamental en este nivel es estructurar los datos y relacionarlos de una
forma que permita un acceso y procesado flexible y rápido a su información.

27
6.2. SQL vs NoSQL

Desde el mismo comienzo de la informática se han ido creando soluciones y


herramientas para hacer más sencilla la estructuración y acceso a los datos. Uno
de los grandes hitos fue la creación de las primeras bases de datos relacionales y el
lenguaje SQL. Este lenguaje, creado en 1974, ha tenido tanto impacto en el
mundo de la analítica que se ha convertido en una especie de idioma
internacional, que es necesario conocer para dedicarse profesionalmente al
mundo de la analítica.

Una base de datos relacional es un paradigma que se ajusta perfectamente a la


idea de datos estructurados que hemos visto en el apartado anterior. Los datos se
almacenan en estructuras denominadas tablas, en la que cada fila es un registro u
observación, y cada columna es un campo o valor asociado a ese registro u
observación. Para añadir un registro se debe añadir una fila nueva y rellenar esos
campos con los valores adecuados. Por ejemplo, podríamos tener una tabla de
estudiantes con una estructura similar a esta:

El nombre de relacional proviene de que, para almacenar estructuras de datos


complejas, se crean distintas tablas que están relacionadas unas con otras a través
de índices, claves y otros elementos. La tabla anterior es sencilla, pero si
quisiéramos por ejemplo añadir campos para almacenar la asignatura, el profesor o
la clase y mantener todo en una tabla, se convertiría en una tabla complicada con
muchos campos con valores repetidos. Supongamos que los alumnos pueden ir a
diferentes asignaturas, tener distintos profesores y distintas clases. En tal caso, si
quisiéramos tener toda esa información en una sola tabla, tendría este aspecto:

28
Si quisiéramos saber las clases o profesores que hay deberíamos leer toda la tabla
y después eliminar los duplicados para obtener la lista final. Lo mismo ocurre si
quisiéramos saber qué asignaturas da cada profesor o preguntas similares. Como
vemos, a medida que aumentan los campos a insertar, la estructura en una única
tabla se vuelve impracticable.

Por este motivo, en vez de trabajar con una sola tabla se crea una estructura con
varias tablas que encierran la información de un mismo tipo y estas tablas se
relacionan mediante índices, claves o valores. Veamos cómo sería la misma tabla
anterior con un diseño más adecuado:

Vemos que, en vez de poner el valor real del alumno, asignatura o profesor, se
ponen referencias de valores que están en las otras tablas. Si vamos a esas tablas
y buscamos esa referencia, podemos extraer el nombre del alumno de la
asignatura o del profesor. Puede parecer que es menos eficiente y más complejo,
pero si quisiéramos, por ejemplo, cambiar el nombre de la asignatura o nos hemos
confundido en el nombre de un alumno, sólo deberíamos ir a la tabla
29
correspondiente y cambiarlo. De la otra forma, tendríamos que recorrer toda la
tabla de notas y buscar los valores a cambiar.

El paradigma SQL y de base de datos relacional ha sido el dominador claro en


muchas décadas, pero a medida que la cantidad y diversidad de los datos ha ido
aumentando, se ha visto que no era totalmente aplicable en todos los casos de
uso que iban apareciendo. Se fueron creando otro tipo de tecnologías de bases de
datos y hoy en día se puede decir que hay dos grandes familias: las bases de datos
SQL y las bases de datos NoSQL. El término NoSQL no significa que no se utilice
el SQL (veremos que al final, en muchos casos, se sigue utilizando), sino que puede
decirse que su significado es Not-OnlySQL.

30
7. Bases de datos NoSQL

7.1. Bases de datos NoSQL

Dentro del NoSQL podemos encontrar diferentes tipos de bases o sistemas de


datos.

• Clave-Valor: en este caso, los datos se almacenan en un formato clave-valor. Es


decir, todos los datos tienen un clave a partir de la cual se identifican y ordenan, y
esta clave tiene asociado un campo valor en el que se puede insertar cualquier
tipo de información (campos normales, un texto no estructurado, una foto, un
audio, un video, ...). El sistema de almacenamiento no se preocupa de qué tipo de
información se trate, no la estructura ni la formatea. Quién conoce cuál es la
información o estructura de los datos es la aplicación que utiliza los datos, no el
mismo sistema de gestión y almacenamiento de datos. Este tipo de bases de datos
son muy divisibles, rápidas, escalables y flexibles. Entre las más populares o
conocidas se encuentran Cassandra o DynamoDB.

Un ejemplo de cómo se almacena información en una base de datos


DynamoDB. La clave hace referencia a un disco, un DVD o un libro, e
incluso a una canción dentro de un disco. La estructura de los datos
es definida independientemente para cada tipo de dato. La aplicación
31
que use esta base de datos es la que conoce esa estructura.

• Documentales: las bases de datos documentales almacenan la información en


base a una estructura “documento”. Un documento es un texto con cierta
estructura donde se describen los campos de información y su valor asociado. De
esta forma, se puede almacenar cualquier tipo de información, e incluso, no hace
falta cambiar la estructura de toda la base de datos si es necesario añadir nueva
información (como ocurría con las bases de datos SQL). La estructura está definida
en el mismo documento. Por eso, este tipo de bases de datos son muy flexibles y
suelen ser utilizadas cuando no se puede saber de antemano el tipo de datos que
se van a utilizar o crear. Dentro de las más populares se encuentran MongoDB o
Couchbase. Hay que decir que una base de datos de tipo clave-valor podría
transformarse en una documental, simplemente insertando en el campo valor
cualquier tipo de documento.

En este ejemplo se trata de un texto.documento en formato JSON,


aunque pueden utilizarse otros formatos, como el XML o incluso
texto plano. La estructura está definida en el mismo documento con
su valor asociado. La flexibilidad de este tipo de bases de datos
permite que el campo info pueda tener estructuras distintas para
cada ítem.

• Columnares: como hemos visto, las bases de datos SQL orientan el


almacenamiento de los datos a una estructura en filas. Esto hace que la extracción
de los datos en base a cada registro sea eficiente, pero cuando lo que se quiere es
realizar operaciones de agregación sobre los diferentes campos, se obliga a tener
que leer todos los registros, obtener el valor de cada campo y luego realizar la
operación de agregación. Es una operación que se suele hacer habitualmente en
aplicaciones analíticas. Por ejemplo, si quisiéramos obtener los ingresos totales de
las ventas de un día, tendríamos que leer todos los registros de ese día, extraer su
campo precio de venta y después sumarlas, lo que implica muchas operaciones de
lectura. Sin embargo, las bases de datos columnares orientan su almacenamiento
en base a las columnas. De esta forma, si se quieren realizar una operación
agregada sobre un campo se leen de forma conjunta todos los valores de un
campo determinado en una sólo operación de lectura. Además, otra funcionalidad

32
es la de que suelen permitir que cada registro tenga diferentes columnas,
haciéndolas más flexibles que las SQL, ya que en este caso todos los registros
deben tener el mismo número de campos (columnas).

Ante una misma base de datos podemos ver la diferente forma de almacenamiento en disco.
En las bases SQL se colocan todos los campos de un registro de forma consecutiva, mientras
que en una base de datos columnar se almacenan todos los valores de cada campo de todos
los registros de forma consecutiva. Esto nos permitiría realizar la operación de media de las
notas en menos tiempo.

• Basados en grafos: este tipo de bases de datos utilizan una estructura en grafo
para almacenar la información. Un grafo es una estructura en la que existen dos
tipos de elementos: los nodos y las aristas. Los nodos son entidades de
información (una persona, un libro, un pedido, etc.) y las aristas representan
relaciones que se crean entre los nodos (por ejemplo, “María tiene el libro de
Matemáticas” o “El pedido contiene el artículo 328”). Tanto los nodos como las
aristas pueden tener atributos, para así poder complementar la información que
disponemos de ellos. Si tuviéramos una relación del tipo “María es propietaria de
la casa al 50%”, tendríamos dos nodos, “María” y “Casa”, y la relación “es
propietaria”. Asociado al nodo “María” podrı́amos tener los atributos “Edad:48”, y
asociado a la casa podíamos tener la referencia catastral. Y, finalmente, asociada a
la relación “es propietaria” podíamos tener el valor de “Porcentaje: 50%”. Puede
parecer que la estructura en grafos es demasiado complicada para que sea útil,
pero permite realizar ciertos tipos de búsqueda muy rápido, ya que la asociación
entre elementos está ya establecida en la misma estructura. Por ejemplo, si
quisiéramos saber qué casas tiene María, sencillamente deberíamos ir hasta el
nodo que representar a María y contar las relaciones del tipo “es propietaria”, sin
tener que ir buscando por toda la base de datos todos los registros. Este tipo de
base de datos es muy útil para representar relaciones entre personas, por lo que
pueden ser muy eficientes para manejar información dentro de redes sociales. La
más popular de las bases de datos orientadas a grafos en Neo4j.

33
Aquí podemos ver una representación en forma de grafo que tendría una base de datos SQL
típica. Como vemos las diferentes entidades son nodos dentro del grafo que pueden tener
atributos propios. La relación que en una base de datos en SQL queda fijada en la estructura
de registro y campos, en la base de datos orientada a grafos es una arista de un tipo
determiando ("es profesor de", "se matriculó en" o "imparte"). De forma rápida se puede ver
que "Daniel" tiene dos alumnos o que "paco" tiene dos profesores, mientras que en la base
de datos original es más complicado.

De todos modos, en los proyectos reales se suelen utilizar de forma simultánea


diferentes tipos de bases de datos. Cada una de ellas tienen una peculiaridad que
la hace ser más útil para determinados casos de uso, por lo que siempre los
diseñadores y arquitectos de sistemas elegirán aquellas que les proporcionen más
ventajas para la problemática que quieren resolver.

34
8. Sistemas no distribuidos vs sistemas distribuidos

8.1. Sistemas no distribuidos vs sistemas distribuidos

Unido a los diferentes tipos de bases de datos, se encuentra la decisión de cómo


implementar este tipo de organización de datos en sistemas informáticos reales.

En los primeros años de la informática, los primeros ordenadores eran monstruos


que ocupan habitaciones enteras, con multitud de componentes electrónicos,
sistemas de almacenamiento basados en grandes cintas magnéticas y que
consumían gran cantidad de energía. Los primeros fabricantes comercializaban
estas grandes máquinas (llamadas “Mainframes”) a las empresas que querían
utilizarlas para almacenar y procesar sus datos. Una empresa que quisiera seguir
ampliando la potencia de esas máquinas debían comprar a ese fabricante nuevas
unidades de almacenamiento, más procesadores o más memoria RAM, con el gran
costo que suponía. Era lo que se llamaba “Escalado Vertical”. Pero tenía un límite,
ya que, por restricciones de espacio y diseño, ese aumento de capacidad no podía
ser infinito, por lo que se debía comprar otro mainframe.

Sin embargo, a medida que los ordenadores se hicieron más baratos y se


mejoraron las tecnologías de comunicación, se empezó a pensar en el uso de
multitud de ordenadores conectados unos con otros, ejecutando de forma
coordinada todos los procesos y almacenando los datos de forma conjunta.

Este nuevo paradigma se denominó computación distribuida. El concepto


fundamental es el de clúster: un conjunto de ordenadores conectados todos entre
sí y controlados por un nodo central que coordina la ejecución de pequeños
procesos en cada uno de ellos. Este nodo controlador se denomina maestro
(master) y los demás son llamados esclavos (slave). En este caso la capacidad de
procesamiento depende fundamentalmente del número de ordenadores
conectados, por lo que, para aumentarla, basta con introducir nuevos nodos
esclavos en el clúster. Esto puede parecer más costoso, pero si tenemos en cuenta
que los ordenadores que se suelen utilizar en los clústeres son ordenadores del
tipo PC, es más barato que mejorar un gran ordenador. Este tipo de ampliación de
la capacidad de proceso se denomina “Escalado Horizontal”.

35
Grandes ordenadores versus clústeres

36
8.2. Hadoop

Uniendo los conceptos de bases de datos NoSQL y los sistemas distribuidos, a


mediados de la década de los 2000, el ingeniero Doug Cutting, que trabajaba en
Google, propuso un sistema de gestión, procesamiento y almacenamiento
distribuido llamado Hadoop (en honor a un elefante de juguete de su hijo12).

En la actualidad, Hadoop es un proyecto de software libre gestionado por la


fundación Apache, que proporciona un entorno para la creación de clústeres de
procesamiento distribuido. Tiene dos componentes fundamentales.

El primero es un sistema distribuido de ficheros llamado HDFS (Hadoop


Distributed File System), que permite almacenar grandes cantidades de datos. El
segundo es un algoritmo general de procesamiento de datos en entornos
distribuidos, llamado MapReduce.

Antes de explicar en más detalle estos dos elementos, nos centraremos en


explicar un concepto fundamental de Hadoop. Se trata de la filosofía de “en vez de
llevar los datos al código, llevamos el código al dato”.

Antes de Hadoop ya había sistemas distribuidos para el almacenamiento de datos


(por ejemplo, ya existían bases de datos distribuidas). Pero en muchos de esos
sistemas había un nodo central que pedía a cada uno de los nodos donde se
almacenaba la información que se la enviara para hacer el cálculo solicitado. Eso
hacía que todo el proceso fuera bastante lento: el envío de los datos por la red era
lento y encima el nodo central tenía que hacer cálculos complicados con muchos
datos.

Sin embargo, en Hadoop, lo que se pretende es llevar el código a donde están los
datos. El nodo central da a cada uno de los nodos esclavos el código que tiene que
ejecutar en los datos que ese mismo nodo almacena. Los datos no viajan por la
red, sino que los nodos esclavos realizan operaciones sobre esos datos y envían
resultados parciales al nodo principal que es el que final quien los agrega. Pero, al

37
ser resultados parciales, son menos cantidad de datos y el nodo central tiene que
hacer menos operaciones.

¿Cómo se consigue esto? Básicamente creando en cada nodo dos capas


diferenciadas que se encargan de la gestión del almacenamiento distribuido de los
datos (capa HDFS) y de la ejecución del código a aplicar a esos datos (capa
MapReduce).

Dentro de un nodo esclavo Hadoop hay dos áreas diferenciadas:

Nodo de Datos (Data Node): procesos encargados de gestionar los datos


almacenados en ese nodo.
Gestor de Tareas (Tasks Tracker): se encarga de controlar los procesos
necesarios para poder procesar los datos que existen en ese nodo.

En el clúster Hadoop hay un nodo especial, un nodo maestro que es un poco


distinto. Añadido a los gestores antes indicados (Nodo de Datos y Gestor de
Tareas) que realizan las mismas tareas que en los nodos esclavos, aparecen otros
procesos:

Gestor de trabajos (Jobs Traker): se encarga de coordinar todos los


Gestores de Tareas de cada nodo, indicando el código que tiene que
ejecutar cada uno. Todos estos procesos forman la capa MapReduce.
Nodo de Nombre (Name Node): este proceso gestiona el almacenamiento
dentro de cada Nodo de Datos y guarda dónde se encuentra cada fichero
distribuido. Todos estos procesos forman la capa HDFS.

Vamos a profundizar un poco más en cada una de estas capas para conocer cómo
funcionan.

38
Comenzamos con la capa HDFS. Como hemos dicho el Nodo de Nombres es el
encargado de decidir cómo se almacena la información entre los nodos que
forman un clúster. Su objetivo es conseguir la redundancia de información para
poder soportar fallos de hardware y además conseguir procesar la información de
ese fichero en paralelo. Todo ello lo consigue mediante la réplica de pequeños
trocitos de un mismo fichero en varios nodos de datos.

Cuando el fichero tiene una longitud pequeña (Fichero A), el Nodo de Nombre lo
replica un número determinado de veces (lo normal es 3) y coloca cada una de
esas réplicas en un Nodo de Datos distinto. Además, almacena la información de
qué réplica del fichero tiene en cada nodo.

SI el fichero es más grande (Fichero B), antes de hacer la réplica lo divide en


trocitos más pequeños llamados “chunk”. Cada uno de estos chunks son los que se
replican y se colocan en Nodos de Datos distintos. De la misma forma, guarda la
información de dónde se encuentra cada trozo y réplica del fichero.

Para leer cada uno de ellos hace el proceso inverso. Recuperando la información,
va a buscar en algunos nodos cada uno de los trocitos, los ensambla y entrega el
fichero total13.

Toda esta estructura permite una recuperación ante fallos muy eficiente. Si un
nodo se cae siempre hay algunos nodos que mantienen toda la información de
cualquier fichero.

Para terminar, he de indicar que el sistema HDFS guarda los ficheros en un


formato clave-valor. En cada fichero, en cada línea almacena una clave (que puede
ser cualquier valor) y después aparece el valor asociado. De esa forma se puede
almacenar cualquier tipo de datos, como hemos visto. Si en el fichero realmente
no hay una clave explícita (por ejemplo, cuando es simplemente una lista de
palabras), se suele usar el número de línea como clave. Hay que resaltar que,
aunque se utiliza el paradigma de clave-valor, HDFS realmente no se puede
considerar una base de datos, sino un sistema de almacenar información de forma
39
masiva y flexible, ya que realmente el acceso se basa en ficheros.

Sigamos con el proceso MapReduce. Como ya se ha comentado este algoritmo se


utiliza para procesar los datos repartidos entre los nodos de forma paralela y
distribuida. La base de MapReduce es dividir el proceso en tres pasos

Proceso Map

Se crea un proceso que lo que hace es leer cada “clave-valor” y transformarla


(mapearla) en otro par “clave i – valor i”. El programador tiene que definir el
código que realiza esa transformación dentro de una función Map(). El Gestor
de Trabajos envía este código a los diferentes Gestores de Tareas de los
nodos en los que se encuentran los ficheros a procesar. Las nuevas claves-
valor se almacenan en ficheros HDFS temporales y son utilizados por las
etapas posteriores. Si algún nodo falla en la ejecución, el Gestor de Trabajos
puede enviar el código a otro nodo disponible donde se encuentren otras
réplicas del fichero a tratar.

Proceso Shuffle

Lo que se hace es enviar todos los pares “clave i-valor i” cuya clave es la
misma a un nodo de datos. De esta forma se agrupa en un mismo nodo toda la
información asociada a una misma “clave i”.

Proceso Reduce

Al estar toda la información en un mismo nodo, se puede ejecutar el proceso


Reduce() definido por el programador para obtener un resultado agregado
asociado a esa “clave i”.

Escritura final: los resultados de la función Reduce() para cada clave son recogidos
y se escribe en el fichero de salida.

12. Ver: https://www.nytimes.com/2009/03/17/technology/business-computing/17cloud.html

13. Para una explicación con Lego más entretenida, ver: https://www.youtube.com/watch?
v=4GlfoWuONMY

40
8.3. Ejemplo
Podemos comprender mejor este proceso a través de
un ejemplo14. Tenemos un fichero de texto en el que
aparece una lista de frases en las que cada frase puede
tener uno o varios nombres de fruta. Queremos contar
el número de veces que aparece cada nombre de fruta
en el fichero:

Por ejemplo, si se cae el tercer nodo, siempre habrá al


menos dos copias de cada fichero o de cada trozo de
fichero, pudiéndose recuperarse. Cuando el nodo que se ha caído esté disponible,
el sistema HDFS volverá a copiar las réplicas necesarias para que se siga
manteniendo el sistema de redundancia. Realmente no hace falta hacer copias de
seguridad de los nodos, salvo uno. El Nodo de Nombres mantiene la información
de dónde está cada fichero, y, por lo tanto, si pierde esa información, no se podría
saber dónde está cada fichero. Por eso sí que se hace copia de seguridad de esta
información que almacena y gestiona el Nodo de Nombres.

Como hemos visto, primero el sistema HDFS habrá partido este fichero en trocitos
y lo habrá almacenado en nodos distintos. Por tanto, habría varios nodos que
deberán trabajar en paralelo para sacar la solución. El programador define la
función Map() de tal forma que lo que hará será leer cada línea, detectar cada
palabra, y crear una clave-valor del tipo “palabra 1”. Estas claves valores se
almacenan en ficheros clave-valor.

Como vemos en el ejemplo, el fichero original se ha dividido en tres trozos, a los

41
cuales se ha aplicado la función Map() comentada y se han obtenido ficheros con
las parejas “palabra 1”.

El siguiente paso es realizar las fases Suffle y Reduce(). Para la primera lo que hará
Hadoop será enviar todas las parejas clave-valor que tengan el mismo valor de
clave a un nodo distinto. En este caso, como tenemos 5 valores de clave posibles,
utilizará cinco nodos. Dentro de cada nodo se ejecutará la función Reduce(), que
en este caso consistirá en sumar todos los valores asociados a esa clave,
obteniendo como salida la pareja “palabra suma_de_valores”. Finalmente, todos
los resultados se unen en un fichero de salida, obteniéndose el recuento de
palabras:

En el ejemplo podemos ver para la clave “manzana” cómo se ha realizado el


Shuffle. También se puede ver cómo se realiza la función Reduce() sobre cada
nodo que almacena una clave distinta para obtener la salida final.

Puede parecer que este proceso es demasiado complicado para una tarea
simple que, hasta incluso nosotros, podríamos hacer de forma sencilla y bastante
rápido. Pero no hay que olvidar que en los casos reales nos enfrentamos a grandes
cantidades de datos. La disposición de los datos en un sistema HDFS y el proceso
MapReduce permite que la tarea pueda dividirse de forma muy sencilla entre
muchos ordenadores, e incluso que alguno de estos ordenadores pueda fallar y,
sin embargo, el proceso pueda finalizarse, ya que hay redundancia de datos y de
ordenadores.

42
Desde sus orígenes, Hadoop ha evolucionado hasta crearse un ecosistema de
herramientas, y soluciones que han ido
ampliando las funcionalidades y
mejorando su utilidad.

De forma paralela al desarrollo y


evolución de la capa básica de Hadoop,
también se han desarrollado multitud de
herramientas de código abierto para
ampliar la funcionalidad de Hadoop: Pig,
Hive, HBASe, Sqoop, Flume, Mahout,
Storm, Zookeper, Ozzie, Ambari...

De todos modos, al tratarse de código abierto y gestionado por la fundación


Apache, cualquier programador podría desarrollar diferentes herramientas y
soluciones para ampliar sus funcionalidades.

Aunque Hadoop, como ya se ha comentado, es una herramienta de código abierto


gestionada por la fundación Apache, y cualquiera puede bajárselo, instalarlo y
configurarlo en los sistemas, las compañías comerciales necesitan cierto soporte y
funcionalidades que de forma estándar no están disponibles.

Por ello varias empresas han desarrollado distribuciones de Hadoop, que hacen
más sencilla su instalación, mantenimiento y soporte dentro de los entornos
empresariales. Dos de las empresas que crearon este tipo de distribuciones,
Cloudera y HortonWorks, se fusionaron en 2018-2019, y operan ahora con el
nombre de Cloudera. Otra distribución conocida es la ofrecida por MapR.
Finalmente, otros grandes de la informática y tecnologías de la información
también tienen sus distribuciones como en el caso de IBM o Amazon Web
Services.

14. Otro ejemplo más heterodoxo para explicar el algoritmo MapReduce con cartas de poker se puede ver
en: https://www.youtube.com/watch?v=bcjSe0xCHbe

43
9. Spark

9.1. Spark

De forma similar y paralela al desarrollo de Hadoop, desde 2009 se comenzó a


desarrollar en el AMPLab de la UC Berkeley, otro framework de computación en
sistemas distribuidos que seguía otro paradigma de programación. Este proyecto
denominado Spark fue cedido también a la Apache Foundation y es de código
abierto, por lo que de la misma forma que Hadoop han ido surgiendo nuevas
funcionalidades y soluciones que han creado un ecosistema completo.

Como característica principal, Spark trabaja por defecto en memoria, por lo que es
bastante más rápido que Hadoop, cuyo trabajo principal se realiza en disco.
Incluso aunque se fuerce a trabajar en disco, Spark supera en velocidad a Hadoop.
Además, su modelo de programación es más flexible, y no se restringe a un
modelo fijo, como sí lo hace MapReduce.

Spark está más orientado a trabajos en tiempo real, pero su flexibilidad también le
permite trabajar en entornos batch o de procesado por lotes (procesado masivo de
datos sin interacción con el cliente que puede ser programado y cuyo resultado no
es necesario que esté en tiempo real). Esto ha permitido poder integrar el
procesado de datos en tiempo real con datos almacenados, clave para el desarrollo
de los casos de uso más avanzados dentro del Big Data.

Sin embargo, Spark no tiene un sistema de ficheros propio, tal y como lo tiene
Hadoop. Por este motivo, los sistemas Spark suelen utilizar y son compatibles con
el sistema HDFS. Por lo tanto, no tiene sentido contraponer Spark y Hadoop, ya
que en la mayoría de las implementaciones de sistemas distribuidos existentes en
la actualidad ambos sistemas suelen coexistir, y se utilizan para implementar de
forma más efectiva ciertas necesidades.

De la misma forma, también se han desarrollado bajo el paraguas de Spark


multitud de herramientas que han permitido mejorarlo y hacer más sencillo su uso.

44
De la misma forma que Hadoop, también se han desarrollado otros sistemas y
soluciones para facilitar y mejorar el uso de Spark.

1. Lo primero, resaltar que Spark no tienen un sistema de gestión de ficheros o


motor de base de datos propio, por lo que necesita acceder a diversos
motores como Hadoop, Cassandra, Hive, HBASE, bases de datos SQL e,
incluso, ficheros de texto o en formato JSON.
2. Segundo, Spark desde el comienzo ha dispuesto de Apis para ser utilizado
por varios lenguajes de alto nivel como Scala, Java, Python o R. Esto
permite una gran flexibilidad, desarrollo y que tenga una gran popularidad
entre los programadores de multitud de ámbitos.

SparkSQL: utilidad para poder usar SQL con nodos Spark.


Spark Streaming: motor para poder trabajar con datos en tiempo real.
MLlib: librería para poder ejecutar y desarrollar algoritmos de machine
learning para datos masivos y en entornos distribuidos.
GraphX: librerías para poder trabajar con objetos del tipo grafo, con
algoritmos orientados y específicos para este tipo de datos y estructuras.

45
10. Arquitecturas híbridas

10.1. Arquitecturas híbridas

A medida que se han ido aplicando este tipo de soluciones a los casos reales
dentro de empresas y organizaciones, han aparecido las dificultades y necesidades
que estos casos de uso requerían. Uno de ellos ha sido la necesidad de poder
combinar un procesamiento en lotes con el procesamiento de los datos en tiempo
real.

La mayoría de las empresas recopilan datos que luego son utilizados para poder
perfilar clientes, procesar las ventas y en general para poder mejorar las
operaciones de la empresa. Estos procesos se solían realizar en modo batch o por
lotes, primero debido a la gran cantidad de datos que se iban almacenando y,
segundo, a que, en ese momento, no era necesario que los resultados estuvieran
en tiempo real.

Sin embargo, a medida que los usuarios se conectaban a los diferentes canales,
utilizaban distintas aplicaciones, generando datos y datos, se hacía necesario
procesar estos datos y responder a ellos en tiempo real. Pero no solo basándose
en los datos que se generaban en ese momento, sino también respondiendo a
toda la información y conocimiento de la que se disponía.

Por lo tanto, era necesario combinar la información en batch y los datos que
llegaban continuamente en tiempo real. Para responder a ese reto, se propusieron
dos arquitecturas: la arquitectura Lambda (λ) y la arquitectura Kappa (κ).

La arquitectura Lambda combina dos capas distintas para poder procesar datos en
batch con datos en tiempo real: la Capa Batch + Servicio y la Capa de Velocidad.

46
En la arquitectura Lambda los datos nuevos son enviados tanto a la capa de Batch
como la capa de Velocidad. En la capa Batch los datos son almacenados dentro de
la zona de datos maestros. Estos datos maestros son procesados para generar
vistas de los datos que serán utilizadas posteriormente. Estas vistas son somo
resúmenes o “fotos” de los datos procesados, para que, cuando tengan que se
servidas en tiempo real de consult,a no se tengan que volver a procesar de nuevo
todos los datos. Estas vistas son entregadas a la capa de servicio que se encargará
de servirlas cuando los usuarios realicen las diferentes consultas. En la capa de
velocidad, solo se procesan los datos realmente nuevos, y se preparan las vistas en
tiempo real.

Cuando un usuario quiere obtener información, realiza una petición, y el sistema


combina las vistas batch con las vistas en tiempo real, mostrándolas de forma
integrada y unificada.

Aunque la arquitectura lambda fue la primera que se propuso para poder unificar
el tiempo real y el batch, conlleva una gran dificultad. El procesado se realiza a
través de dos caminos que pueden implicar tecnologías y sistemas de desarrollo
distintos. Estos dos caminos tienen que estar sincronizados y cualquier cambio en
uno de ellos implica un cambio en el otro, por lo que la gestión de una arquitectura
lambda es complicada.

Por eso se propuso unos años después la arquitectura Kappa (κ).

47
En este caso, para evitar la complejidad de mantener dos caminos distintos, se
elimina la capa batch y todo se procesa en tiempo real. Los datos de tipo batch se
consideran como datos en tiempo real acotados, por lo que cuando se necesitan
se vuelven a introducir en el flujo de entrada para que se procesen de nuevo.
Mediante el procesado de este flujo de datos, se generan las vistas en tiempo real
que son entregadas a la capa de servicio para ser servidas cuando se soliciten en
las consultas pertinentes.

Esta arquitectura es más sencilla en su concepto al no tener que sincronizar dos


caminos distintos para los datos. Sin embargo, es necesario disponer de un sistema
que gestione los tipos de datos batch que se tienen que introducir y cuando
deben ser introducidos para que puedan ser reprocesados. Por otra parte, si estos
datos batch necesitan de mucho procesamiento para generar los resultados y
vistas, por ejemplo, en los casos en los que se usan técnicas de machine learning
para la obtención de perfiles de los clientes, se genera mucha carga extra. En estos
casos sería mejor utilizar una arquitectura lambda. Pero como, en cualquier caso,
la solución final a desarrollar depende de la finalidad que se persiga y,
normalmente, no se puede cubrir todas las necesidades con una única solución.

La evolución dentro de las diferentes soluciones de Big Data es continua y se realiza de


forma paralela y combinada

48
11. ¿En mis instalaciones o en la nube?

11.1. ¿En mis instalaciones o en la nube?

Por lo que hemos visto, para poder gestionar una gran cantidad de datos de forma
eficiente y flexible se necesitan grandes clústeres de cientos e incluso miles de
servidores, donde se ejecuten sistemas de computación distribuida como Hadoop
y Spark. El mantenimiento y gestión de estos sistemas es bastante complejo y
costoso. Es necesario disponer de multitud de personas que en horarios continuos
mantengan en funcionamiento multitud de componentes informáticos, equipo
especializado que pueda configurarlos y operarlos, y además una conexión a la red
eléctrica constante, no sólo para dar energía a esos mismos servidores sino
también para mantenerlos refrigerados.

Podemos imaginarnos que las grandes compañías líderes en el uso y explotación


de los datos y de la información, han invertido y construido plantas para poder
almacenar estos grandes clústeres, en localizaciones que dispongan de todos los
requisitos necesarios15. Necesitan tener estas infraestructuras controladas ya que
son el propio núcleo de su negocio, y más que un coste, es un activo estratégico
que puede impactar directamente en la cuenta de ingresos y costes.

Mientras tanto las compañías tradicionales, habían invertido en centros de datos


propios donde tenían sus grandes sistemas informáticos anticuados, con grandes
ordenadores “mainframe” y sistemas herederos de la informática del siglo XX. El
paso a estas grandes instalaciones que conlleva el uso apropiado de la multitud de
datos que estaban generando sus clientes implicaban nuevas y grandes
inversiones, y no estaba claro que fueran una inversión en vez de un coste, porque
el centro del negocio no se encontraba en la explotación de los datos que estaban
almacenando.

Pero estos dos mundos se encontraron. Las grandes empresas tecnológicas


estaban creando centros de datos con multitud de servidores, y con una gran
capacidad de procesamiento instalada, para preparar el crecimiento de datos que
49
debían de gestionar en años futuros. Tanta que muchas veces estos servidores
estaban infrautilizados en momentos valle del día.

Así que, a finales del 2003, dos ingenieros de Amazon 16 propusieron aplicar todo
lo que habían aprendido en el desarrollo de la propia infraestructura informática
de la empresa, y montar una nueva división que ofreciera esta capacidad y
servicios a otras empresas, y así nació Amazon Web Services, líder indiscutible de
lo que se empezó a llamar “la nube”. Millones de ordenadores, almacenamiento,
sistemas informáticos puestos a disposición en modo de pago por uso, con
interfaces y herramientas que hacían posible que en pocos minutos una sola
persona pudiera crear, configurar y utilizar clústeres de datos sin tener que
comprar, instalar y operar. Sin tener que hacer inversiones que luego no pudieran
ser rentabilizadas: con solo pulsar el botón de off en una pantalla de ordenador, el
clúster de datos desaparecía y los servidores que lo formaban eran reutilizados
para otros clientes. Sólo se paga por el tiempo que se usaba o tenía disponible esa
infraestructura.

Esto permitió a las compañías clásicas poder hacer una migración hacia el nuevo
paradigma de procesado de datos. Sin tener que hacer inversiones costosas que
luego deberían ser desechadas si no eran rentables, sin tener que comprar, instalar
y mantener equipos informáticos, sin tener que crear equipos que tuvieran que
mantener el hardware, el almacenamiento y el sistema físico donde se alejaban.
Procesos que estaban en torno a meses de desarrollo podían hacerse en minutos,
con menos personal y gastos.

Estos dos tipos de acercamiento para crear la infraestructura necesaria para poder
disponer de las capacidades de computación que exigen los nuevos sistemas
distribuidos de procesamiento de datos e información se conocen como “on-
premises” (en instalaciones propias) o “cloud” (en la nube). Estos servicios de cloud
se pueden dar, de forma genérica en tres formas:

• IaaS (Infrastructure as a Service): el proveedor proporciona las “máquinas”


hardware necesarias para que el cliente instale el sistema operativo y aplicaciones
que desee.

• PaaS (Platform as a Service): en un nivel de integración superior, el proveedor


además proporciona software (el sistema operativo y servicios básicos) para que el
cliente pueda crear y desarrollar sus propias aplicaciones y servicios.

• SaaS (Software as a Service): en este caso la integración es total. El propio


proveedor proporciona hasta las mismas aplicaciones que el cliente utilizará. Este
es el caso de la mayoría de las aplicaciones y servicios que utilizamos. Por ejemplo,
los servicios de Google como Gmail, Maps, Docs son servicios SaaS, ya que el
cliente tiene a su disposición, sin tener que invertir, una aplicación de correo, de
mapas o un sistema de creación y compartición de documentos ofimáticos.

50
Si tenemos en cuenta los diferentes niveles funcionales que existen dentro de un
servidor, podremos distinguir los distintos servicios cloud que pueden ofrecerse.

Si nosotros somos los que compramos los servidores, los isntalamos en nuestra
red, cargamos el sistema operativo y las diferentes aplicaciones, estamos en un
entorno On-premises.

Si alquilamos a un tercero el hardware (Red, Almacenamiento, Servidores y


Virtualización), deberemos gestionar nosotros mismos la instalación y
mantenimiento de un sistema operativo y del entrono que nos permite desarrollar
nuetras propias aplicaciones. Ene ste caso estaremos habalndo de IaaS
(Infraestructuras as a Service).

Como PaaS (Platform as a Service), dejamos que el tercero también gestione el


sistema operativo y el entorno de ejecución. Nosotros solo tendremos que
ocuparnos de disponer de los datos y de desarrollar nuestras aplicaciones y
servicios.

Finalmente, podríamos contratar con el tercero todos los niveles. En este caso solo
deberemos usar la aplicación que ete tercero ha desarrollado. Puede parecer
extraño, pero en realidad estamos todo el día utilizando aplicaciones de este tipo.
Cuando accedes a Gmail, Facebook o aplicaciones similares, estamos usando una
aplicación SaaS (Software as a Service).

Dentro de los proveedores de servicios en la nube destaca Amazon Web Services


(AWS). Amazon fue la primera empresa que desarrolló estos servicios de una
forma transversal y destinada a todo tipo de público, desde el uso personal hasta
la creación de grandes entornos empresariales desarrollados totalmente en la
nube. Por ejemplo, Netflix en el año 2016 terminó por cerrar sus propios centros
de datos para terminar su migración total a la nube17.
51
A lo largo de todos estos años, Amazon ha desarrollado multitud de servicios en
todos los modos posibles. Desde su primer servicio en modo IaaS denominado
EC2, ahora ofrece cientos de servicios que permiten desarrollar cualquier tipo de
infraestructura.

15. Ver: https://www.xataca.com/empresas-y-economia/google-apple-facebook-y-el-nuevo-amor-


incondicional-hacia-los-centros-de-datos-nordicos. Y no siempre tienen que ser sitios feos y aburridos,
ver: https://www.dcd.media/features/los-10-data-centers-m%C3%A1s-bellos-del-mundo.

16. Ver: https://es.wikipedia.org/wiki/Amazon_Web_Services#Historia

17. Ver: https://www.ciospain.es/comunicaciones/tras-diez-anos-netflix-termina-su-migracion-a-la-


nube-con-aws, o también ver: https://aws.amazon/es/solutions/case-studies/netfllix/

52
11. 2. AWS productos y servicios

Entre todos los servicios y productos de los que dispone AWS pueden destacarse
los siguientes18:

• Servicios de almacenamiento

- S3: almacenamiento básico, tan flexible y útil que se ha convertido en un


estándar de facto. Multitud de soluciones Big Data permiten conectarse por
defecto a este tipo de servicio. La peculiaridad de S3 es que no es necesario
reservar por anticipado la cantidad de espacio que piensas que vas a necesitar.
Simplemente enviando los datos que se quiera almacenar, se amplía o reduce
automáticamente el espacio reservado.

- EBS: es el almacenamiento que está asociado a los servidores estándar que


puedes crear en AWS. Son como los discos duros que tendrían esos PCs. En este
caso, sí que es necesario definir la memoria que se va a necesitar, pero ampliarla o
reducirla es tan simple como pulsar unos cuantos botones.

- Glacier: es una memoria de almacenamiento de más larga duración, destinado


sobre todo para guardar información de gran tamaño pero que no se use
frecuentemente, como las copias de seguridad. La velocidad de lectura es mucho
más lenta que en S3 o en EBS, pero a cambio el precio es mucho menor.

• Hardware

- EC2: es el servicio de máquinas-servidores bajo demanda en modo PaaS.


Amazon, en unos pocos clicks y minutos, permite crear un servidor de entre una
lista de máquinas disponibles con diferentes características y funcionalidades. Al
instante tienes una máquina preparada con un sistema operativo (Linux,
Windows), mantenido y actualizado en todo momento de forma automática y
desasistida por parte del usuario.

- EMR: de la misma forma, AWS permite disponer en muy poco tiempo de un


clúster Spark/Hadoop con cualquier número de nodos y utilidades.

• Bases de datos

- RDS: servicio de base de dato relacional. El usuario puede disponer de varias


bases de datos de tipo relacional bajo demanda.

- Redshift: servicio de base de datos de tipo columnar de alta capacidad y


rendimiento. Es muy utilizada para procesos de gran carga, pudiendo manejar
petabyes de datos de forma eficiente.

- DynamoDB: una base de datos de clave valor y orientada a documentos que

53
destaca por su rapidez de lectura debido a su almacenamiento caché en memoria.
Por eso, es muy utilizada como base de datos en aplicaciones y servicios web que
gestionan multitud de accesos por parte de los usuarios.

• Servicios

- Kinesis: servicio para poder crear y gestionar flujos y stream de datos para
aplicaciones en tiempo real.

- Machine learning: solución que permite aplicar algoritmos de machine learning


sobre gran cantidad de datos.

Todos estos servicios pueden en cualquier momento “desenchufarse”: si una vez


utilizado no se necesita tenerlo disponible, el usuario puede “congelarlo”, y dejar
de pagar por el servicio. Si en un momento posterior quiere volver a utilizarlo,
puede “levantarlo” de nuevo, y toda la configuración se recupera. De esta forma
sólo se paga por el tiempo en el que los recursos contratados están siendo usados
(menos algún tipo de servicios especiales).

Como se puede suponer, este tipo de servicios tienen multitud de ventajas. La más
importante es la flexibilidad. En muy poco tiempo puedo tener disponible un
sistema totalmente configurado y preparado, sin tener que invertir de antemano
en comprar equipos, licencias o recursos. Además, si por motivos de negocio la
empresa tiene que crecer o disminuir, simplemente puedo eliminar o aumentar la
capacidad, pagando por lo que estoy utilizando sin perder ningún tipo de
inversión.

Todo esto hace que las empresas puedan pasar de un modelo de inversión en
grandes centros de datos a un modelo basado en contratación de un servicio, por
lo que se pasa de gasto en capital (CAPEX) a gastos operacionales (OPEX), lo que
es más asumible para startups y pequeñas empresas.

Adicionalmente, la evolución tecnológica es más sencilla. El proveedor de servicios


cloud actualiza de forma automática el hardware de las máquinas utilizadas,
haciendo que se puedan tener servidores de última generación sin tener que crear
grandes procesos de migración.

De la misma forma sucede con el software. El proveedor de servicios cloud


mantiene actualizado el sistema operativo y los servicios, instalando los últimos
parches de seguridad. Y, además, como multitud de usuarios están probando lo
mismo, la solución ofrecida es robusta y a prueba de fallos.

Pero, por otra parte, también hay ciertas desventajas. La más importante es la
sensación de pérdida de control. Los usuarios pueden sentir que su datos y
máquinas están menos bajo control, por lo que pueden surgir dudas sobre la
privacidad y confidencialidad.

54
Pero en verdad, en la mayoría de los casos es una sensación irreal. Desde hace
muchos años las grandes corporaciones ya habían externalizado el servicio de
centro de datos. Aunque se consideraba que los centros de datos eran propios, en
verdad estaban siendo gestionados por terceras partes, que ponían a disposición
de estas empresas parte de la capacidad que tenían disponible en centros de datos
compartidos. Así que ya se podía considerar que se estaba usando la nube, pero
sin la flexibilidad y sencillez que permiten los servicios cloud. Por ejemplo, la
instalación de nuevos servidores era un proceso de varios meses, mientras que en
la nube es cuestión de minutos.

Por eso, en realidad, para disfrutar de todas las ventajas que ofrece el desarrollo
en la nube, la mayoría de las empresas utilizan sistemas híbridos. Se dispone de
una infraestructura “on-premises”, para almacenar información que por su alto
nivel de confidencialidad o privacidad necesita ser procesada en un entorno más
controlado. Cuando se necesita disponer de mayor capacidad de proceso, se
dispone de una infraestructura en la nube a la que se envía información cifrada
y/o anonimizada, se procesa y se recogen los resultados. Cuando ya se ha
terminado de procesarlos, esta infraestructura se congela, por lo que no se incurre
en más gastos innecesarios. Esta forma de actuar es muy común cuando las
empresas van a lanzar grandes campañas puntuales, y se necesita dar servicio a
una gran demanda de peticiones y usuarios (por ejemplo, el Black Friday).

18. Para un listado de casi todos los servicios disponibles, ver: https://www.linkedin.com/pulse/listado-
de-todos-los-servicios-amazon-web-services-daniel-pe%C3%B1a-silva/

55
12. Nivel Conocimiento: Analizar y Comprender

12.1. Nivel Conocimiento: Analizar y Comprender

Por último, ya hemos llegado al nivel de Conocimiento, donde lo que se busca es


analizar la información obtenida, interpretarla, comprenderla y hacer inferencias
que permitan obtener algún tipo de valor.

El proceso de Análisis puede parecer una etapa en la que la creatividad juega un


papel importante. Sin menospreciar la necesidad de saber hacer las preguntas
correctas y tener cierta inventiva e intuición en la búsqueda, el análisis suele
seguir unas etapas y pasos típicos que conforman cierta metodología19.

Preparación de datos

Aunque en los procesos ETL ya se pueden haber corregido muchos errores,


después de conseguir los datos, siempre hay que limpiarlos, por ejemplo,
rellenando campos vacíos con valores normalizados, eliminar variables que no
se van a utilizar o no tienen sentido para el análisis, y realizar las primeras
transformaciones (por ejemplo, entre las más típicas la normalización de
fechas o cambio del punto por coma decimal, o normalizar formatos de
números.

Estructurar los datos

Una vez limpios y aunque los datos también tengan ya cierta estructura, como
el análisis puede dirigirse hacia otros objetivos distintos de los definidos
cuando se recogieron los datos, es necesario estructurarlos de la mejor forma
que permita que el análisis sea más sencillo. Se empiezan a relacionar unos
datos con otros y además se dejan preparados en algún formato o en algún
tipo de bases de datos o sistema de ficheros (relacional, NoSQL, HDFS) que
pueden ser procesados por las herramientas utilizadas en fases posteriores

56
Análisis

En esta fase se empieza a comprender e interpretar los datos. Para ello las
herramientas fundamentales son la estadística, al utilizar técnicas de muestreo
y métricas estadísticas, y sobre todo la visualización de los datos, desde la
simple creación de tablas numéricas, hasta los gráficos y animaciones más
complejos y completos. En esta fase se empieza a intuir las diferentes
propiedades de los datos que guiarán los siguientes pasos

Creación de modelos

Una vez se ha empezado a comprender los datos, sus propiedades, y


basándose en los objetivos del análisis, se comenzará a definir qué modelos
podremos utilizar para intentar encontrar patrones e inferencias útiles que
satisfagan las necesidades definidas. Un modelo es una representación de la
realidad que nos indica algún tipo de predicción o conocimiento sobre esa
misma realidad. Los modelos obtienen a partir de unas variables conocidas (las
variables de entrada o independientes) una o más variables calculadas o
inferidas (variables dependientes o target) que no conocemos y que tienen
cierto valor para poder realizar algún tipo de acción

Prueba y optimización

Aunque el modelo puede tener cierta eficacia teórica, siempre hay que
probarlo y confrontarlo con la realidad. Para ello es necesario ejecutar algún
tipo de test o prueba real, eligiendo grupos de control, para así comprobar el
valor real de los modelos. Muchas veces los modelos son muy buenos
detectando o infiriendo variables, pero su aplicación puede fallar por
cuestiones tales como la dificultad de escalarlo hacia todos los clientes o la no
adecuación a los procesos o productos de la compañía. Pero incluso si el
modelo funciona adecuadamente, su aplicación nos ofrece nuevas variables e
incluso nuevos descubrimientos de relaciones que no habíamos detectado y
que, por tanto, pueden volver a ser analizadas para optimizar el modelo. De
esta manera, de una forma cíclica, volvemos a la primera etapa, recogiendo y
preparando esa nueva información y datos para su análisis

Las etapas de este proceso que hemos indicado tienen cierta relación con los tipos
de analítica que se habían visto anteriormente. Por ejemplo, en la Analítica
Descriptiva que buscaba responder a la pregunta sobre qué ha pasado, se suele
llegar solamente a las tres primeras fases (limpiar, estructurar y analizar). Sin
embargo, en la Analítica Predictiva y Prescriptiva se llegan a realizar todas las
etapas.

57
El proceso de análisis suele seguir unos pasos muy definidos, con tareas muy específicas y
que utilizan herramientas enfocadas en resolver la problemática de cada etapa. La utlización
de cada una de las etapas también tiene mucho que ver con el tipo de analítica que
queremos o tenemos que desarrollar.

Como podemos ver en el cuadro anterior, las herramientas de visualización,


análisis y la inteligencia artificial son las herramientas principales que se utilizan en
esta etapa y, por tanto, vamos a pararnos un poco en cada una de ellas.

19. En otro módulo, veremos una metodología formal de este tipo denominada CRISP-DM:
https://es.wikipedia.org/wiki/Cross_Industry_Standard_Process_for_Data_Mining

58
12.2. Visualización: a veces la vista no nos engaña

Lo primero que se recomienda siempre al empezar a trabajar con datos es


visualizarlos de alguna forma. Obtener representaciones gráficas de la información
contenida en ellos permite que una persona pueda comprenderlos, empezar a
intuir formas de trabajar con ellos e, incluso, obtener conclusiones.

¿Por qué es importante? En el mundo pre-big data había pocos datos y se podían
manejar y visualizar bien, pero ahora es muy difícil visualizarlos y existe la
tentación de hacer medidas resumen con el objetivo de entenderlos, pero que
pueden ocultar la verdad.

Muchas veces, diferentes conjuntos de datos pueden dar medidas estadísticas


similares. Además, se puede ver cómo están distribuidos y ayuda a enfocar mejor
los siguientes pasos del análisis. Incluso podemos ver datos anómalos que
decidiremos si tomar o no tomar en consideración para el análisis. Por otra parte,
nunca se puede despreciar la capacidad de la visión humana para encontrar
posibles relaciones y patrones que nos permitirán elegir el mejor modelo para
analizarlos en etapas posteriores.

Es el caso del “Cuarteto de Anscombe” 20. Se trata de cuatro conjuntos de datos


que, aunque tengan los mismos parámetros estadísticos, cuando se visualizan son
totalmente distintos:

La línea azul es la línea de tendencia clásica que se suele calcular de forma


estándar para realizar algún tipo de predicción. Como se ve, es la misma en los
cuatro conjuntos de datos, pero también se puede ver que oculta la verdadera
naturaleza de cada grupo de datos.

59
En el primer caso (arriba a la izquierda) podemos ver un típico conjunto de
datos donde los puntos se encuentran más o menos repartidos siguiendo
esa línea de tendencia.
En la imagen de arriba a la derecha, sin embargo, podemos ver que la
tendencia estaría mejor representada por una curva polinómica que se
ajustaría perfectamente a la variabilidad de los datos.
En el tercer caso (abajo a la izquierda), podemos ver que mientras un grupo
de datos sigue una tendencia lineal muy clara, hay un punto que se separa
completamente. Además, lo que significa ese punto puede depender mucho
de la realidad que representa ese dato o de los objetivos del análisis. En la
mayoría de los casos puede tratarse de un caso anómalo (outlier) que puede
decidirse quitar de los datos para que no estropee el análisis. Pero si, por
ejemplo, lo que estamos haciendo es un modelo para detectar casos de
fraude, quizás ese punto sea el caso anómalo que representa ese mismo
fraude, por lo que en verdad deberíamos quitar todos los demás puntos y
centrarnos en ese.
Finalmente, en el último ejemplo, podemos pensar que el punto alejado
puede tratarse de un caso anómalo, pero quizás también pueda significar
que se trata de casos que se agrupan en grupos específicos y entonces
podríamos decantarnos en las fases posteriores a utilizar técnicas de
clusterización y/o categorización para detectar estos diferentes grupos.

El 28 de enero de 1986, el transbordador espacial


Challenge se desintegró a los 73 segundos del
despegue. Una junta de los cohetes laterales falló,
dejando escapar combustible que se incendió y
provocó el fatal desenlace.

Los siete tripulantes murieron al chocar la cabina


contra el mar después de una caída interminable de
tres minutos. Se creía que ninguno estaba consciente
en el momento del choque, pero después se supo que al menos cuatro de ellos
activaron el suministro auxiliar antes de que la cabina llegara al mar.

El fallo de la junta fue provocado por las bajas temperaturas que se produjeron la
noche anterior y el día del lanzamiento. Según los estudios estadísticos
posteriores, la tasa de fallo se acercaba al 13%, mientras que los estudios
generales de probabilidad de fallo general del transbordador estaban alrededor del
0,001%.

Los ingenieros que decidieron el lanzamiento del transbordador tenían muy pocos
datos y además los recogían de forma poco visual.

60
Los ingenieros solo habían tenido en cuenta datos de
temperatura cuando otras juntas habían sufrido estrés,
pero su análisis no dejaba claro que hubiera una
relación directa entre la temperatura y el estrés.

Como se ve en el gráfico, se habían dado más fallos con


la temperatura por debajo de 55º, pero también se habían dado más fallos a 75º.
Pero lo que no tuvieron en cuenta fueron los casos en los que no se había
producido ningún fallo.

Si añadimos esos datos, se puede ver


una tendencia clara: por debajo de 65º
no hay ningún caso en el que no se haya
producido ningún fallo, así que parece
que ese es un límite a tener en cuenta
como potencial riesgo ante un
lanzamiento del transbordador. Más aún,
si extendemos este gráfico, podemos ver
que existe una tendencia a que este
riesgo aumente a medida que disminuye la temperatura.

¿Con este tipo de visualización se podría haber evitado el desastre? Ver:


https://priceonomics.com/the-space-shuttle-challenger-explosion-and-the-o/

20. Ver: https://es.wikipedia.org/wiki/Cuarteto_de_Anscombe

61
12.3. Herramientas de visualización de datos

Existen multitud de herramientas para hacer visualizaciones de datos y cualquier


paquete estadístico dispone de un buen conjunto de ellas. Algunas de las
herramientas enfocadas en visualización general son:

Excel: el clásico por antonomasia. Su uso está muy extendido porque es una
herramienta altamente utilizada en el entorno empresarial y financiero.
Tableau y Qlik: son herramientas de visualización de nueva generación que
empezaron como servicios web, pero también cuentan con versiones
descargables, aunque todo su potencial se desvela en entornos
compartidos. Tienen versiones gratis y, cada vez más, su uso está más
extendido.
Google Data Studio: una herramienta gratuita de Google enfocada sobre
todo para el análisis de los datos que generan otro tipo de servicios de la
misma compañía, como por ejemplo Google Analytics, YouTube o Google
Ads. Muy utilizada en entornos de métricas web y apps.
Amazon QuickSight: herramienta de visualización ofrecida por Amazon
dentro de su servicio AWS. Puede trabajar con gran cantidad de datos de
diversas fuentes, ya que utiliza todos los servicios y recursos disponibles
dentro de los que están disponibles en Amazon Web Services.

Adicionalmente, en la actualidad se está desarrollando mucho análisis geoespacial,


es decir, se utilizan datos asociados a una localización del cliente, por lo que es
necesario disponer de algún tipo de herramienta que permita ver los datos
asociados a una posición en el mapa:

QGIS: herramienta de software libre para PC, gratuita y muy popular. Con
gran cantidad de capas de información georeferenciada y una gran
comunidad con multitud de desarrolladores añadiendo funcionalidad a
través de plug-ins y software adicional.
ArcGIS: herramienta de pago desarrollada por la empresa ESRI, orientada a
las empresas. Tiene versión para escritorio y también online. Esta
ampliamente extendida en empresas que se dedican a la explotación de
mapas y datos geolocalizados.
Google Earth y Google Maps: herramientas muy populares, utilizadas por el
gran público, pero abierta a desarrolladores para que puedan crear mapas y
asociar información geoespacial. Gratuito hasta un cierto número de
elementos a mostrar y peticiones.
Carto: empresa española que ha desarrollado una herramienta de
visualización geoespacial totalmente online muy potente, siendo referencia
internacional. Gratuita hasta cierta cantidad de información mostrada y
almacenada.

Finalmente, y atendiendo a una de la estructuras más especiales y difíciles de

62
mostrar, hay visualizadores especializados en grafos:

Gephi: herramienta de código abierto y gratuita que utiliza directamente las


tarjetas de video especializadas para mostrar redes y grafos de una forma
flexible, dinámica y rápida. Cuenta con multitud de plugins y software
adicional para realizar cálculos de métricas de red, importación y
exportación de datos y algoritmos de visualización. Tiene un módulo para
trabajar con redes temporales, esto es, redes que cambian a lo largo del
tiempo, bien porque cambian su número de nodos, o el número o estructura
de sus relaciones.
Cytoscape: herramienta de visualización de grafos y redes orientada sobre
todo a la visualización de redes biológicas (redes genéticas, de proteínas,
bioquímicas, etc.). También es gratuita y tiene multitud de plugins
desarrollados por la comunidad que amplían sus funcionalidades.
NodeXL: plugin que se puede instalar en Excel para poder crear, visualizar y
realizar métricas de redes dentro de este programa. Desde sus comienzos
ha evolucionado bastante y ahora cuenta con una versión gratis, una versión
de pago y hasta incluso una versión online.

63
12.4. Análisis: empezar a extraer conocimiento de los datos

Aunque en módulos siguientes manejaremos algún tipo de herramienta para


realizar análisis, por lo que no entraremos en los detalles de cada una, vamos a
hablar brevemente de algunas de ellas, para poder un conocimiento general de las
más importantes y usadas.

Para realizar análisis de datos podemos tener tres acercamientos:

Usar lenguajes de programación

Este es el acercamiento más generalista, ya que la flexibilidad que conlleva


utilizar cualquier lenguaje de programación para procesar los datos permite al
investigador realizar cualquier tipo de análisis. Por el contrario, también existe
la posibilidad de que, para realizar las tareas más sencillas, se tenga que
desarrollar código desde cero. Sin embargo, gracias al movimiento del
software libre y las grandes comunidades de desarrolladores, existen multitud
de librerías y código ya desarrollados para casi cualquier tarea, o ejemplos de
código que podemos insertar directamente en nuestro programa.

Usar soluciones de Análisis “empaquetadas”

En este caso nos encontramos con paquetes de software desarrollado por


diversas empresas que integran normalmente todas las herramientas de
análisis necesarias (visualización, entorno de programación y desarrollo de
modelos). En el entorno empresarial son ampliamente utilizadas, pero han
perdido posiciones ante herramientas de software libre.

Usar Entornos de Análisis

En este caso, estamos hablando de entornos de código abierto desarrollados


por y para la comunidad, con la intención de integrar multitud de librerías y
extensiones para realizar cualquier tipo de análisis de datos. De esta forma,
cualquier usuario puede acceder a todo el potencial de análisis sin tener que
desarrollar o pagar por el código.

Lenguajes de programación para el análisis

Estos dos lenguajes serían básicos para profundizar en el análisis y procesado de


datos:

SQL es un lenguaje creado en los Python es un lenguaje de propósito


años 70 para el acceso y consulta de general muy sencillo, fácil de leer y
64
bases de datos relacionales. Ha sido y muy flexible. Es un lenguaje
es tan popular que este tipo de bases interpretado porque solo se necesita
de datos ha tomado su nombre de un "intérprete" compatible con el
este lenguaje (recordemos la sistema operativo del ordenador en
explicaión de base de datos SQL que se esté usando, lo que ha
frente a bases de datos NoSQL). propiciado que se pueda ejecutar en
Debido a su amplia utilización, los casi cualquier ordenador o servidor.
sistemas de Big Data que incluso no Al ser tan útil y extendido, hay una
se rigen por el modelo de base de gran comunidad que desarrolla
datos relacional, han desarrollado librerías y extensiones para realizar
adaptadores SQL para poder acceder cualquier tarea sin tener que crear
a y procesar los datos. código desde cero. Y, por supuesto,
dentro de estas librerías, dispone de
muchas que permiten realizar análisis
de datos o conectarse a cualquier
sistema de Big Data para procesar la
información almacenada. Lenguaje
muy recomendable para empezar a
programar.

Paquetes de análisis

SPSS

Es un paquete estadístico de larga tradición para el análisis en ciencias sociales


y marketing. En la actualidad puede manejar gran cantidad de información y su
compra e integración dentro del catálogo de IBM ha permitido su uso en
entornos de Big Data.

SAS

Es un paquete de análisis de datos completo, potente y de amplio uso en


entornos empresariales. Permite conectarse con multitud de fuentes de datos
e integrarse en sistemas empresariales complejos, ofreciendo todas las
herrameintas de análisis, desde la visualización hasta la creación y ejecución
de modelos. También incluye un entorno de programación con su propio
lenguaje, el SAS base, muy flexible y amplio.

65
Power BI

Es una solución de Microsfot muy integrada, con el paquete de ofimática


Office, ofrece un entorno híbrido de escritorio y nube. Gracias a ello puede
usarse para el procesado de gran cantidad de datos de forma sencilla y para
usuarios sin grandes conocimientos de programación. Una de sus grandes
diferencias es la integración con herramientas de inteligencia artificial de
Microsoft, como Cortana.

Entornos de análisis

Es el paquete de análisis de datos estándar en la actualidad. Es una solución


hecha por y para la comunidad, con una gran cantidad de desarrolladores,
creando código que puede ser reutilizado por cualquier usuario. Esto permite
disponer de herramientas, modelos, análisis estadísticos y visualizaciones muy
complejas sin tener que crear código desde cero. Y, gracias a su lenguaje "R" y
a su intérprete asociado, lo hace totalmente flexible para cualquier tarea que
se necesite.

Knime, Rapidminer y Weka

Son entornos de desarrollo de propósito más específicos que cuentan con una
interfaz más visual y agradable. La mayoría de la programación se realiza a
través de bloques funcionales que se van uniendo con el ratón. Cualquier
miembro de la comunidad puede desarrollar nuevos bloques y así aumentar
las funcionalidades y capacidades disponibles. Con estos entornos, un usuario
no avanzado puede crear en pocos minutos modelos complejos y funcionales
sin tener que aprender un lenguaje de programación.

66
12.5. Inteligencia Artificial: intentar que las máquinas piensen
como nosotros

Finalmente llegamos a la Inteligencia Artificial. Este campo, tan de moda ahora,


tuvo su origen en la segunda mitad del siglo XX. En 1956 cuatro pioneros, John
McCarthy, Marvin L. Minsky, Nathaniel Rochester y Claude E. Shannon,
organizaron la Conferencia de Dartmouth21. Esta conferencia puede considerarse
como el evento fundacional de la Inteligencia Artificial. Muchos de los conceptos,
algoritmos, o matemática fueron desarrollados en esa época, entre los años 50 y
70. Por tanto, no podemos considerar que ha sido un descubrimiento de nuestros
días.

Entonces, ¿por qué se ha producido esta explosión en la última década?


Realmente, y como lo habíamos indicado en la introducción, la utilización masiva
de la inteligencia artificial ha sido posible por el aumento de la capacidad de
procesamiento de nuestros ordenadores y la facilidad de acceso a los mismos, el
descenso en los precios del almacenamiento de datos, y sobre todo por los datos.

Y creo que este es el aspecto fundamental. Cualquier sistema de inteligencia


artificial necesita ser entrenado, y para ello es necesario que disponga de datos
sobre los que pueda aprender. Y eso, realmente, sólo ha sido posible con el
nacimiento de internet y de la tecnología móvil. Actualmente, miles de millones de
personas cuelgan fotos, crean contenido, navegan y, además, en cierta medida,
clasifican esta misma información. Con esta gran cantidad de información, un
sistema de inteligencia artificial puede ser entrenado para simular ciertos aspectos
de nuestra inteligencia humana.

Y así puede definirse la inteligencia artificial como cualquier simulación de


procesos de la inteligencia humana por parte de máquinas o sistemas informáticos.
Se puede resumir las características que debería tener cualquier sistema de
inteligencia artificial ideal en pocos aspectos:

Debe tener una interacción natural con humanos

basada en lenguaje natural, reconocimiento y síntesis de habla, bien sea oral o


escrita. Incluso, también reconocer gestos o imágenes, o entonación, de
manera similar a como hacemos los humanos para comunicarnos entre
nosotros.

Debe ser un sistema que aprenda

es decir, que a partir de la adquisición de información genere reglas para que


esa información sea útil según un determinado objetivo.

67
Debe ser un sistema que razone

que, con las reglas que ha desarrollado en la fase de aprendizaje, pueda llegar
a conclusiones aproximadas o definitivas a partir de nueva información que
reciba.

Debe autocorregirse

Si las conclusiones que ha obtenido no son correctas, debe darse cuenta y


modificar las reglas establecidas.

21. Ver: https://es.wikipedia.org/wiki/Conferendia_de_Darmouth

68
12.6. Tipos de inteligencia artificial

Como estas características realmente son difíciles de conseguir, se suele hablar de


dos tipos de inteligencia artificial: la inteligencia artificial débil y la inteligencia
artificial fuerte.

Débil

Es aquella inteligencia artificial que está diseñada y entrenada para una tarea
en particular, por ejemplo “detectar gatos” en una foto. Para la tarea para la
que han sido diseñadas, suelen ser mejor que cualquier humano, y además
también más rápida. Por ejemplo, muchos sistemas de reconocimientos de
imagen médica pueden detectar, con mayor eficiencia y en mucho menos
tiempo, el cáncer de mama de lo que haría un experto.

Fuerte

englobaría a la inteligencia artificial que tiene habilidades cognitivas humanas


generales. Es decir, trabajarían como cualquier persona, eligiendo las mejores
“herramientas” cognitivas para cada situación, aprendiendo en cada paso y
también corrigiendo y modificando sus reglas y razonamientos a medida que
utiliza más y más información. De momento ningún sistema de inteligencia
artificial ha llegado a este punto, pero se ha teorizado con el mismo, dentro de
lo que se ha llamado “Singularidad Tecnológica”22.

22. Ver: https://es.wikipedia.org/wiki/Singularidad_tecnol%C3%B3gica

69
12.7. Términos a diferenciar

Antes de empezar a describir las diferentes técnicas que forman la inteligencia


artificial, es necesario hacer una distinción entre diferentes términos que muchas
veces se confunden y se toman como sinónimos.

La inteligencia artificial es una gran área de conocimiento. En ella, se encuentran


tecnologías como la robótica, el reconocimiento y generación de habla, detección
de imágenes, coches autónomos, asistentes virtuales, sistemas expertos para la
detección de cáncer, etc.

Para que este tipo de sistemas puedan funcionar, utilizan técnicas de machine
learning. Con estas técnicas, un asistente virtual puede aprender a entender
diferentes acentos o un coche autónomo puede detectar una bicicleta en su
camino. Por tanto, dentro de la inteligencia artificial, como una parte muy
importante, se encuentra el machine learning.

Finalmente, el machine learning cuenta con muchas técnicas distintas, entre las
que se encuentran, por ejemplo, los árboles de decisiones, los métodos de
regresión, SVM u otras. Dentro de estas técnicas, una de las más utilizadas en la
actualidad y que ha sido potenciada por la gran cantidad de información
disponible ha sido la de las redes neuronales. Y, dentro de las redes neuronales,
destaca el deep learning o aprendizaje profundo.

Por lo tanto, y resumiendo lo comentado


anteriormente, dentro de la inteligencia
artificial nos encontramos con el
machine learning, y una de las partes de
este machine learning, son las redes
neuronales y el deep learning. No se
puede decir que la inteligencia artificial
sólo se basa en el deep learning o que el
deep learning ha posibilitado la
inteligencia artificial. Estas conclusiones
son falsas y producen cierta confusión que puede tener consecuencias. Por
ejemplo, muchas tareas pueden realizarse utilizando modelos clásicos de machine
learning, que son más sencillos de entender y explicar y, por tanto, de aplicar, por
lo que pueden ser preferibles a trabajar con redes neuronales. Sin embargo,
muchos expertos en la materia siempre intentarán decir que la única posibilidad es
trabajar con deep learning, presuponiendo la igualdad inteligencia artificial-deep
learning. Como en toda tecnología, lo más importante es saber cuándo utilizar o
no algún método y, casi siempre, los mejores resultados se obtienen combinando
diversas técnicas dentro de un catálogo amplio de soluciones y algoritmos.

Para empezar a explicar las diferentes técnicas de machine learning, primero

70
haremos una clasificación en base a la manera de entrenar. Siguiendo esta
categorización habría tres tipos:

Aprendizaje supervisado

En este caso, tenemos datos de entrenamiento. Es decir, podemos suministrar


datos de prueba de los que sabemos la respuesta adecuada, y por tanto el
algoritmo busca ajustarse para que, a partir de datos de entrada, se obtenga la
salida esperada. Por ejemplo, podemos pasar a un algoritmo multitud de fotos
en las que se muestran animales. Y le decimos al algoritmo que queremos
detectar gatos y por tanto marcamos las fotos en las que hay gatos como la
respuesta correcta. El algoritmo entones intentará aprender qué
características tienen las fotos para decir que aparece un gato o no, tanto de
las fotos marcados como “gato” como de las fotos no marcadas como “gato”.
Por ese motivo, se dice que este aprendizaje es supervisado, porque en cierta
medida un humano tiene que decirle qué tiene que detectar o aprender.

Aprendizaje no supervisado

En este caso, no disponemos de datos de entrenamiento y de resultados


marcados como correctos. Por lo tanto, el algoritmo tiene que buscar patrones
o conclusiones de los datos de entrada, agrupando las observaciones o datos
que son parecidos. De esta forma puede, en cierta medida, ayudar a clasificar
imágenes, textos o cualquier otro tipo de contenido para que luego sean más
fácilmente interpretables por personas o por otro tipo de sistemas.

Aprendizaje reforzado

En este caso, el aprendizaje no tiene que ver con los datos en sí mismo, sino
con un “ambiente o mundo” con el que el sistema de inteligencia artificial tiene
que interactuar. Este ambiente puede ser tan sencillo como una partida de
ajedrez o un juego de ordenador, o puede ser tan extenso y complejo como la
conducción por una ciudad. Por tanto, lo que hacemos es dejar que el sistema
de inteligencia artificial se “mueva” dentro del ambiente y a cada movimiento
o acción que realice le damos una puntuación. Además, marcamos un objetivo
de puntuación, por lo que el sistema intentará maximizar esos puntos, lo que
indicará que ha podido sobrevivir en ese ambiente y por tanto sabrá cómo
tratar con los problemas de ese mundo. De esa manera, sin tener que conocer
todas las situaciones que se pueden producir en ese mundo, habrá aprendido
unas reglas que maximizan la posibilidad de tener éxito ante cualquier
situación.

71
Se muestran en el gráfico los diferentes métodos de machine learning según la forma de
entrenamiento. Se incluyen las problemáticas típicas en las que se aplica cada una de ellas y
algunos de los métodos más conocidos y populares dentro de cada categoría.

No hay espacio para poder explicar con un poco de profundidad todos los
métodos que pueden utilizarse, sin embargo, hay una ampliación clarificadora que
proponemos en nota a pie de página23.

Sin embargo, para poder tener una visión general de cómo funcionan las redes
neuronales y el deep learning, vamos a explicar sus características y estructura
básica. Este tipo de técnica se basa en simular el funcionamiento del cerebro
humano y de sus neuronas.

Las redes neuronales se basan en un modelo de neurona llamado Perceptrón, que


fue descrito en el año 1958 por Frank Rosenblatt.

72
Siguiendo la estructura de una neurona real, el Perceptrón recibe información de
varias entradas (en este caso 5). Cada una de las entradas se pondera por un peso.
Todos estos valores ponderados se agregan. Este valor agregado pasa a la función
de activación y si ese valor sobrepasa un umbral, se activa la salida. Dependiendo
de los pesos, la función de agregación y la función de activación, el Perceptrón
obtiene una salida específica para cada conjunto de entradas24.

Este concepto de Perceptrón se amplía en las redes neuronales. De la misma


forma que en el cerebro se organiza en capas de neuronas conectadas unas a
otras, en una red neuronal se conectan muchos perceptrones en diferentes capas.

Una red neuronal tiene varias capas de neuronas (perceptrones):

Capa de entrada

Esta capa recoge las señales de entrada. Debe tener el mismo número de
neuronas que número de señales de entrada. Cada una de las neuronas se
conecta con cada una de las neuronas de la capa interna.

73
Capa interna

Capa formada por varias neuronas conectadas a todas las demás neuronas de
la capa de entrada. Esta capa procesa las diferentes salidas de las neuronas de
entrada y sus salidas están conectadas a cada una de las neuronas de la capa
de salida.

Capa de Salida

Esta capa recoge las señales de cada una de las neuronas de la capa interna,
las procesa y obtiene las diferentes señales de salida. Como ocurre con la capa
de entrada, esta capa debe tener el mismo número de neuronas que las
señales que queramos obtener.

La estructura de cualquier red neuronal


es similar a la estructura mostrada en la
figura. Lo que cambia es el número de
capas internas que se añaden, el tipo de
neuronas utilizadas (pueden tener
memoria, por ejemplo), o el tipo de
conexiones (puede haber incluso
conexiones hacia atrás entre capas25).

Como la mayoría de la actividad se


produce en las capas internas, el
procesamiento basado en este tipo de
redes también se llama Deep Learnig,
entendiendo “deep” como interno,
haciendo referencia al procesado que se
realiza en las capas “internas” de la red.

Realmente nadie puede comprender cómo funcionan este tipo de estructuras, por
qué eligen ciertos valores internos o realizan ciertos procesados. Por este motivo,
muchas veces, por causas legales, no pueden ser utilizadas. Por ejemplo, en
entornos bancarios y aseguradores, los modelos utilizados para dar un crédito o
un seguro necesitan ser explicables para el usuario, por si este quiere reclamar si la
respuesta es negativa. De ahí que en estos casos se estudien otras técnicas más
fáciles de entender y de las que se pueda explicar la salida en base a las entradas.

74
23. Para una ampliación muy sencilla y clarificadora de todos estos métodos, ver:
https://vas3k.com/blog/machine_learning/

24. Para más información ver: https://grupo.us.es/gtocoma/pid/pid10/RedesNeuronales.htm

25. Para ver ejemplos de diferentes tipos de redes, ver: https://www.asimovinstitute.org/nerual-


network-zoo/

75
12.8. Sistemas cognitivos

Finalmente, dentro del campo de la inteligencia artificial, el último avance son los
sistemas cognitivos. Un sistema de este tipo se puede definir según ciertas
características:

Recopila información de todo tipo

Información tanto estructurada como no estructurada, pública, privada o


personal, de forma automática.

Analiza la información de modo semántico

No solo detecta palabras o frases, sino que analiza la estructura interna de la


información para establecer relaciones semánticas, tales como que “un coche
es un vehículo” a partir de una frase del tipo “existen diferentes tipos de
vehículos y uno de los más usados es el coche”.

Crea mapas conceptuales

Con la información semántica recogida, crea una imagen conceptual de


conocimiento gracias a la creación de un mapa de relaciones entre cada uno
de los conceptos. Así, por ejemplo, podría unir el concepto de coche con el de
bicicleta, ya que en la información que ha recogido ambos son definidos como
vehículos. Para ello, utilizan como estructura fundamental el grafo o red.

Usa diferentes agentes cognitivos especializados en cada tarea

Una vez realizado este mapa conceptual ejecutan sistemas cognitivos para
encontrar información oculta en ese mapa conceptual, buscando relaciones
entre conceptos. Estos agentes son como pequeños programas que combinan
machine learning, programación y sistemas expertos para ir navegando dentro
del grafo e ir encontrando patrones.

76
Utilizan interfaces naturales para relacionarse con humanos

Tanto la recogida de información como la presentación de sus resultados se


realiza a través de lenguaje natural y visualización. De esta forma la respuesta
se organiza en forma de historias donde se mezcla texto y gráficos para hacer
más entendibles las ideas y conocimiento que han adquirido. Estos sistemas
son capaces de responder a preguntas realizadas en lenguaje natural (por
ejemplo, “Mira a ver si hay relación entre las ventas de ayer y el tiempo que
hizo”) sin tener prefijada ninguna respuesta. Analizan las preguntas, revisan la
información dentro de su mapa conceptual, ejecutan los algoritmos y agentes
disponibles y preparan la respuesta en lenguaje natural.

El sistema cognitivo más conocido en la actualidad es Watson, desarrollado por


IBM. En la actualidad, este sistema cognitivo se ejecuta en un clúster de 750
servidores de última generación, que, si se mide por la capacidad de computación,
estaría dentro de los cinco superordenadores más grandes del mundo. Es capaz de
“leer” 500 GB de datos en un segundo (lo que equivaldría a un millón de libros).

Para demostrar su capacidad de enfrentarse a problemas reales, en 2011 participó


en el concurso Jeopardy ante dos de los mejores concursantes de la historia. Este
concurso no era el típico de pregunta-respuesta, sino que la mayoría de las
pruebas necesitaban obtener la relación que existe entre varios datos para
adivinar la respuesta a la pregunta. Además, se introducción giros lingüísticos y
juegos de palabras, por lo que era necesario que Watson comprendiera el lenguaje
natural, la ironía o el sarcasmo para poder entender cada pregunta. El resultado:
Watson ganó el premio final de un millón de dólares, el cual fue donado26.

Sin embargo, después de ver este concurso, John Baldini, vicepresidente de


Tecnología y Ciencia en GlaxoSmithKline, contactó con el responsable de IBM, y le
propuso trabajar con Watson para descubrir algún tipo de tratamiento nuevo para
la Malaria. Le suministraron toda la información sobre la malaria, la composición
de todos los medicamentos utilizados para el tratamiento de la enfermedad, y
algunos otros compuestos más. Analizando toda esta información, Watson
identificó correctamente todos los medicamentos anti-malaria que existen y,
además, sugirió otros nuevos 15 componentes con potencial para ser utilizados
como nuevos medicamentos para tratar la enfermedad.

77
26. Para más información ver: https://www.muycomputerpro.com/2019/09/24/ibm-watson-casi-todo-
lo-que-tienes-que-saber o el vídeo del concurso: https://youtu.be/YgYSv2KSyWg

78
Bibliografía

Bibliografía

Al ser Big Data un concepto muy amplio, la información más actualizada y más en
detalle se encuentran en las mismas webs de las empresas que desarrollan las
soluciones, en foros y blogs online. De todas formas, se indican algunos libros
generalistas:

“Big Data para Dummies” – Judith Hurwitz , Alan Nugent, Fern Halper, Marcia
Kaufman

“Data Sciencie for Dummies” – Lillian Pierson

“Big Data Analytics Infrastructure for dummies” – Barry Schoenborn

“Big Data” – Bernard Marr

“Las bases del Big Data” – Rafael Caballero y Enrique Martín

“Big Data. El poder de los datos” – Bill Schmarzo

“Big Data. La Revolución de los Datos Masivos” – Kenneth Cukier y Viktor Mayer-
Schönberger

"Big Data en la práctica” – Bernard Marr

“Big Data para directivos” – Genís Roca y Albert Solana

“Big Data” – Luis Joyanes Aguilar

“Big Data: Atrapando al Consumidor” – Josep Francesc Valls

“Big Data para CEOs y Directores de Marketing: Cómo dominar Big Data
Analytics en 5 semanas para directivos” – Isaac Gonzalez Diaz

79
80
Fin de módulo

¡Enhorabuena!

Has finalizado el módulo.

81

También podría gustarte