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.
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 :
- utilisons les versions SQL Server 2014 et Visual Studio 2013.
- travaillons avec une instance de SQL Server locale.
Avant de commencer ce tutoriel, vérifiez dans SQL Server Configuration Manager que les services SQL Server et SSAS sont actifs.
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.
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.
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
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.
Si l’importation des données s’est bien déroulée, vous devriez obtenir les informations suivantes sur le bandeau gauche :
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.
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.
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 :
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.
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.
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 ! ;)
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 :
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 :
- traiter les données (modification des noms de colonnes à la volée, gestion des données manquantes, etc.)
- 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.