Prédire la qualité d’un vin avec Azure ML – 1ère partie

Nous souhaitons que ce blog soit un cadre d’échanges et de partage sur le #MachineLearning, avec la mise en avant de domaines d’applications assortie de la proposition de scénarios/solutions/modèles type prêts à l’usage. Ainsi, pour rentrer de façon pragmatique dans le monde de l’apprentissage automatique, et au-delà d’un certain nombre de billets d’introduction pour partager une compréhension commune des principes, l’objectif que nous nous sommes fixé consiste notamment à partager des focus particuliers sur la mise en œuvre concrète d’une technologie, ou d’un ensemble de technologies.

Dans cette dynamique, et au moment de la période des désormais classiques Foires au Vin ici et là – vous trouverez un calendrier complet ici, Romain Casteres (@PulsWeb), consultant Décisionnel de la société DCube nous fait le plaisir de partager un article très didactique pour aborder par l’exemple le service Azure Machine Learning (Azure ML), service que nous avons précédemment introduit à l’occasion du lancement de ce blog le mois dernier.

Je profite de cette occasion pour le remercier très sincèrement pour cette remarquable contribution, à consommer sans modération, contrairement aux crus dont il est question ici ;-)

Romain est MVP SQL Server, certifié MCITP, MCTS, MCSA, MCSE 2008 / 2012. Data & Big Data Fan ! Romain s’est plus particulièrement spécialisé sur les technologies décisionnelles de Microsoft, le moteur SQL Server – Romain est membre du bureau du GUSS (Groupe des Utilisateurs francophones de Microsoft SQL Server Server) - et Azure HDInsight, au cœur de l'offre Big Data (, Small Data, All Data) de Microsoft. A ce propos, les Journées SQL Server 2012 avaient été l’occasion de découvrir il y a quelques temps déjà un ensemble de démonstrations des plus intéressantes lors de la session Big Data mêlant Big Data et BI (Business Intelligence) dans un continuum. Romain avait alors eu la gentillesse de prendre le temps nécessaire à la rédaction d’un article technique détaillé publié sur le blog MSDN Big Data France pour permettre à tout un chacun de les reproduire. Nous le retrouvons aujourd’hui sur ce blog avec plaisir.

Je vous en souhaite une bonne lecture.

--Philippe

_________________________________________________________________________________________

Introduction

Dans ce billet, je vous propose d’aborder et de présenter le service Azure Machine Learning (Azure ML) au travers d’un exemple concret et d’une problématique bien réelle : Comment prédire la qualité d’un vin en fonction de ses caractéristiques !

Avant de rentrer dans le vif du sujet – ce sera l’objet de la seconde partie du billet -, nous (re)verrons dans un premier temps qu’est-ce que l’apprentissage automatique (Machine Learning), quels en sont les objectifs, quels sont les différents (types d’) algorithmes utilisés dans ce contexte, etc. Vous pouvez bien entendu en profiter pour parcourir les billets d’introduction de ce blog si ce n’est déjà fait ! J’introduirai également le service Azure ML et ses principals caractéristiques.

Dans un second temps, avec la seconde partie, nous nous concentrerons sur l’utilisation du service Azure ML en tant que telle. Pour cela, nous commencerons par présenter le jeu de donnée que nous utiliserons pour notre analyse et cette découverte de l’environnement, nous testerons et évaluerons différents algorithmes de prédiction dans le but d’obtenir le « meilleur » modèle. Enfin nous publierons notre expérimentation à travers un service Web que nous interrogerons via un ETL (SSIS) afin de simuler une industrialisation, une mise en production de notre algorithme. Voilà pour le programme :-)

Une remarque au passage,  ce billet n’a pas vocation à être un cours sur le Machine Learning. Si vous recherchez un tel contenu, vous pouvez par exemple prendre le temps de suivre celui d’Andrew Ng.

  • J’ai cherché un jeu de données pour avoir un support de rédaction. C’est après une étude de marché que j’ai écrit cet article, je me suis dit, qu'au moins en France, je toucherai un large public ! (Dédicace à une chanson du groupe Java « Sexe, Accordéon Et Alcool »).
  • Ayant peu de connaissances en œnologie, je ne garantis pas la pertinence voir la véracité de mes résultats, mais n’hésitez pas à les commenter ;-)

Le Machine Learning en bref

L’apprentissage automatique ou le Machine Learning est une discipline scientifique où l'analyse et l'implémentation de méthodes automatisables permet à une machine d'évoluer grâce à un processus d'apprentissage.

The goal of Machine Learning is to build computer systems that can adapt and learn from their experience.

Tom Dietterich

imageimageimage

Dilbert (5 janvier 2000)

L’utilisation du Machine Learning reste encore principalement cantonnée au secteur de l’informatique et de la statistique. Avec la multiplication des données, de leurs nouveaux types, de leurs fréquences, …, les Big Data ou déluge de données, ces algorithmes commencent à être utilisés dans plusieurs domaines et dans plus en plus de sociétés. Avec cette démocratisation, il devient impératif pour ceux qui utilisent ces algorithmes de comprendre leur signification et leur potentiel impact. Ce blog tente de s’y employer ;)

Comme cela a été décrit dans un précédent billet, le principe du Machine Learning est de créer un modèle à partir d’un jeu de données, duquel on peut évaluer les performances par une méthode de validation sur un sous-ensemble de ce jeu de données. Plus la taille du jeu de données utilisé sera grande et plus le modèle entraîné sera performant. C’est surement pour cela que l’on amalgame souvent le Machine Learning au Big Data.

La démocratisation du Big Data aurait-elle pour incidence la démocratisation du Machine Learning ? Je laisse cela à votre sagacité

Les principales étapes quant à la construction d’un modèle prédictif peuvent se synthétiser comme suit :

image

Dans le domaine de l'apprentissage supervisé, voici quelques (familles d’) algorithmes :

  • Linear Classifier : il permet de classifier selon une combinaison linéaire des caractéristiques.

    • Logical Regression : la régression logistique est une technique statistique connue utilisée pour modéliser les résultats binaires.

    Utilisation : Exploration et évaluation des facteurs qui contribuent à un résultat, comme par exemple rechercher les facteurs qui influencent les clients à se rendre plusieurs fois dans un magasin.

    • Naïve Bayes Classifier : c’est un algorithme qui permet de classifier facilement et rapidement.

    Utilisation : Catégoriser les bons et mauvais clients.

    • Perceptron : c’est un algorithme de techniques de séparation linéaire (Université de Lille 3)
    • Support Vector Machine (SVM) : c’est un algorithme d'apprentissage supervisé destiné à résoudre des problèmes de discrimination et de régression reposant sur deux idées clés, i) la marge maximale et ii) le fait de transformer l'espace de représentation des données d'entrée en un espace de plus grandes dimensions.

    Utilisation : Les SVM peuvent être utilisés pour résoudre des problèmes de discrimination, c'est-à-dire décider à quelle classe appartient un échantillon, ou de régression, c'est-à-dire prédire la valeur numérique d'une variable.

    • Quadratic Classifiers : un classificateur quadratique est utilisé pour séparer des données en deux ou plusieurs classes d'objets à l’aide d’une surface quadratique.
  • K-Means Clustering : l'algorithme des k-moyennes divise des observations en K partitions (clusters) dans lesquelles chaque observation appartient à la partition avec la moyenne la plus proche.

Utilisation : K-Means est utile lorsque vous avez une idée du nombre de partitions existantes dans votre espace.

  • Boosting : le Boosting optimise les performances d’algorithmes de classification binaires. C’est une méthode pour convertir des règles de prédiction peu performantes en une règle de prédiction (très) performante. La prédiction finale est issue d’une combinaison (vote pondéré) de plusieurs prédictions.

Utilisation : Prédiction de courses hippiques.

  • ·Decision Tree : c’est un algorithme de classification et de régression utilisé pour la modélisation prédictive d'attributs discrets et continus. L’algorithme est facile à appréhender. Utilisation : identifier les caractéristiques d’un client.
    • Random Forest : l'algorithme des forêts d'arbres décisionnels effectue un apprentissage sur de multiples arbres de décision entrainés sur des sous-ensembles de données légèrement différents.

 

  • Neural Networks : l’algorithme associe chaque état possible de l'attribut d'entrée avec chaque état possible de l'attribut prévisible, et il utilise les données d'apprentissage pour calculer les probabilités.

Utilisation : Prédiction des stocks.

  • Bayesian Networks : l’algorithme calcule des probabilités conditionnelles. En fonction des informations observées, il calcule la probabilité des données non observées. Par exemple, en fonction des symptômes d'un malade, on calcule les probabilités des différentes pathologies compatibles avec ses symptômes. On peut aussi calculer la probabilité de symptômes non observés, et en déduire les examens complémentaires les plus intéressants.

Utilisation : Modélisation des risques.

Il existe deux types de modèle en fonction de la nature de la sortie attendue :

  1. Classification : La variable cible est catégorique et sa, « classe » est identifiée.
  2. Régression : La variable cible est continue

Après avoir recueilli des données, les avoir nettoyées, enrichies, avoir sélectionné leurs caractéristiques, choisi le modèle en fonction de la sortie attendue et du type de vos données, entrainé le modèle, il est désormais temps de l’évaluer à l’aide des méthodes suivantes :

  • Model Scoring : processus qui applique les paramètres du modèle à un ensemble de données pour générer des prévisions.
  • Model Evaluation :
    • Calcule la performance du modèle en fonction du Model Scoring.
    • Mesure la capacité d'un modèle à apprendre la relation entre les caractéristiques et les objectifs.

Tout cela reste (encore) très théorique… Passons à la pratique ! et à la présentation d‘Azure ML pour commencer.

La “tournée du propriétaire” pour Azure ML

image

Azure Machine Learning (Azure ML) est un service permettant de réaliser des analyses prédictives. En tirant parti du Cloud, Azure ML permet à un large public d'accéder aujourd’hui au Machine Learning depuis un simple navigateur Internet. En effet, le Machine Learning requiert généralement des logiciels complexes, des ordinateurs haut de gamme et des scientifiques des données (Data Scientist). Pour de nombreuses start-ups et même pour de grandes entreprises, cette technologie reste trop compliquée et trop chère.

Azure ML combine des outils d'analyse, des algorithmes puissants développés pour Xbox et Bing et des années de recherches menées par Microsoft en matière de Machine Learning en un service Cloud simple et convivial.

Pour mémoire, voici un historique des actions de Microsoft sur le Machine Learning :

image

Histoire de continuer les présentations, je vous invite à visionner la une vidéo de présentation d’Azure ML ici.

image

Azure ML est disponible en préversion depuis le 14 Juillet. Pour l’essayer, rien de plus simple, rendez-vous ici. (Si vous avez besoin de complément, vous pouvez (re)lire un précédent billet sur le sujet ici.)

Après avoir créé un Workspace espace de travail, il est possible de charger des données, créer des expérimentations, publier des services Web, etc. Voici à quoi ressemble la fenêtre de création d’expérimentation :

Un certain nombre de modules permettent de formater, corréler, transformer les données, etc. Fort logiquement, ils sont organisés par types d’action :

image

Vous pouvez consulter la liste exhaustive des modules ici.

Les données d’entrée peuvent aujourd’hui être récupérées des sources suivantes :

  • Azure Blob Storage,
  • http,
  • Azure Table,
  • SQL Azure,
  • Hive Query,
  • Power Query.

De même, il est possible d’enregistrer les résultats d’une expérimentation dans les destinations suivantes :

  • Azure Blob Storage,
  • Azure Table,
  • SQL Azure,
  • Hive Query.

Le service Azure ML est facturé par heure lors de l’expérimentation. Le service d’API est lui facturé aux 1000 appels. Pour plus de détails, rendez-vous ici.

Voilà terminé notre rapide tour du propriétaire avant de passer à la pratique dans la seconde partie de ce billet; enfin dirons certains ;-).

Dans l’intervalle,  n’hésitez pas à lire également l’excellente introduction à Azure ML disponible ici, à visionner les différents tutoriels disponibles sur le site Azure ML, la vidéo réalisée par Franck Mercier, la prise en main de l’outil par David Joubert, à consulter les release notes, le Centre de documentation Azure ML, à visiter le blog du groupe produit sur le Machine Learning (en anglais) pour en savoir plus et obtenir des mises à jour sur Azure ML.