Data Mining avec SSAS et Machine Learning avec Azure ML ?

Avec la disponibilité d’Azure Machine Learning (Azure ML), une question devient légitime vis-à-vis de la plateforme de données Microsoft : dois-je continuer à utiliser le module de Data Mining intégré à la plateforme SQL Server avec SSAS (SQL Server Analysis Services) ou au contraire migrer mes analyses sur Azure ML ?

Commençons par donner la réponse à cette question : bien que SSAS et Azure ML utilisent les technologies d’apprentissage automatique (Machine Learning), ils ne remplissent pas les mêmes fonctions.

Rappelons au passage que SSAS et Azure ML ne sont pas les seuls produits et services de Microsoft à utiliser les méthodes de Machine Learning. On retrouve le Machine Learning dans (presque) toutes les solutions et services Microsoft, de manière certes plus ou moins cachée en fonction du besoin rempli par le produit ou service.

Par exemple dans Bing, le moteur de recherche de Microsoft, il est fait un usage intensif depuis 2004 du Machine Learning comme nous l’avons souligné lors de l’annonce d’Azure ML. Pourtant, cela n’apparaît pas explicitement : depuis l’extérieur, Bing permet de trouver des pages Internet à partir de mots clés. On ne se pose pas la question des algorithmes mis en jeu ni des paramètres à fixer.

De même dans Kinect, les méthodes de Machine Learning sont intégrées de manière complètement transparente afin de détecter les mouvements des joueurs.

image

Dans le module Data Mining SSAS de SQL Server, le besoin rempli consiste à comprendre les données pour en tirer des informations utiles (insights) interprétables.

Un utilisateur d’Azure ML voudra certainement aller plus loin en choisissant un algorithme particulier, régler ses paramètres pour avoir les meilleures performances possibles, quitte à ne pas comprendre comment la décision est prise.

Ainsi, dans SSAS, il est plutôt question de trouver un modèle explicatif pour la prédiction alors que dans Azure ML il est question uniquement de trouver un modèle prédictif sans nécessiter de compréhension humaine.

Dans la suite de ce billet, nous vous proposons un mode d’emploi guidé sur la mise en place d’une analyse de données utilisant des méthodes issues de Machine Learning avec SSAS et Azure ML.

Du Data Mining avec SSAS

Installation des outils

Bien qu’il soit question de Machine Learning, le module inclus dans SSAS utilise le mot « Data Mining » pour les raisons évoquées plus haut.

Tout d’abord, un prérequis pour suivre ce tutoriel est l’installation de SQL Server et de Visual Studio. Si vous n’êtes pas familiers avec l’installation et la manipulation de ces outils, nous vous conseillons de suivre les tutoriels disponibles sur MSDN et Microsoft TechNet.

Dans notre exemple, nous :

Avant de commencer ce tutoriel, vérifiez dans SQL Server Configuration Manager que les services SQL Server et SSAS sont actifs.

image

Voilà, nous sommes prêts à commencer :)

Description du jeu de données

Nous allons travailler sur un jeu de données connu sous le nom d’AdventureWorks. C’est un jeu de données artificiel qui recense des données sur les clients d’une entreprise de vente de vélos.

Dans notre cas, nous allons télécharger l’entrepôt de données AdventureWorksDW. Le fichier .mdf ainsi téléchargé peut être importé depuis l’environnement SQL Server Management Studio.

Dans ces données, on trouve la vue vTargetMail contenant des informations sur des clients dont l’attribut BikeBuyer qui indique si un client donné a acheté un vélo. Cette vue nous servira pour l’entraînement d’un modèle.

image

Notre objectif consiste donc d’abord à créer un modèle capable de prédire si un client donné est susceptible d’acheter un vélo.

Création d’un projet de Data Mining

Ouvrons un projet Data Mining dans l’environnement Visual Studio.

image

Une fois le projet créé, on trouve sur le côté gauche plusieurs dossiers dans l’Explorateur de solution, dont seulement certains vont nous intéresser :

  • Data Sources : recense les jeux de données importés
  • Data Source Views : recense les vues importées du jeu de données Source
  • Mining Structures : recense les algorithmes de Data Mining que l’on souhaite appliquer aux données

image

Importation des données

Nous allons commencer par importer notre entrepôt de données nommé AdventureWorksDW (qui a été préalablement importé dans SQL Server Management Studio). Pour cela, cliquez-droit sur Data Sources | New Data Source et suivez les informations à l’écran.

image

image

Si l’importation des données s’est bien déroulée, vous devriez obtenir les informations suivantes sur le bandeau gauche :

image

Ensuite, nous allons importer la vue à étudier : vTargetMail. Comme précédemment, cliquez-droit sur Data Source Views | New Data Source View et suivez les informations à l’écran.

image

Création d’un algorithme de Data Mining

Nous allons entrainer un algorithme d’arbre de décision sur les données contenues dans vTargetMail. En particulier, nous allons essayer de prédire l’attribut BikeBuyer à partir des autres attributs disponibles.

Pur cela, cliquez dans le bandeau de gauche sur Mining Structures | New Mining Structure et suivez les indications à l’écran.

Pour notre exemple, nous allons identifier les individus par leur clé (key) CustomerKey, et essayer de prédire l’attribut BikeBuker (predict) avec les attributs suivants (input) : Age, Gender, MaritalStatus, NumberOfCarsOwned, NumberOfChildrenAtHome et Region.

image

image

image

Entrainement de l’algorithme d’arbres de décision

Si toutes les étapes précédentes ont été bien réalisées, votre bandeau de gauche devrait ressembler à l’image ci-dessous :

image

En double cliquant sur la structure située dans le dossier Mining Structures, vous devriez observer le bandeau suivant en haut de la fenêtre principale.

image

En sélectionnant l’onglet Mining Model Viewer, une nouvelle fenêtre apparaît : cliquez sur Yes.

Cliquez également sur Run dans la nouvelle fenêtre qui apparaît. Fermez ensuite cette nouvelle fenêtre.

image

image

Voilà, notre modèle est enfin entrainé :)

Dans la fenêtre principale apparaissent les détails des paramètres de l’arbre de décision ! ;)

image

Du Machine Learning avec Azure ML

Concernant Azure ML, nous allons obtenir une extraction propre au format CSV que nous importons dans Azure ML.

L’entraînement de l’algorithme s’obtient avec le programme suivant :

image

En particulier, le modèle entraîné est une fonction de type boîte noire, ses paramètres ne nous sont pas accessibles.

Si vous avez des difficultés à constituer cette expérience sur Azure ML, vous pouvez vous référer au billet Les premiers pas avec ML Studio.

En guide de conclusion

SSAS et Azure ML ne remplissent pas les mêmes fonctions.

SSAS est un outil flexible permettant de :

  1. traiter les données (modification des noms de colonnes à la volée, gestion des données manquantes, etc.)
  2. générer rapidement un modèle compréhensible de prédiction des données.

Azure ML nécessite d’avoir de son côté des données relativement propres avant d’appliquer des méthodes de Machine Learning plus avancées mais difficilement interprétables.

Il est toutefois possible de combiner ces deux outils : entraîner un modèle avec Azure ML, l’exporter sous forme de service Web et le consommer ensuite depuis la plateforme  SQL Server à l’aide de SSIS (SQL Server Integration Services).

Vous pouvez vous inspirer du billet Tirer parti d’un cluster Hadoop depuis SSIS qui propose un livre blanc présentant la démarche à adopter.

Un grand merci à mes collègues Jérémy Samama, Sébastien Pertus et Damien Cudel pour leur contribution active à la réalisation de ce billet.