Aplicar machine learning a sensores de IoT

Aplicar machine learning a sensores de IoT

  • Norbert Krupa
    Norbert has over 10 years’ experience in the data space working in different industries and various roles; from business intelligence to database administration, consulting as well as architecting high volume, distributed systems.

Si ya ha visto nuestra demostración de "Analizar datos de IoT (Internet de las cosas) en streaming en tiempo real", seguramente se estará preguntando cómo entrenamos nuestro modelo de clasificación para poder predecir la actividad de los usuarios. Primero hablemos del contexto de la demostración, de cómo clasificamos los datos y, por último, elijamos un modelo adecuado.

Contexto general

El objetivo de la demostración de IoT es dar pruebas de las capacidades de Talend en materia de streaming en tiempo real y machine learning. Esto significa que Talend recibe datos de sensores de acelerómetros de teléfonos móviles en tiempo real, canaliza esos datos en una cola de mensajes y aplica machine learning para clasificar los datos para su análisis. ¿He dicho que todo esto lo logra sin tener que programar manualmente?

Por la parte de procesamiento, se crea un endpoint REST por medio de Talend al que puedan enviarse datos de sensores. Esos datos de sensores se analizan y canalizan en una cola de mensajes (Kafka). Una vez esos datos están en la cola de mensajes, una tarea de flujo de big data de Talend lee los mensajes de la cola mediante una ventana deslizante, pasa los datos por un modelo de machine learning y los prepara para su visualización.

¡Muéstrame los datos!

Los datos que se tratan proceden de un sensor acelerómetro de un dispositivo móvil. Más en concreto, estaremos procesando la aceleración lineal de los ejes X, Y y Z. Sencillamente efectuando un análisis improvisado de un gráfico de los datos de sensores, se nos presenta lo siguiente:

La aceleración de cada eje se refleja en un gráfico en m/s2. Podemos deducir visualmente que existen tres fases de actividad: baja, alta y media, respectivamente. Para traducirlo a un modelo de machine learning, esperamos que el modelo elegido sea capaz de clasificar los datos de sensores en bajo, medio o alto. En machine learning, la clasificación se refiere a identificar una categoría a la que pertenecen las observaciones. Para empezar el ejercicio de elegir un modelo de clasificación de Spark MLib, analizamos varios modelos populares: Clasificador bayesiano ingenuo, Regresión logística o Modelo de bosque aleatorio.

Elegir un modelo

El modelo bayesiano ingenuo suele utilizarse más para clasificaciones textuales y, dado que tratamos con decimales, no encajaría demasiado. Luego tenemos el modelo de regresión logística, que no es capaz de manejar la clasificación multicategoría que necesitamos para actividad baja, media y alta. Y, por último, el modelo de bosque aleatorio sí nos permite clasificar según cada eje. Este modelo de bosque aleatorio también es eficiente para conjuntos de datos más grandes y es capaz de manejar miles de variables de entrada.

El modelo del bosque aleatorio funciona tomando el conjunto de entrenamiento y realizando un muestreo aleatorio para crear subconjuntos de datos o «árboles» aleatorios. Una vez creados muchos árboles, se genera un «bosque» aleatorio. La ventaja de disponer de muchos árboles es que de esta forma logramos una predicción más precisa de clasificación para los datos. Por ejemplo, si siete de cada diez árboles del bosque sugieren que un caso de sensor concreto está andando, se espera que la clasificación esté andando también.

Talend Real-Time Big Data Platform viene con componentes preintegrados para machine learning. El primer paso para utilizar el modelo del bosque aleatorio consiste en entrenar con ayuda de las clasificaciones creadas manualmente. Esto significa que tomamos los datos de nuestro análisis improvisado y añadimos una etiqueta de actividad. Este conjunto de entrenamiento lo utilizará un codificador de modelos para generar un modelo que se utilice para clasificar la actividad durante el streaming. La etiqueta del conjunto de entrenamiento se asociará a una actividad humana, concretamente Descansar, Andar y Correr. El conjunto de entrenamiento tiene este aspecto:

El conjunto concreto de entrenamiento utilizado en la generación de este modelo tenía unos 150 casos de cada actividad. Si comparamos a partir del modelo creado las etiquetas clasificadas manualmente con las generadas, el resultado es una precisión del 97 %, que es lo esperable.

Para valorar la precisión del modelo de machine learning, utilizamos una técnica de Validación cruzada de K iteraciones y ejecutamos 10 ejercicios de aprendizaje individuales. Cada ejercicio toma una división del conjunto de entrenamiento que luego se emplea como datos de validación. Esta técnica arrojó una precisión del 95 % con el modelo que elegimos. En una próxima entrada analizaremos esta técnica de validación y cómo construirla con Talend Studio.

El último paso consiste en utilizar el modelo en la parte en streaming de la demostración para clasificar nuestros datos. Antes de que se clasifiquen los datos, también pueden capturarse y almacenarse a efectos de archivo para análisis futuros. A continuación, los datos clasificados se prepararan para su visualización.

Ver el vídeo: Panel de control de análisis - Demo de IoT de Talend

Conclusión

El aspecto más destacable de este ejercicio es que no ha sido necesario programar nada manualmente. Todos los pasos, desde la creación de un servicio REST para adquirir datos, a la tarea en streaming de Spark que aplica un modelo de machine learning, se han diseñado con ayuda de un entorno gráfico de usuario. Si todavía no ha echado un vistazo a la demostración, póngase en contacto con nosotros para comprobar todas las facilidades que le brinda Talend de cara a su próximo proyecto de big data.

Join The Conversation

0 Comments

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *