Más de 5 000 millones de personas participan a diario en interacciones en red que generan algún tipo de dato. Para 2025, esta cifra sobrepasará los 6 000 millones, lo que supone que el 75% de la población mundial formará parte de una gran muestra cuyo comportamiento estará en permanente estudio. Así lo ponen de relieve Seagate e IDC en su informe The Digitization of the World – From Edge to Core.

Este escenario que se nos dibuja para dentro de cinco años, con más de 150 000 millones de dispositivos interconectados -muchos de ellos recogiendo datos de manera ininterrumpida y en tiempo real- es un terreno abonado para el avance del Big Data y el Internet of Things (IoT) o Internet de las Cosas. ¿Qué puede ofrecernos la colaboración entre estos dos paradigmas?

Internet of Things (IoT): ¿qué es y cómo funciona?

Según el glosario de la consultora Gartner, el Internet of Things (IoT) o Internet de las cosas se define como una red de objetos interrelacionados y equipados con tecnología para la intercomunicación, la captura de señales o la interacción con el entorno. A día de hoy, el IoT se despliega en forma de millones de cámaras, grabadoras, ordenadores, móviles, radares, sensores, drones, códigos, termómetros, higrómetros, etc., que toman registros de lo que sucede y los envían a los centros de procesamiento.

Estos dispositivos presentan diferentes niveles de sofisticación. Los más sencillos como, por ejemplo, las etiquetas RFID, se emplean con fines de identificación. Otros, más complejos, actualizan su ubicación o son programables a distancia. Finalmente, hay nodos que, incluso, toman decisiones y las ejecutan por sí mismos si se cumplen ciertas condiciones.

Entonces, ¿qué relación hay entre el Big Data y el IoT?

La actividad del IoT da como resultado una cantidad ingente de datos que es preciso recopilar, validar, almacenar, procesar y analizar para extraer valor, es decir, conclusiones que nos permitan ampliar nuestro conocimiento y basar nuestros siguientes pasos. Es aquí donde, justamente, entra en juego el Big Data para, haciendo un símil con el mundo financiero, transformar en neto aquello que estaba en bruto.

IoT & Big Data: sectores de aplicación

La alianza entre Big Data e IoT proporciona ventajas en dos esferas: la industrial, con la implementación de soluciones B2B; y la del gran consumo, con desarrollos B2C que mejoran nuestra vida diaria en lo personal y en lo doméstico.

Big Data e IoT contribuyen al desarrollo de soluciones de domótica para el hogar

Big Data e IoT, una alianza cargada de potencial de futuro

Extraer beneficios de la colaboración entre Big Data e IoT es cada vez más sencillo gracias a la suma de otras tecnologías, como el 5G, que ahorra ancho de banda en las operaciones y reduce la latencia en la transmisión de datos; y el edge computing, que favorece el procesamiento descentralizado de la información de manera que, cuando esta llega al nodo central de la red, lo hace ya desprovista de ruido y preparada para someterse a un proceso de análisis en Big Data.

Esta experimentación nos hace pensar en un presente y un futuro muy cercano en los que se registrarán considerables avances en campos como:

¿Te gustaría formar parte de la revolución del Big Data y el IoT que ya está en marcha? Nuestro Máster Experto en Arquitectura Big Data te prepara para desarrollarte profesionalmente en este sector, en el que podrás trabajar como líder de proyectos en sistemas intensivos de datos o como gestor de infraestructuras de Big Data, entre otras especializaciones. ¿A que suena bien? Pues no lo dejes para mañana: contacta con nosotros hoy mismo y te ofreceremos un asesoramiento personalizado.

Cada vez es más habitual escuchar la palabra "Machine Learning", pero todavía muchas personas no saben qué significa y cuáles son sus funciones. En nuestro blog aprenderás acerca de su función y sus categorías.


Machine Learning
Machine Learning

¿Qué es el machine learning?

Es la capacidad de aprendizaje de una máquina mediante una serie de algoritmos y la entrada de datos a su sistema. Es una rama dentro del campo de la inteligencia artificial pero, a pesar de su nombre, no aprende por sí misma, sino por los patrones y la información recopilada por sus bases de datos. Estos algoritmos crean sus propios cálculos según los datos que consiguen y, cuántos más datos tienen, más precisas son sus acciones. Por este motivo, muchas personas creen que la inteligencia artificial se mueve sola, pero la realidad es que diseña sus propias respuestas mediante sus operaciones. Además, les permite tomar decisiones en base a predicciones.

El Machine learning es importante porque gracias a este software hemos facilitado la extracción de datos, lo que nos permite una mayor competitividad frente al resto de empresas. Los programadores especializados en estos ámbitos ya son capaces de diseñar modelos para analizar información compleja y obtener resultados rápidos y precisos sin necesidad de mano humana. De tal manera que la máquina por sí sola es capaz de realizar este trabajo.


3 categorías principales



Si tenéis alguna duda o sugerencia, en datahack estamos abiertos a recibir comentarios.

En los últimos tiempos se ha producido una mejora considerable en la capacidad de procesamiento de datos, lo que supone un crecimiento exponencial en la cantidad de datos procesados. Por este motivo, el desarrollo de las herramientas de Big Data para analizar, procesar y almacenar los datos es un aspecto clave en la evolución de esta disciplina.

La evolución del Big Data gira en torno a tres conceptos fundamentales: Inteligencia Artificial (IA), Machine Learning y Deep Learning. La Inteligencia Artificial es un concepto englobador que se define como un conjunto de programas informáticos que imitan el comportamiento humano. Por su parte, Machine Learning y Deep Learning son modelos de IA basados en algoritmos que permiten realizar funciones específicas como reconocimiento de imágenes, elaboración de predicciones o procesado de lenguaje. Para llevar a cabo estas funciones, existen distintas herramientas de Big Data con características diferentes y concretas. A continuación, repasamos las más importantes.

Las 3 herramientas de Big Data más utilizadas

1.     Spark

Es la herramienta de Big Data más potente para el procesamiento de grandes volúmenes de información.  Así pues, no es de extrañar que sea el sistema de procesamiento de datos más utilizado por las empresas y organizaciones más importantes del mundo.

Spark es un motor de código abierto para el procesamiento de datos gestionado por la Apache Software Foundation. Entre sus principales ventajas destaca su organización en clústeres, que permite realizar operaciones sobre un gran volumen de datos. El sistema trabaja en memoria para conseguir una mayor velocidad de procesamiento.

Además, la plataforma Spark integra distintas soluciones para potenciar su rendimiento:

Spark es una herramienta de Big Data gestionada por Apache Software Foundation

2.     Hadoop

Esta herramienta de Big Data surge cuando Google se encuentra con la necesidad de procesar los datos a alta velocidad en un momento en el que el volumen de información disponible en la web experimenta un crecimiento exponencial. Para conseguir este objetivo, la estrategia del gigante online pasa por la creación de un sistema de archivos distribuidos o nodos. Así nace Hadoop, un sistema de código abierto impulsado por las nuevas exigencias del entorno digital. Sus principales ventajas son las siguientes:

Hadoop es una herramienta de Big Data apta para la gestión de grandes volúmenes de datos

3.     Power BI

Power BI es una solución de inteligencia empresarial desarrollada por Microsoft. Permite recopilar información de diferentes fuentes en tiempo real y crear paneles, gráficos e informes compartidos por un gran número de usuarios. Se trata, por tanto, de una herramienta de Bussines Inteligente (BI) orientada a la monitorización de los datos relativos a una empresa u organización para su análisis y valoración en la toma de decisiones.

Entre sus funcionalidades destacan, además del almacenamiento masivo de datos, las capacidades de preparación y descubrimiento de datos, así como la creación de paneles interactivos completamente personalizables en función de las necesidades de cada usuario. Power BI integra distintas herramientas para la creación de informes como una aplicación de escritorio, una nube o un mercado de recursos visuales para hacer más atractivos los documentos. Además, cuenta con apps para iOS y Android y permite una integración completa con los servicios Office 365.

Power BI es una herramienta de Big Data para inteligencia empresarial

Aprende a utilizar las herramientas de Big Data más demandadas

En Datahack contamos con un profesorado experto altamente cualificado en distintas áreas de Big Data y Analytics. Si estás buscando una formación práctica y exigente, no dudes en contactar con nosotros, somos la escuela que buscas.

Actualmente estamos viviendo una auténtica revolución en el mundo de los bots. Y es que, desde que se empezó a hablar más de ellos, su número ha ido creciendo vertiginosamente. Son, cada vez más, los que se ven como una apuesta de futuro. Son algo que ha venido a definir un nuevo modelo de interacción entre las personas y las máquinas. En este artículo se van explicar las bases de las técnicas que están haciendo. También, por qué los chatbots se están convirtiendo en una plataforma conversacional tan innovadora y con tantas perspectivas de futuro.

LOS CHATBOTS Y SUS FORMAS DE ENTENDER

Lo primero es entender cómo los chatbots capturan, procesan e interpretan lo que le dice una persona. Usarán esta información para generar una respuesta. Para que un chatbot entienda lo que se le dice, existen dos técnicas:

Así, ante la siguiente frase “Me gustaría volar de Madrid a Dublín, el 14 de agosto”, y teniendo en cuenta que es un chatbot de viajes:

Coincidencia de patrones:

Con la técnica de coincidencia de patrones, sería necesaria una lista de los posibles patrones de entrada, por ejemplo: Me gustaría volar de <CIUDAD> a <CIUDAD> el <FECHA> Este tipo de técnica, más inteligible para los humanos, tiene el problema de que tiene que construirse manualmente y de forma estática. Es decir, se tienen que ir definiendo cada una de las posibilidades que se puedan dar.

Clasificación de intenciones

En la clasificación de intenciones se utilizan técnicas como el NLP (Natural Language Processing o Procesado de Lenguaje Natural) para interpretar los mensajes del usuario y detectar su intención. A la hora de trabajar con este tipo de técnica es importante tener claro que:

Teniendo en cuenta este esquema, cuando un chatbot recibe una frase del usuario, buscará el intent que mejor se ajusta a la misma y teniendo en cuenta la información contenida en la misma, las entities identificadas y si hay definido un subcontexto (depende de la plataforma que se use). Tras determinar el intent se ejecutarán una serie de acciones (“actions”) para dar una respuesta al usuario.

como-entienden-chatbots

Entonces, en base a la frase anterior: “Me gustaría volar de Madrid a Dublín, el 14 de agosto”. Un chatbot con NLP vería que habría un intent (Buscar Vuelo) y tres entities, dos de localización (Madrid y Dublín) y una de fecha (14 de agosto).  Una vez identificado el intent, se ejecutaría un proceso de búsqueda de vuelos, teniendo en cuenta la información proporcionada por las entidades.

LOS CHATBOTS Y SUS DIFERENTES FORMAS DE RESPONDER

Una vez que el chatbot ha entendido lo que le dice el usuario, generará una respuesta en base al contexto de la conversación y la información que haya identificado en la misma. Los sistemas de generación respuestas pueden ser:

Productivización modelos machine learning. Mi modelo está listo ¿y ahora qué?

A estas alturas de la película, seguro que todo el mundo tiene claro ya que para pensar siquiera en productivizar nuestro modelo de Machine Learning. Su performance con respecto al conjunto de test (esos datos que desde un principio no se deben tocar, mirar, ni mencionar para no distorsionar la verdadera capacidad de generalización de nuestro modelo aspirante a pasar a producción) tiene que ser bueno. Esto quiere decir que, o bien mejore al modelo actual, o bien si no hay tal modelo, por lo menos descargue a las personas que actualmente se encargan de estimar lo mismo que el modelo, de esta tarea. De modo que puedan dedicar su tiempo a algo más provechoso.

Pues bien, si hemos conseguido lo comentado anteriormente, tendremos que presentar nuestro modelo a los jefes haciendo especial hincapié en los siguientes puntos:

Una bonita presentación, con visualizaciones claras y frases concisas y fáciles de recordar del tipo “según el modelo actual la feature X, parece ser la que tiene más peso a la hora de predecir el label y”, será imprescindible también.

¡Perfecto! Nuestros jefes han quedado encantados, pero… ¿y ahora cómo ponemos el modelo en producción? Bueno, si has montado tu modelo en scikit-learn puedes optar por volcar a disco tu modelo entrenado, por supuesto incluyendo todo el pipeline de preprocesamiento de datos y de predicción.

Para ello podemos utilizar nuestro querido pickle, aunque para esta tarea, casi es preferible el uso de joblib más eficiente a la hora de tratar con objetos que internamente manejan grandes estructuras de numpy, como suele ser el caso de los estimators de scikit-learn.

El cómo desplegar nuestro modelo, dependerá del caso de uso. Por ejemplo, supongamos que nuestro modelo se vaya a usar en una página web de tal manera que el usuario introduzca o cargue algún dato (la entrada del pipeline), le daría a algún botón y esto provocaría que los datos se enviaran al servidor web, el cual a su vez los pasaría a nuestra aplicación web dentro de cuyo código se invocaría al método predict() del modelo.

Lógicamente la carga del modelo se tendría que realizar a la hora de arrancar el servidor, no cada vez que un usuario requiera una predicción.

Otra alternativa mejor es empaquetar el modelo en un web service, con el que nuestra aplicación pueda actuar a través de una API REST. Una de las ventajas de esto es que nos facilita el escalado, puesto que podremos arrancar tantos web services como necesitemos y balancear las peticiones procedentes de la aplicación web entre los web services existentes.

Dentro de la estrategia anterior, tenemos el caso particular de desplegar nuestro modelo en el Cloud, si por ejemplo optamos por Google Cloud Platform, podemos recurrir a Cloud IA (lo que antes se llamaba ML Engine) y hacer lo siguiente: subir el fichero joblib que hemos guardado a un bucket del Google Cloud Storage y dentro de Cloud IA, crear un modelo con su correspondiente versión, que apunte al fichero que hemos subido.

Si el modelo ya existía y queremos subir una nueva versión, el procedimiento sería el mismo solo que no habría que crear un modelo, sino una versión del mismo y luego asegurarnos que esta versión es la que está activa.

De esta manera tendríamos un web service simple, que se encargaría del escalado y el balanceo de carga por nosotros. Habría que tener en cuenta que los datos de entrada tendrían que venir en formato JSON y los datos de salida se devolverían en ese mismo formato. Luego ya sería usar este web service en nuestra web o en nuestro sistema de producción correspondiente.

Todo esto está muy bien, pero hay un lado más oscuro del que no se habla tanto y que es el del “babysitting” o monitorización del rendimiento de nuestro modelo.

No existe eso de, “entreno mi modelo lo despliego y ya está” …Es necesario invertir tiempo en escribir código que permita controlar el rendimiento de nuestro modelo periódicamente y enviar alertas cuando aquel decrezca.

Podremos encontrarnos con caídas fuertes y evidentes (por ejemplo, si falla algún componente de infraestructura) o con un deterioro paulatino más difícil de detectar a largo plazo.

Esto último es habitual ya que los modelos tienden a “deteriorarse” con el tiempo, lo cual es lógico: si nuestro modelo fue entrenado con datos de hace un año, es muy posible que no se adapte a los datos actuales.

Si lo piensas, incluso un modelo que haga algo tan aparentemente poco cambiante como clasificar fotos de gatos y perros puede requerir de un reentrenamiento regular.

Claro, esto no es porque los gatos y los perros muten de repente (en principio…), sino porque, por ejemplo, las cámaras utilizadas para tomar las fotos, junto con los formatos de imagen, contrastes y brillos, sí que tienden a cambiar cada cierto tiempo.

Sin mencionar el tema de las modas, razas que antes eran marginales y que de repente se vuelven tendencia…o circunstancias como que de repente surja la moda de poner chalequitos o gorritas a los pobres animales. Todo ello es motivo suficiente para que el rendimiento de nuestro sistema se vea afectado.

Descubre toda nuestra formación para poder desarrollar tus modelos de machine learning

El análisis predictivo es uno de los usos más frecuentes del machine learning, dado que es de los más útiles para las necesidades de las empresas y organizaciones. Pero, ¿qué tipo de algoritmos se utilizan para hacer estos análisis y cómo funcionan? Aquí se muestran algunos de los algoritmos más utilizados en los modelos de predicción.

Regresión lineal

Consiste básicamente en una línea recta que muestra el “mejor encaje” de todos los puntos de los valores numéricos. También se llama el método de los mínimos cuadrados porque calcula la suma de las distancias al cuadrado entre los puntos que representan los datos y los puntos de la línea que genera el modelo. Así, la mejor estimación será la que minimice estas distancias.

Lo bueno es que es fácil de entender y se ve claramente el porqué de esa línea. No obstante, tiende al overfitting, siendo peligrosos los valores extremos. Aparte, es demasiado simple para capturar relaciones complejas entre variables.

Regresión logística

Es una adaptación de la regresión lineal a problemas de clasificación (booleanos, grupos…),  utilizando el método de máxima verosimilitud para saber cuál es la probabilidad de que ocurra algo en cada punto determinado.

También es fácil de entender, pero, igualmente, tiene las desventajas de ser demasiado simple y de tender al overfitting.

El árbol de decisión

Es un gráfico que usa un método de ramificación basado en construcciones lógicas. Los árboles de decisión comienzan con el conjunto de datos completo y se van descomponiendo en distintas ramas en función de una serie de condiciones que se van seleccionando hasta llegar a la resolución del problema

Es muy fácil de entender e implementar, aunque resultan demasiado simples y poco poderosos para datos complejos.

Bosques aleatorios (Random forest)

Toma la media de muchos árboles de decisión hechos con muestras de los datos. Como se basa en muestras, cada árbol por separado es más débil que uno completo, pero la suma de todos logra unos resultados mejores.

Tiende a dar modelos de alta calidad, pero es difícil entender el porqué de las predicciones.

Potenciación del gradiente (Gradient Boosting)

Hace como el modelo anterior, pero usando árboles de decisión incluso más débiles. Luego, optimiza la muestra de datos utilizados en cada paso.

Tiene un alto desempeño, pero cualquier pequeño cambio en el conjunto de datos puede generar cambios radicales en el modelo, por no hablar de que es muy difícil comprender las predicciones.

Redes neuronales

Imitando el comportamiento del cerebro, son unidades (“neuronas”) interconectadas en varias capas que pasan mensajes de unas a otras.  Se utilizan cuando no se conoce la naturaleza exacta de la relación entre los valores de entrada y de salida.

Pueden resolver tareas extremadamente complejas como reconocimiento de imágenes, pero son muy lentas, requieren mucha potencia y sus resultados son predicciones casi imposibles de comprender.

K-vecinos más cercanos (k-NN o Nearest Neighbor)

Es un algoritmo de agrupamiento (clutering) no jerárquico, de los más utilizados, aunque no el único. Mediante métodos estadísticos de reconocimiento de patrones, se calcula la distancia de un dato a los vecinos más cercanos del conjunto de entrenamiento. El resultado está basado en la probabilidad de que un elemento pertenezca a la clase.

El mayor problema que tiene es que funciona mal con muestras pequeñas.

Clasificador bayesiano ingenuo (Naïve Bayes)

Este algoritmo asume que la presencia o ausencia de una característica no está relacionada con la presencia o ausencia de cualquier otra.  De este modo, cada una de las características del conjunto contribuye de forma independiente a la probabilidad de que el conjunto sea un objeto concreto.

Lo bueno es que solo requieren una pequeña cantidad de datos, aunque  a menudo falla a la hora de producir una buena estimación de las probabilidades de clase correctas.

Algoritmos de reducción de dimensionalidad

Estos algoritmos no son predictivos como tal. Se utilizan para reducir el número de variables a analizar encontrando las que realmente son relevantes para el análisis. Por ello, muchas veces se utilizan junto a los algoritmos anteriores, especialmente en conjuntos de datos muy grandes.


Déborah Fernández, responsable de marketing y comunicación de datahack

La pregunta que muchos os haréis después del artículo anterior es ¿cómo plantea la doctora Feldman Barrett la construcción de emociones? Como comentamos en Innodata...

The Deconstructed Emotion

Nuestro cerebro tiene una vida difícil; se pasa el tiempo recluido en nuestro cráneo. Tiene además que desempeñar la misión de cuidar a nuestro cuerpo, el cual a su vez es un mecanismo complejo, lleno de recursos y difícil de mantener. Justamente este balance o mantenimiento de los recursos del cuerpo, es lo que se conoce como Body Budget. De esta manera, cuando se producen alteraciones en este Body Budget, nuestro cerebro será el encargado de restablecer el equilibrio.

Cuando nuestro Body Budget cambia, surgen en nosotros unos sentimientos básicos denominados Affects y que son diferentes de las emociones. Como podemos ver a continuación tienen dos dimensiones una en el eje X (valence) y otra en el eje Y (arousal):

teoría-de-las-emociones-deconstruidas-hacia-las-máquinas-que-detectan-emociones-3

Cómo funciona el Body Budget

Aquello que impacte nuestro Body Budget de forma positiva, motivará un Affect positivo. Ocurrirá al contrario con aquello que impacte nuestro Body Budget de forma negativa.

Hay que tener en cuenta que no nacemos ya sabiendo cómo controlar nuestro Body Budget, sino que vamos aprendiéndolo desde que somos bebés. Así es como nuestro enclaustrado cerebro puede llevar a cabo con éxito la misión de mantener nuestro Body Budget: en base a

Con todo esto, el cerebro es capaz de mapear los estímulos asociados a una cierta situación, con una experiencia pasada y actuar según un modelo aprendido. Y lo más importante, de manera predictiva, no reactiva.

Estrategia predictiva del cerebro

Esto es muy interesante: nuestro cerebro se guía por una estrategia predictivo-correctiva, no de estímulo-respuesta. La doctora Barrett y otros científicos, coinciden en que el primer tipo de estrategia es mucho más eficiente y adaptativo que el segundo. En este sentido, por ejemplo, nuestro cerebro debe hacernos sentir sedientos antes de que nos deshidratemos por completo o también hacernos sentir temor al borde de un acantilado, no cuando ya estemos cayendo.

En resumen, los modelos elaborados por nuestro cerebro se basan en experiencias pasadas, tienen como objetivo regular el Body Budget y tratan de predecir lo que va a ocurrir en nuestro entorno a cada momento. En base a esa predicción, nuestro Body Budget se modificará y sentiremos un Affect.

Las emociones

Ahora vienen las emociones: la doctora Barret las define como conceptos orientados a objetivos o metas, que construimos basándonos en experiencias pasadas.

Pongamos como ejemplo el caso de que vamos conduciendo y alguien se cruza inesperadamente con su coche delante nuestro provocándonos frenar inesperadamente. La emoción que construiremos dependerá de lo que nuestro cerebro prediga que está ocurriendo en nuestro entorno, dentro de nosotros y también de nuestro objetivo. En este caso, si lo que predecimos es que alguien intentó herirnos o que no valoró nuestra vida, nuestro Body Budget cambiará, experimentaremos un Affect de agitación y tocaremos el claxon con el objetivo de poner de manifiesto que nosotros importamos y que no nos hace ninguna gracias que atenten contra nuestra integridad.

Pero si lo que predecimos es que la persona que se ha cruzado ante nosotros tiene que ir con urgencia al hospital, nuestro Body Budget cambiará, permaneceremos tranquilos y facilitaremos la maniobra al conductor de delante. Habremos construido la emoción de simpatía o empatía.

En definitiva, la doctora Feldman describe las emociones como prescripciones de las acciones. Nos indican cómo debemos actuar de cara a conseguir un determinado objetivo.

Conclusiones

Esto es solamente un resumen de una teoría, compleja y no demasiado intuitiva, pero con bastante apoyo en la comunidad científica. ¿Servirá esta teoría para sentar las bases de un verdadero reconocimiento de emociones en los modelos de machine learning? Pensemos que, si realmente queremos que una máquina sepa cómo se construyen las emociones, tendría que tener la tarea de regular un Body Budget y para ello necesitaría algo parecido a un cuerpo… ¡interesante!

MÁSTER EXPERTO EN BIG DATA & ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.


Alejandro Arranz. Data Engineer en datahack

Vivimos en una época en la cual, gracias a la nueva venida de la inteligencia artificial, se ha conseguido que las máquinas consigan resultados muy buenos en problemas que, hasta hace no mucho, creíamos que solo los humanos podíamos resolver. Un claro ejemplo son los relacionados con visión que actualmente se abordan en el ámbito de la Visión Artificial.

El hecho de que una máquina “sea capaz” de analizar imágenes del mundo real, nos ha llevado a intentar extrapolar esta capacidad a la relación máquina-humano. Intentamos que no solo sea capaz de identificar, por ejemplo, cuando se encuentra ante un ser humano, sino que además pueda determinar la emoción que en ese momento está experimentando la persona.

Para los que no lo sepáis, en datahack labs también nos hemos enfrentado a este problema en el proyecto DIA4RA (enlace aquí al diario de AIDA). Lo hemos hecho apoyándonos en uno de los datasets de cabecera utilizado para pruebas de concepto relativas al reconocimiento de emociones en rostros humanos: el FER 2013, que contiene imágenes de rostros humanos en escala de grises, etiquetadas con la emoción a la que representan (alegría, tristeza, neutro, enfado, miedo, asco). Máquinas que detectan emociones

Los resultados que obtuvimos valieron para, como mucho, hacer una pequeña aplicación que, conectada a una cámara, intentara determinar la emoción de la persona que se pusiera delante en base a lo que esta exagerara el gesto… algo fallaba terriblemente.Máquinas que detectan emociones

Una charla… en las oficinas de Google

Nuestro compañero Rubén Martínez (@eldarsilver), dio con una charla en la que la doctora Lisa Feldman Barrett expuso ante ingenieros de Google, evidencias tan demoledoras como esta imagen a continuación en la que muestra en el eje X, las expresiones faciales que se presuponen a emociones como enfado, asco, sorpresa, alegría, tristeza y miedo:

teoría-de-las-emociones-deconstruidas-hacia-las-máquinas-que-detectan-emociones

En el eje Y, figuran las evidencias basadas en diversos experimentos que reflejan la frecuencia con la que las personas muestran esas expresiones mientras experimentan la emoción correspondiente. Como vemos, no es tan frecuentemente como creíamos. Por ejemplo, a través de dieciséis estudios diferentes, esa cara de ojos saltones y boca entreabierta situada en el extremo derecho del eje X solamente representa miedo en un 9% de las ocasiones… Y en ciertas partes del mundo (como en las Islas Trobriand de Papua Nueva Guinea) se considera una cara de enfado, de amenaza. Máquinas que detectan emociones

¿Qué ocurre cuando, en los muchos estudios al respecto, distintos sujetos de prueba ven estas expresiones faciales? ¿Qué emoción asocian a las mismas? Veámoslo en la barra azul:

teoría-de-las-emociones-deconstruidas-hacia-las-máquinas-que-detectan-emociones-1

El problema viene de que, cuando abordamos la detección de emociones desde el prisma “tradicional”, estamos considerando las barras azules. Por decirlo de otra manera: estamos asumiendo que cuando, por ejemplo, una persona arruga el morro, está experimentando una emoción de asco, de profundo desagrado, como si realmente existiera una correspondencia 1 a 1 entre un gesto concreto y una emoción concreta.

Hacia una nueva forma de detectar emociones

Después de esto, la pregunta que cae por su propio peso es… Si la realidad está representada por las barras blancas, ¿por qué las barras azules son tan grandes en comparativa? Es decir, ¿por qué las personas asociamos con tanta frecuencia esas expresiones con esas emociones?

Para responder a est,o hay que echar un vistazo al tipo de material que se utiliza para preguntar a las personas que participan en los estudios que dan lugar a las barras azules:

teoría-de-las-emociones-deconstruidas-hacia-las-máquinas-que-detectan-emociones-2

Como vemos, reciben una cara con una lista de palabras de entre las cuales se les pide que escojan una. En este caso, este rostro es calificado como “Angry” el 67% de las veces, pero si se retiran las opciones y se da libertad a la persona para categorizar la expresión, solo el 36% de las veces se afirma que esa es una cara de enfado.

Por supuesto todo esto no quiere decir que la cara no tenga ningún tipo de peso a la hora de determinar la emoción de una persona, sino que nuestro cerebro mete muchos otros ingredientes en la coctelera antes de inferir dicha emoción: hay todo un contexto que entra en juego y que desaparece por completo en los experimentos anteriormente mencionados, de los cuales, por otra parte, salen algunos de los datasets que utilizamos posteriormente para tratar de abordar el gran melón de la detección de emociones. Es curioso que en nuevas versiones del FER 2013, las imágenes de expresiones faciales tengan más de una etiqueta o, lo que es lo mismo, se les haya asociado más de una emoción posible.

En el próximo artículo, veremos cómo abordar esto.


Alejandro Arranz. Data Engineer en datahack

MÁSTER EXPERTO EN BIG DATA & ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

MLlib o Spark MLlib es la librería de Machine Learning (ML) de Apache Spark. El framework de computación distribuida que incorpora esta librería permite hacer uso de una serie de algoritmos de Machine Learning.

Lo interesante de todo esto, es que los algoritmos de Machine Learning que están implementados dentro de MLlib pueden ser escalados y paralelizados, aprovechando toda la base de Spark.

Dentro de MLlib podemos encontrar dos APIs:

El cambio de pasar de API basada en RDDs a otra basada en DataFrames, se debe a que estos últimos unas estructuras de datos más rápidas y fáciles de manejar.

MLlib la biblioteca de Machine Learning de Spark

Spark MLlib dispone de los siguientes herramientas:

Dentro entre todas estas, cabría destacar las siguientes:

Estadística Básica

Incluye las técnicas de machine learning más básicas, como:

Algoritmos de Clasificación y Regresión

Los problemas de aprendizaje supervisado son aquellos en los que existe una variable explícita, algo concreto: edad, fuga, color de pelo… a predecir.

Para aprender a predecir dicha variable, tendremos que enseñar al modelo un histórico pasado, del cual ya sabemos la respuesta, es decir, se utilizan datasets etiquetados, en los que ya se tiene información acerca de lo sucedido. Es decir, para crear un modelo de detección de fraude, será necesario contar con un conjunto de datos donde se sepa quién ha hecho fraude y quién no.

Los supervisados se dividen en dos categorías, clasificadores y regresores, dependiendo de cómo sea la variable a predecir.

En los de clasificación la variable a predecir es una categoría o clase (valor categórico o discreto), por ejemplo: rubio/moreno/pelirrojo, fuga/no-fuga de cliente, software malicioso/no-malicioso, etc. En estos, el modelo da como resultado un valor de probabilidad para cada una de las categorías disponibles (distribución de probabilidad).

Para el caso de la regresión, la variable a predecir es numérica (normalmente continua pero no es estrictamente necesario), por ejemplo: edad, altura, valor de una casa, número de Gb que va a gastar un cliente, etc.

En Spark MLlib están implementados muchos de estos algoritmos, tal y como podemos ver en la siguiente tabla, obtenida de su documentación oficial:

MLlib la biblioteca de Machine Learning de Spark

Sistemas de Recomendación

Un sistema de recomendación es una subclase de un sistema de filtrado de información que busca predecir la "calificación" o "preferencia" que un usuario daría a un elemento. Se han vuelto muy populares en los últimos años y se utilizan en muchas áreas que incluyen: películas, música, noticias, libros, artículos de investigación, búsquedas, etiquetas sociales y productos en general.

Se pueden clasificar según la forma en que generen la lista de recomendaciones:

Spark MLlib permite el uso de filtros colaborativos, a través del algoritmo ALS (alternating least squares).

Clustering

Los algoritmos de clustering son capaces crear una serie clústeres o grupos de observaciones que son similares entre sí.

Hay dos tipos de algoritmos de clustering:

Spark MLlib, permite de los siguientes algoritmos de clustering: K-means, Latent Dirichlet allocation (LDA), Bisecting k-means, Gaussian Mixture Model (GMM). Puedes obtener más información acerca de los mismos en el siguiente link.

Gestión de Features

Spark MLlib dispone de un buen número de algoritmos para  la extracción, selección y transformación de variables. Tienes más información al respecto, en el siguiente link.

Optimization

Spark MLlib disponer de una serie de métodos para optimizar el entrenamiento de los algoritmos, es decir, mejorar su velocidad de entrenamiento sin que haya pérdida en el rendimiento.

Para ver más detalles acerca de estos métodos, consulta el siguiente link.


Y hasta aquí esta introducción esta introducción al MLlib de Spark, en próximas entregas ahondaremos en algunos de los aspectos que se han visto aquí.

MÁSTER EXPERTO EN BIG DATA & ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

En el primer artículo de la serie vimos cómo aproximarnos a las distribuciones de probabilidad en la Computación Clásica. En el segundo, comenzamos a asomarnos de forma superficial a la Computación Cuántica introduciendo conceptos como qubit, base canónica, superposición, regla de Born y los circuitos cuánticos con Qiskit de python. En el tercero hablamos de la Esfera Bloch, la superposición y cómo construir un circuito cuántico.

En el cuarto artículo de esta serie se introdujeron conceptos como superposición e interferencia y cómo codificarlos empleando Qiskit. Ahora es turno de ver cómo representar varios qubits y de adentrarnos en la propiedad conocida como entanglement.

Múltiples qubits

En este punto vamos a empezar a trabajar con estados cuánticos formados por varios qubits. Si recordamos lo que vimos anteriormente, un estado cuántico lo podemos asemejar a una distribución de probabilidad y un qubit es un estado cuántico de 2 niveles [a0, a1],  de forma que podemos representar un estado cuántico mediante un vector columnar.

Para hacer referencia a su label (el nombre de dicho estado) se utilizará lo que se denomina ket en la notación Dirac, es decir, podemos referirnos a nuestro estado cuántico mediante el ket . Para continuar refrescando conceptos previos, estas distribuciones de probabilidad deberán tener norma 1 en la norma L2.

Por tanto recapitulando, podemos escribir un qubit de la siguiente forma:

Introducción a la Computación Cuántica con Qiskit

Donde a0 y a1 reciben el nombre de amplitudes de probabilidad y son números complejos, por lo que no solo estaremos restringidos al cuadrante positivo del plano como ocurría con las distribuciones de probabilidad clásica, cuya norma debe ser igual a 1 en la norma L1 y además cada probabilidad debía ser mayor o igual a 0 (lo que únicamente permitía representaciones en el cuadrante positivo citado anteriormente).

Como en computación cuántica el requisito de normalización debe ser la norma L2 eso puede formalizarse para el caso de un qubit en que:

Introducción a la Computación Cuántica con Qiskit

Podemos encontrar 2 qubits especiales llamados vectores de base canónica en 2 dimensiones que son:

Introducción a la Computación Cuántica con Qiskit

La parte interesante es que podemos expandir cualquier qubit en esta base de la siguiente forma dando lugar al fenómeno de superposición:

Introducción a la Computación Cuántica con Qiskit

Según la regla de Born, si extraemos una muestra del qubit |(|) > obtendremos la salida 0 con una probabilidad |a0|2 y la salida 1 con una probabilidad de |a1|2.

Producto Kronecker

Una vez finalizado este repaso, toca ponernos manos a la obra con nuevos conceptos. Vamos a comprobar cómo añadir más qubits nos permite introducir otro fenómeno cuántico.

En este punto nos puede surgir la duda sobre cómo representar en forma de vector columnar 2 qubits. La forma de hacerlo es empleando la operación de producto de tensores o producto Kronecker. Para entenderlo vamos a ver un ejemplo en el que partimos de 2 qubits: |(|) > y |(|)` > :

Introducción a la Computación Cuántica con Qiskit

El producto de tensores o producto Kronecker de esos 2 qubits será:

Introducción a la Computación Cuántica con Qiskit

Vamos a concretar un poco más. Supongamos que tenemos almacenado en el registro cuántico qr0 un qubit que está en el estado |0> y también disponemos de otro registro cuántico llamado qr1 que de forma similar al anterior almacena un qubit en el estado |0>. Una forma de visualizar la regla del producto Kronecker de esos 2 qubits (|0> ⊕ |0>) sería mediante el siguiente código:

Introducción a la Computación Cuántica con Qiskit

El estado resultante del producto Kronecker de esos dos qubits que cada uno de ellos se encuentra en el estado |0> se suele representar como |00>. Si quisiéramos representar los estados |01>, |10> y |11> tendríamos que seguir el mismo procedimiento que hemos realizado para generar el ket |00>.

Hay que señalar que los estados |00>, |01>, |10> y |11> forman los vectores de base canónica en un espacio de números complejos de 4 dimensiones denotado como:

Introducción a la Computación Cuántica con Qiskit

Conclusión

Cuando empleamos modelos de Machine Learning y Deep Learning también trabajamos con espacios de alta dimensionalidad pero no se construyen como un producto de tensores sino que suele tratarse de Rn, es decir, un mapeo a los números reales para alguna dimensión ‘n’.

El efecto de construir espacios de alta dimensionalidad empleando producto de tensores es que no todos los vectores de dicho espacio pueden ser escritos como el producto de vectores de los elementos de ese espacio. Este hecho que en principio puede parecer confuso, nos permitirá descubrir la propiedad cuántica conocida como entanglement, que recorreremos en el siguiente artículo viendo cómo la podemos observar empleando Qiskit.  ¡No te lo pierdas!


MÁSTER EXPERTO EN BIG DATA & ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

chevron-down