Blog BI & EPM

Blog en français traitant des sujets fonctionnels et techniques autour des solution BI & EPM

Présentation d’Azure Machine Learning

Présentation d’Azure Machine Learning

  • Comments 2
  • Likes
Depuis le 15 Juillet, nous avons annoncé la mise à disposition, en version d’évaluation, de notre solution de Machine Learning. Pour l’utiliser au sein de votre portail Azure, vous pouvez en faire la demande depuis ce lien :
Pour plus d’information sur le Machine Learning et le Big Data, vous pouvez consulter ce blog : http://blogs.msdn.com/b/big_data_france/
Cet article est découpé de la manière suivante :
  • Création de l’espace Machine Learning via le portail Azure. 1
  • Utilisation de ML Studio. 1
  • Exploitation du model1
 
Je vais illustrer l’utilisation d’Azure ML via « ML studio ». Le scénario utilisé est des plus simples. Nous allons créer un modèle afin de prédire l’achat éventuel d’un vélo en fonction des caractéristiques socio-professionnelles de l’acheteur potentiel (âge, salaire, situation familiale, nombre d’enfant,….).

Création de l’espace Machine Learning via le portail Azure

Depuis le portail Azure, en bas de la page cliquez sur le bouton « + Nouveau ».
image
Dans le menu, choisissez « Services de données », « Machine Learning », « Quick Create ».
Renseignez les informations de création de votre environnement de Machine Learning.
Cliquez sur « Create an ML Workspace ».
image
Après une quinzaine de minutes, votre environnement est prêt. Cliquez sur le menu « Dashboard » et cliquez sur « Sign-in to ML Studio ».

Utilisation de ML Studio

Maintenant que notre environnement est créé, nous allons l’exploiter avec ML Studio.

Création d’un dataset

Via ML studio, il est possible d’importer votre propre jeu de données pour en faire des datasets
En bas de la page, cliquez sur « + NEW ».
image
Dans le menu qui apparaît, cliquez sur « Dataset », puis sur « From Local File ».
Dans la fenêtre « Upload a new dataset », sélectionnez le fichier de données que vous voulez définir comme dataset.
Une fois toutes les informations renseignées, cliquez sur la coche en bas à droite.

Création d’un espace d’expérimentation

Maintenant que nous avons importez nos propres données, nous allons créer une expérimentation sur celles-ci.
Cliquez sur le bouton « + New » en bas de la page.
Dans le menu, cliquez sur « Experiment ».
La fenêtre d’expérimentation s’ouvre. Sur la partie gauche, vous aurez accès à la boîte d’outils qui comporte de nombreuses sections.
La barre de recherche va s’avérer très pratique pour trouver les modules que l’on souhaite intégrer à notre expérimentation.
 
image

Utilisation du dataset

Nous allons maintenant utiliser notre dataset.
Dans la rubrique « Saved Datasets », sélectionnez le dataset que vous avez téléchargé précédemment.
Dans notre exemple, le dataset se nomme « Franmer_Client.csv ».
 
Sélectionnez le dataset et faîtes le glisser sur la partie centrale de la fenêtre. Le dataset apparaît dans l’espace de création. Si vous cliquez sur le point se trouvant en bas de la forme du dataset 2 options apparaissent : « Download » et « Visualize ».
image
Par exemple, si vous cliquez sur « Visualize », vous obtiendrez des informations sur votre jeu de données.
Cet espace de visualisation permet de créé un premier jeu d’analyses de votre jeu de données en créant des graphiques de comparaison.
Il sera aussi possible de créer un graphique de comparaison entre des informations provenant de 2 colonnes.

Création d’un model

Maintenant que nous avons placé notre dataset, nous allons créer un modèle d’expérimentation. L’idée est de créer un modèle afin de prédire l’achat éventuel d’un vélo par rapport aux différentes caractéristiques du potentiel acheteur.
Dans un premier temps, nous allons « entrainer » notre modèle à partir de notre dataset qui contient les caractéristiques des clients et surtout, une colonne qui indique si oui ou non un vélo a été acheté.
Nous allons donc extraire une partie des données de note dataset afin de réaliser cet « entrainement ».
Sur la partie gauche, dans le champ de recherche, commencez à entrer le mot « Split ». Faîtes glisser le module « Split » dans l’espace de création.
 
Une fois le module « Split » dans l’espace de création, reliez-le avec le data set (la flèche part du dataset vers le module « Split »). Vous devez obtenir quelque chose de similaire à la copie d’écran ci-dessous : 
Cliquez sur le module « Split ». Dans la partie droite de la fenêtre, apparaît les propriétés du module. Par défaut, la valeur « 0.5 » est défini pour le champ « Fraction of rows in the first output… ».
Vous pouvez modifier cette valeur si vous souhaitez injecter plus de données dans le module « d’entrainement ». Dans mon exemple je vais définir la valeur à 0.8. Je vais donc injecter 80% des données dans le module « d’entrainement » et les 20% restant seront directement injecté dans le module de scoring. (Le jeu de données utilisé ici fait 100 000 lignes).
Avant d’aller plus loin dans l’entrainement, il est aussi possible de rajouter d’autres modules en sortie de votre dataset. Par exemple, si dans le moteur de recherche vous entrez « descriptive », le module « Descriptive Statistics » apparaît. Glissez-le sous le dataset puis relier les 2 modules.
 
En bas de l’écran, cliquez sur le bouton « Run » afin d’exécuter votre premier modèle.
image
Une fois le modèle exécuté, une coche verte apparaît pour tous les modules Ok.
image
 
Cliquez sur le point en bas de la forme du module « Descriptive Statistics ». Cliquez sur « Visualize ».
Cette vue vous donne de nombreuses informations statistiques sur votre jeu de données.
Ci-dessous, un exemple de graphique :
 
Continuons la création de notre modèle prédictif. A la sortie de notre module de « Split », nous allons collecter les données pour réaliser un « entrainement » du modèle.
Dans le moteur de recherche, entrez le mot « Train ». Dans les résultats qui s’affiche, sélectionnez et faites glisser sur l’espace de création le module « Train Model ».
image
 
Reliez le module « Split » avec le module « Train Model ».
 
 
Mon jeu de données contient une colonne « Purchased Bike » avec les 2 valeurs « Yes » ou « No ». Comme cette colonne ne comporte finalement qu’un nombre fini de valeur, un module de classification semble être ici approprié à notre modèle de prédiction.
Toujours dans la partie gauche, dans le moteur de recherche, commencez à écrire « Classification ». Dans le résultat de la recherche, sélectionnez un module de classification et rajoutez le au modèle, au-dessus du module « Train Model ».
 
image
 
Pour cet exemple, je choisis le model « Two-Class Averaged Perceptron » (Pourquoi j’ai choisi ce modèle ? En fait je n’en sais rien, peut-être parce que le nom sonnait bienJ. Mais au-delà de la petite plaisanterie, sachez que vous pourrez revenir à n’importe quel moment sur votre modèle, pour changer ou modifier la classification afin d’obtenir un modèle plus fiable).
Reliez le module de classification au module « Train Model ».  Ci-dessous, une copie d’écran de mon modèle :
image
 
Vous remarquez un indicateur rouge dans le module « Train Model ». Cela signifie que ce module n’est pas correctement paramétré. Cliquez sur le module « Train Model ». Dans les propriétés du module, dans la partie droite de la fenêtre, cliquez sur le bouton « Launch column selector ».
Dans la fenêtre, « Select a single column », sélectionnez la colonne qui servira de référence pour votre prédiction. Dans mon exemple, j’utilise la colonne « Purchased Bike ».
Cliquez sur la coche en bas à droite de la fenêtre.
Notez que l’indicateur rouge à maintenant disparu J !
Nous allons maintenant réaliser une prédiction, basée sur les données d’entrainement, avec des données de test. Ces données de test vont en fait être les données résultant de notre module « Split ».
Dans le moteur de recherche, entrez le mot « Score ». Dans le résultat de la recherche, sélectionnez « Score Model » et rajoutez le en dessous du module « Train Model ».
 
Une fois le module « Score Model » rajouté, reliez ses 2 points d’entrées avec les sorties du module « Train Model » et du module « Split ».
Ci-dessous une copie d’écran de mon modèle.
Azure ML propose aussi des modules pour évaluer notre modèle. Cela permet de vérifier la pertinence de notre prédiction.
Dans le moteur de recherche, sur la gauche, entrez le mot « evaluation ». Sélectionnez le module « Evaluate Model » et rajoutez-le à votre Modèle.
image
 
Une fois le module « Evaluate Model » rajouté, liez-le au module « Score Model » comme illustré ci-dessous :
A ce stade-là, il est déjà possible d’exécuter notre modèle afin de vérifier sa pertinence.
En bas de l’écran, cliquez sur le bouton « Run ».
Si tout va bien, vous devez avoir des coches vertes dans tous les modules J !!
Note : Vous remarquerez que les premiers modules n’ont pas été exécutés à nouveau. En effet, Azure ML conserve les résultats des exécutions précédentes à partir du moment où aucun changement n’a été effectué au sein de ces modules.
 
 
Une fois le modèle exécuté, vous pouvez cliquer sur la sortie du module « Evaluate Model ». Un menu contextuel apparaît.
Cliquez sur « Visualize ».
 
 
Le graphique ci-dessous vous représente la pertinence du modèle. Le but est d’avoir une courbe le plus proche possible des axes de gauche et du haut (en rouge)….. Ce qui n’est pas vraiment le cas ici L !
 
image
Un peu plus bas dans la fenêtre du graphique (pensez à descendre dans la fenêtre), vous avez des données chiffrées sur la pertinence de votre modèle.
 
Il est alors possible de changer/modifier les modules de classifications pour essayer d’améliorer le modèle. Fermez la fenêtre d’évaluation du modèle afin de revenir dans l’éditeur.
Dans le moteur de recherche, sur la gauche, entrez « classification ». Dans cet exemple je supprime le module « Two-Class Averaged Perceptron » et je le remplace par le module « Two-Class Boosted Decision Tree ».
 
Voici donc mon nouveau model
 
Cliquez sur le bouton « RUN ».
 
Après exécution, visualisez le résultat depuis le module « Evaluate Model » en cliquant sur « Visualize » en sortie du module.
Voici le résultat que j’obtiens.
Et voici les valeurs du modèle :
 
Ce qui est beaucoup mieux J!
Je reviendrais un peu plus loin dans cet article sur la signification des valeurs « True Positive », « False Negative », « False Positive » et « True Negative ».

Persistance des résultats

Maintenant que nous avons notre model, ça peut être intéressant de conserver le résultat quelque part. Azure ML permet de sauvegarder le résultat de votre modèle.
Dans la partie gauche, sous la section « Data Input and Output », sélectionnez le module « Writer » et insérez-le dans votre modèle.
Ci-dessous une copie d’écran de mon ML Studio :
 
Cliquez sur le module « Writer ». Dans la partie droite de la fenêtre, vous accédez aux propriétés du module.
Renseignez les valeurs en fonction de l’endroit où vous souhaitez sauvegarder les données. Dans mon exemple, j’utilise un compte stockage Azure qui comporte le container azure-ml.
Dans le champ « Path to blob beginning with container », je renseigne le chemin en faisant bien attention de commencer par le nom du container.
Après exécution du modèle, un fichier csv se trouve dans mon container Azure.
 

Récupération des données avec Excel Power Query

Nous allons récupérer les informations du fichier Excel avec l’add-in Power Query.
A partir d’Excel, dans l’onglet « Power Query », cliquez sur « From Other Sources » puis sur « From Windows Azure Blob Storage ».
image
Renseignez les informations concernant votre compte de stockage.
Puis sélectionnez le conteneur qui contient le fichier csv.
 
Dans l’éditeur Power Query, cliquez sur « Binary » correspondant au fichier csv.
 
Les données du fichier apparaissent. Cliquez sur le bouton « Close & Load ».

 

image

 

Les données sont injectées dans une feuille Excel. Pour cette démonstration j’ai ensuite filtrée les colonnes comme décrit ci-dessous :

·         La colonne « Purchased Bike » filtrée sur « Yes ».

·         La colonne « Scored Labels » filtrée sur « No ».

Le nombre de ligne retournée est de 117.
image
Le nombre de ligne retournée par les filtres est de 117. Ce qui correspond au résultat « False Négative » de l’évaluation de notre model. Sur les 20% des données, issue du module de split, seulement 117 retournent la valeur « No » alors qu’elles étaient définies à « Yes » dans le jeu de données « d’entrainement ».

Exploitation du model

Maintenant que notre expérimentation nous permet d’avoir un modèle avec un niveau de précision satisfaisant, nous allons l’utiliser pour passer en production.
Pour ce faire nous allons suivre les étapes suivantes :

·         Sauvegarde du module « Train Model » en tant que « Trained Model ».

·         Sauvegarde de toute l’expérimentation sous un nom différent (« save as »).

·         Définition des points d’entrées et de sorties.

·         Publication en tant que service web.

 

Sauvegarde du module « Train Model » en tant que « Trained Model »

Cliquez sur le bouton de sortie du module « Train Model ». Dans le menu contextuel, cliquez sur « Save as trained Model » 
 
Dans la fenêtre qui apparaît, renseignez les informations de votre model. Si vous souhaitez remplacer un model existant, cochez la case « This is the new version of an existing trained model ».

Sauvegarde de toute l’expérimentation sous un nom différent (« save as »)

Maintenant, sauvegardez votre expérimentation mais sous un autre nom.
Sauvegardez votre expérimentation en cliquant sur « Save as ».
 
Donnez un nom à votre nouveau modèle. Validez l’enregistrement en cliquant sur le bouton en bas à droite de la fenêtre.

Définition des points d’entrées et de sorties

Revenez sur votre page d’accueil d’expérimentations et sélectionnez l’expérimentation que vous venez de sauvegarder.
image
Cliquez sur votre nouvelle expérimentation. Dans mon cas je sélectionne « Demo – 2 ».
Vous devez retrouver votre expérimentation.
Retirez les modules « Two-Class Bossted Decision Tree », « Train Model », « Descriptive Statistics » et « Writer ».Vous devez obtenir la même chose que la copie d’écran ci-dessous :
 
Dans la partie gauche, déroulez la rubrique « Trained Models ».
 
 
Sélectionnez le Trained model « Demo », puis glissez-le dans la partie centrale. Reliez le Trained model avec le module « Score Model ».
Maintenant, nous allons définir les points d’entrées et de sorties de notre modèle.
Faîtes un clic droit sur le point d’entrée droit du module « Score Model ». Cliquez sur « Set as Publish Input ».
Cliquez sur le point de sortie du module « Score Model ». Cliquez sur « Set as Publish Output ».
Votre module « Score Model » doit ressembler à la copie d’écran ci-dessous :
Cliquez sur le bouton « Run » en bas de la fenêtre.

Publication en tant que service web

Maintenant notre expérimentation est prête à être publiée.
Cliquez sur le bouton « Publish Web Service ».
Confirmez la publication en cliquant sur « Yes ».
image
 
Le dashboard de l’API s’affiche alors à l’écran. Vous y trouverez la clef (« API Key »), les aides sur son utilisation ainsi qu’un lien pour tester l’API.
image
 
Cliquez sur le bouton « Test » afin de réaliser un essai. Un formulaire apparaît. Renseignez les champs (il n’est pas nécessaire de tous les remplir). Puis validez.
A bout de quelques secondes, le résultat est renvoyé en bas de la fenêtre, dans le détail de l’opération.
 
 
Si vous souhaitez avoir plus de détail sur l’utilisation de l’API, vous pouvez cliquer sur les liens « API Help page ».
 
Ci-dessous un exemple de la page d’aide.
Tout en bas de la page se trouve des exemples de code en C#, Python et R. Dans la vidéo illustrant cet article, je montre rapidement comment utiliser le code C# avec Visual Studio.
 

    

 
Voilà pour une première utilisation d’Azure ML Sourire ! Une vidéo d'illustration est disponible ici.

Franck Mercier

Sessions de formation gratuites :

Pour tester Windows Server 2012, Windows 8, SQL Server 2012 et SQL Server 2014 CTP2, vous pouvez télécharger gratuitement la version d’évaluation disponible sous la forme :

Windows Server 2012 :

SQL Server 2012 :

Evaluation SQL Server 2014 CTP2 :

Evaluation Power BI :

Testez Azure gratuitement pendant un mois :

 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
Comments
  • Adepte du Python et de Scikit-learn, c'est l'intégration en un seul point de la création d'un modèle prédictif (avec une belle variété d'algos) et sa transformation rapide en web service hosté qui me semble intéressante ici!
    Merci pour cette présentation de bout en bout qui donne envie d'en savoir plus. A tester!

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment