CANDIDATURE SPONTANÉE

Retrouvez toute l'actualité d'Ingéniance

Découverte de Microsoft AzureML : les étoiles dans le nuage 🌠

01/08/2017

Créé en 2010, Microsoft Azure est aujourd’hui le leader sur le marché du cloud. Fort de son expérience et de son expertise, Microsoft permet aujourd’hui de mettre en place rapidement des solutions type « Machine Learning » et de les éprouver avant leurs industrialisations et leurs passages en production.

Cet article a pour vocation de décrire de manière ludique un cas d’utilisation d’Azure ML avec un jeu de données réelles et accessibles à tous, les données spatiales du Sloan Digital Sky Survey qui font figure de cas d’école.

Présentation des données

Le jeu de données que nous utiliserons pour éprouver la solution Data Science de Microsoft provient du Sloan Digital Sky Survey (SDSS). Le SDSS cherche à recenser tous les points lumineux visibles depuis la Terre et à classifier tous ces éléments. Nous nous intéresserons ici plus précisément aux propriétés lumineuses et géométriques de ces points afin de séparer les galaxies des étoiles.

Une étoile est une grosse boule lumineuse alors qu’une galaxie prend généralement une allure plus elliptique et c’est sur cette base que nous allons classer nos différentes observations. Les données sélectionnées représentent le rayon du cercle englobant 50 et 90 pourcents du flux lumineux pour six différentes longueurs d’onde allant du rouge au violet. Ces données représentent donc un espace de départ de 12 dimensions que nous allons séparer en deux. Pour l’entraînement des modèles et pour les tests, les données sont labellisées entre galaxies (0) et étoiles (1).

 

Figure 1 - Le rayon du cercle englobant le flux lumineux

 

Figure 2 - Extrait des données

 

Mise en place de la solution

La démarche ingénieur « boîte et flèches »

Une fois les données téléchargées sur Azure, il est possible de commencer à poser les premières briques de notre pipeline de données. Dans un premier temps, il est nécessaire de séparer notre jeu de données en deux grâce à une première brique :

                  - Split Data : prend un jeu de donnée en entrée et le sépare en deux.

Un premier ensemble servira pour l’apprentissage de nos différents modèles comprenant 80% des données (environ 800 000 observations). Le second permettra de valider ou d’invalider les résultats (200 000 observations).

J’ai tout d’abord arbitrairement choisi d’entrainer une SVM, au travers de la configuration d’une brique permettant de définir tous les hyper-paramètres de la SVM :

                  -  Support Vector Machine : crée un modèle de classification.

Celle-ci est alors entrainée contre notre jeu de donnée au travers d’une autre boîte :

                  -  Train Model : entraine un modèle contre un jeu de données et produit un modèle entrainé.

Puis les résultats sont comparés à notre jeu de test grâce à une dernière :

                  -  Score Model : teste les performance d’un modèle entrainé contre un jeu de donnée.

De la même manière que précédemment, après la séparation de nos données en deux, j’ai tiré un « Y » sur le pipeline de données afin de pouvoir ici entrainer puis tester une forêt d’arbre décisionnel.

Figure 3 - Une minicarte simple

Du code bien emballé

Nos données ne sont pas encore parfaites. Le travail de tout bon Data Scientist comprend une forte dose de nettoyage et d’épuration de données.  Nos données d’entrainements, telles qu’obtenues auprès du SDSS, ne sont pas encore prête à l’emploi. Un rapide coup d’œil sur le champ de label et il est possible d’apercevoir des valeurs non conformes. Certaines données prennent ainsi la valeur -9999 qui ne représente pas une modalité cohérente.

Pour enlever les lignes non exploitables, nous utiliserons un petit script python qui sera directement encapsulé dans une boîte de script. Ces scripts suivent un cahier des charges particulier et doivent :

                  - Contenir une fonction azureml_main prenant en entrée 2 paramètres ;

                  - Retourner un ou deux paramètres.

Les scripts doivent utiliser la librairie Panda, ce qui est finalement plus bénéfique que contraignant. Nous exécuterons ici un script relativement simple qui filtrera simplement toutes les données ayant un label autre que 0 ou 1, labels qui correspondent à nos deux classes.


Cette fonction est directement placée après l’intégration des données. Après quoi une étape de normalisation des données est nécessaire afin que toutes les dimensions aient le même impact sur la solution finale :

                  - Normalize Data : prend en entrée un set de données et produit un set de données normalisées.

Résultats

La dernière boîte Evaluate Model permet de comparer nos différents modèles entrainés et d’obtenir différents éléments clés quant à leur réussite ou leur échec.

                  - Evaluate Model : compare deux modèles entrainés fournis en entrée

Dans notre cas, il vaut mieux passer sous silence les résultats peu probants de la SVM. Néanmoins, la forêt de décision a quant à elle obtenue des résultats très corrects – 88% de précision - sans paramétrage avancé.

Figure 4 - Matrice de confusion

 

Conclusions et premières impressions

Il aura finalement fallu 2h entre l’inscription à Microsoft Azure et l’obtention de résultats probants. L’outil est facile à prendre en main et permet rapidement de faire un prototype efficace.

Le cas d’utilisation est ici très scolaire. Cependant, une application vers d’autres domaines est tout à fait envisageable. Un prêt ou un contrat d’assurance sera-t-il rentable ? Quel est le prochain placement qui intéressera ce client ? Ces données sont-elles cohérentes ? Le champ d’application est vaste et il est maintenant temps de prendre pleinement possession des masses de données dormantes.

 

A propos de l’auteur

Thibaud L., diplômé de l’INSA de Rouen et de l’université de Cranfield est consultant Ingéniance depuis 2016. Il exerce son métier en science de la donnée chez un client CIB et est passionné d’intelligence artificielle.


Autres news PUBLICATIONS

16/08/2017

FRTB : Toujours un défi de taille pour les banques
Publication sur la règlemen (...)
Voir la news
04/04/2017

TARGET2-SECURITIES

(...)
Voir la news

dernières
news

16/08/2017
PUBLICATIONS
FRTB : Toujours un défi de taille pour les banques
Lire la suite
01/08/2017
FORMATION
Nouvelle série de formations pour la rentrée !
Lire la suite
01/08/2017
PUBLICATIONS
Découverte de Microsoft AzureML : les étoiles dans le nuage 🌠
Lire la suite

offres
d'emploi

18/10/2017
STAGE INGENIEUR
STAGE - INGENIEUR DEVELOPPEUR C/C++ - F/H
Lire la suite
18/10/2017
SIEGE
DIRECTEUR DE BUSINESS UNIT ASSURANCE EN ESN/SSII - F/H
Lire la suite
18/10/2017
STAGE INGENIEUR
STAGE - INGENIEUR ETUDES ET DEVELOPPEMENT C# - F/H
Lire la suite