Devoxx 2016 : De l’IoT, des timeseries et de la prédiction avec Android, Cassandra et Spark

devoxx_france_2016

A l ‘heure des objets connectés, du Big Data et du machine Learning, nous pouvoir voir que la pleine exploitation de ces technologies est encore timide et que celles-ci peuvent être mal articulées entre-elles.

Aussi quand est paru le programme de Devoxx 2016, la conférence animé par Amira Lakhal, représentante des Duchess France et également développeuse agile Java et Scala, ne pouvait être qu’enthousiasmante.

Le pitch et la promesse de ces 45 minutes :

« Le nombre des objets connectés ne cessent d'augmenter de jour en jour. Nul ne peut ignorer leur potentiel et surtout l'impact que ces objets pourraient avoir sur notre quotidien.
Je vais vous présenter un exemple d'objet connecté et de quelle façon analyser ses données. L'objectif est de voir comment collecter les données depuis un capteur du smartphone, les stocker dans Cassandra et enfin, les analyser pour prédire notre activité avec Spark.»

Nous avons donc 3 étapes à réaliser : le recueil de données, l’analyse de celles-ci et l’interprétation que nous leur donnons.

Le recueil

A partir d’un Smartphone et d’une équipe de cobayes, Amira a recueilli un échantillon de données complet. Pour réaliser un recueil de données, une simple application Android suffit. Nous nous appuyons sur l’accéléromètre du téléphone afin de récupérer la donnée en temps réel, avec une composante essentielle : le temps.
En effet toutes les données émises par les objets connectés sont horodatées. L'accélération de l'accéléromètre permet de récupérer les mesures dans les trois dimensions spatiales, X, Y et Z.

Ici, cette simple application a été spécialement customisée pour les cobayes afin d’indiquer quelle activité était en cours : Standing, Sitting, Walking ou Running.

L’ingéniosité de la manœuvre tient surtout dans l’utilisation de Cassandra.
Cette base de données (SGBD) de type NoSQL conçue pour gérer des quantités massives de données est une base orientée colonnes.
En utilisant le Time Series Data Model, un type de donnée particulier et en y associant le user concerné et la date du jour, Amira contourne la problématique de création de SSTable, à chaque insertion de nouvelles données ainsi que la limite du nombre de colonnes pour une même table.

En effet même si cette limite est impressionnante, un capteur qui établit une mesure toutes les secondes, c’est plus de 31.5 millions de valeurs à la fin de l’année ! Je vous laisse imaginer le volume pour des enregistrements toutes les millisecondes…

Nous avons donc maintenant une série d’enregistrements X, Y, Z, de timestamp associés par un user sur une activité définie.

 

imageData

L’analyse

Une fois ces échantillons de valeurs stockés, l’étape d’analyse commence et le machine Learning entre en jeu. En effet la participation de chacun des cobayes sert ici à éditer un modèle de données.

Quelles sont les données représentant la course, l’arrêt, la marche, la position assise ?

Et c’est sur Spark, framework de traitements Big Data open source construit pour effectuer des analyses sophistiquées et conçu pour la rapidité et la facilité d’utilisation, que continue la démonstration d’Amira. Il existe déjà des connecteurs entre Cassandra et Spark, Spark Streaming semblant idéal, Amira l’adapte donc en implémentant les méthodes onStart et OnStop, en y définissant son contexte Spark et surtout en délimitant la durée des batchs qui seront analysés.

L’interprétation

Le modèle de classification est lui confié à une autre API de Spark, MLib et son algorithme Random Forest sur la base des informations de référence enregistrées en amont.
Eh oui, les cobayes n’ont pas couru, marché, pour rien.
Et MLLib permet d'exécuter de manière distribuée la plupart des algorithmes courants de Machine Learning dont l’algorithme Random Forest.

Une fois le training effectué et quelques étapes de transformation plus tard – Feature Engineering – un modèle réutilisable est maintenant exploitable. Mise en service sur un service REST, l’application peut enfin prédire/interpréter en temps réel l’activité de son utilisateur.

La démonstration en live d’un volontaire courant, marchant ou se tenant simplement immobile lors de cette conférence reste un temps fort et un moment original de la présentation d’Amira Lakhal

Pour conclure

Nous avons pu assister en live à l’enregistrement des données du volontaire, la transformation par batch avec Spark Streaming, l’application du modèle et la prédiction en temps réel de l’activité menée.

La promesse de cette conférence fut tenue haut la main ! Avec un speaker de talent, une démonstration en live et un ensemble d’outils et de technologies au service d’une application réussie. Amira Lakhal ayant open-sourcé l’ensemble de son projet, je ne peux que conseiller d’aller jeter un coup d’œil sur son gitHub https://github.com/MiraLak/
Je nuancerai cette démonstration par une précision : on assiste ici à une remarquable « démonstration » d’analyse en temps réel mais nous sommes encore loin de l’analyse prédictive. Mon smartphone peut détecter si je marche, si je cours mais pas encore si je vais marcher ou courir dans les minutes à venir ! A suivre donc, et de très près.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.