Podcast: Descargar (34.9MB)
Comenzamos el cápítulo 67, vamos a ver temas muy diversos centrados en Big Data y visión artificial. Veremos qué significa este término, algunos ejemplos, la extracción de datos con data mining y cómo las máquinas son capaces de aprender de la información obtenida.
Si quieres aportar o preguntar algo, puedes utilizar los comentarios que están debajo de este artículo, estaremos encantados de comenzar un debate al respecto.
Lo primero que tenemos que decir es que no somos expertos en este tema, hay mucha literatura escrita, solo pretendemos dar nuestra visión de todo lo que rodea a Big Data. Ya hemos tratado este tema en alguna ocasión en el podcast (10. Cómo afecta el Big Data a nuestras vidas) y en el blog (El Big Data).
No es algo nuevo en nuestra sociedad. La obtención de información y su posterior almacenamiento se lleva haciendo desde hace mucho tiempo. Un ejemplo pueden ser los datos públicos estadísticos del INE, existen datos de 1858 por ejemplo, donde aparece información de Cuba, cuando era una colonia española. Desde entonces han sucedido muchas cosas en nuestro país y en el mundo entero, incluso la revolución tecnológica más importante que ha vivido este planeta.
Gracias al avance de la tecnología, hoy podemos disfrutar de almacenamiento de datos cada vez más barato, desarrollo y evolución de la tecnología y la ultraconectividad entre dispositivos. Estos avances han permitido que crezca el volumen de información que se almacena (la media de búsquedas de Google por segundo es 40.000) y que su procesamiento sea cada vez más rápido.
Además de toda la información que podemos suministrar los humanos, el IoT (Internet de las cosas) jugará un papel crucial en este sector. Imagínate si obtienes información de alguna instalación agropecuaria, con cientos de sensores enviando información cada segundo, con un tratamiento adecuado de la información podrías acondicionar la meteorología a tu antojo. Esto supondría un ahorro drástico en este sector.
Big Data es el empleo más prometedor de 2016 en USA según la revista Forbes, y en España será uno de los más demandados, solo tienes que buscar en cualquier portal especializado en el sector del empleo.
Pero el Big Data no es algo extraño para nosotros, sin darnos cuenta estamos contribuyendo diariamente enviando información desde nuestros dispositivos móviles, cuando pagamos con una tarjeta, cuando vamos al médico o simplemente cuando estamos hablando por teléfono.
De esto trata el Big Data, de almacenar datos para luego poder extraer patrones a través de la minería de datos, patrones que se repiten y que se pueden detectar. La información obtenida es muy diversa, se pueden obtener patrones de consumo, de gatos o delictivos.
Arduino tiene mucho que decir en este aspecto. Es el dispositivo que puede enlazar el mundo real con el mundo estadístico, gracias a la ventana al mundo exterior que ofrece a la tecnología por medio de sus pines digitales y analógicos. Por el contrario Raspberry Pi juega el papel de servidor. Al igual que ha ocurrido con la programación, con la electrónica y con la tecnología en general, gracias a Arduino y Raspberry Pi tenemos al alcance de todos poder utilizar el Big Data en nuestras vidas. Un ejemplo podría ser el Picocluser, un cluster de Raspberry Pi a muy bajo coste. Podemos utilizarlo para aprender a trabajar en paralelo con diferentes máquinas y utilizar en nuestros proyectos del Big Data caseros. Incluye software y material didáctico instalado.
Algo muy ligado a los datos es el Machine Learning o el aprendizaje automático. Muy lejos queda lo que nos imaginamos cuando escuchamos estos términos, robots inteligentes capaces de comportarse como personas. El aprendizaje de las máquinas consiste en detectar patrones de conducta a base de explorar cantidades ingentes de datos, cuantos más, mejores patrones y mejores predicciones. Un ejemplo sería los datos estadísticos de un banco, imagínate que están intentando detectar el uso fraudulento de tarjetas. Si tuviéramos una lista de 100 casos de los cuales 5 son fraudes y de esos 5, 4 siguen un patrón, podremos detectar un posible delito si buscamos ese patrón en toda la información que vamos obteniendo del uso de tarjetas. Esta cantidad de muestras no es significativa y tendríamos un margen de error alto pero, si esto lo extrapolas a millones de operaciones con tarjetas que se practican al año, sería fácil sacar un patrón más eficaz, capaz de detectar fraudes con un margen de error muy pequeño.
Esta técnica también se utiliza en la visión artificial, hasta día de hoy existen dos algoritmos utilizados en este marco que destacan por encima de otros. Es importante recalcar que no existe el algoritmo perfecto, en las diferentes aplicaciones que podemos encontrar a día de hoy se mezclan diferentes técnicas según cada caso. La visión artificial dista mucho de ser visión humana, el estado del arte de esta ciencia tiene todavía mucho recorrido para evolucionar, seguramente ni tu ni yo lo veremos. Los dos algoritmos más importantes son SIFT (Scale Invariant Featrue Transformation) y SURF (Speed-Up Robust Features). Estos dos algoritmos analizan las imágenes obteniendo los puntos de interés de un objeto. Para poder crear un sistema basado en la visión artificial, en primera instancia debemos someterlo a un periodo de aprendizaje donde se cataloguen objetos para poder relacionar el conjunto de puntos de interés con dichos objetos. Dependerá de la parametrización de cada algoritmo pero, te aseguro que la cantidad de información que podemos obtener es inmensa, cuanta más información del objeto (diferentes ángulos, perspectivas, iluminación, etc…) más fácil será poder detectarlo, pero también más tiempo de cómputo necesitaremos.
Esto también forma parte del mundo Big Data, la información obtenida a través de los algoritmos debe ser almacenada y tratada adecuadamente para poder ser utilizada posteriormente. Si quieres empezar con la visión artificial te aconsejo que explores la librería OpenCV, donde encontrarás no solo los algoritmos ya citados, también podrás binarizar imágenes, detección de movimiento, detección de líneas, etc…
Por último te vamos a hablar de las herramientas disponibles para el tratamiento de la información. Estas herramientas hacen que la tarea de explorar y extraer información de los datos almacenados sea más rápida y robusta. Te ofrecen una serie de funcionalidades centradas en la estadística y en la minería de datos, facilitando el tratamiento de volúmenes gigantescos de datos. Entre ellas cabe destacar las siguientes:
Y esto es todo lo que te queríamos contar del Big Data, Data Mining, Machine Learning y Visión Artificial. Queramos o no estamos pagando el precio por usar servicios «gratuitos«. Aún así, dudo que ningún día alguna máquina se pueda adelantar a nuestros pensamientos, el ser humano es impredecible, y menos mal, de lo contrario este mundo sería un cochazo.
Recurso del día
Hadoop es un software de Apache que te permite el procesamiento distribuido de grandes conjuntos de datos. La gran ventaja de este framework es que podemos utilizar máquinas más simples, que estén distribuidas en diferentes puntos geográficos para que funcionen como un único servidor. Es un software libre que puede ser utilizado en cualquier proyecto para el Big Data. Está programado en Java y al tratarse de un lenguaje mutliplataforma podremos ejecutarlo en cualquier tipo de máquina, incluso tenemos una versión para Raspberry Pi.
Muchas gracias a todos por los comentarios y valoraciones que nos hacéis en iVoox, iTunes y en Spreaker, nos dan mucho ánimo para seguir con este proyecto.