Introduction rapide et guidée à l’exploration de données (Data Mining)

Vous avez certainement remarqué que les sites marchands sont capables de vous proposer d’acheter d’autres articles en fonction de celui dont vous êtes en train d’explorer les caractéristiques, ou dont vous venez de valider l’achat. La plupart du temps, ces articles sont plutôt bien corrélés avec l’article acheté ou revu : c’est un exemple de ce que l’on peut faire calculer à un algorithme d’exploration de données.

Vous vous en doutez donc : si le Data Mining est un ensemble de fonctionnalités qui est rarement abordé, il n’en est pas moins très intéressant, et a un bel avenir devant lui. Je vous propose donc de découvrir très simplement avec SQL Server cette discipline, aussi stimulante techniquement que « décisionnellement ». En effet, celle-ci transforme le consommateur de rapports d’un rôle passif / interactif à un rôle proactif.

Commençons d’abord par installer la base de données exemple d’entrepôt de données AdventureWorks, que l’on trouve ici pour les versions 2008, 2008 R2 et 2012.
Pour voir comment installer cette base de données sur votre instance SQL Server, c’est par ici.

Dans cette base de données existe une vue dbo.vTargetMail, que nous allons utiliser pour caractériser les clients les plus enclins à acheter un vélo.

Nous créons donc un nouveau projet avec SQL Server Data Tools (le nouveau Business Intelligence Development Studio), et nous choisissons un projet SQL Server Analysis Services and Data Mining :

Une fois le tout validé par OK, la solution s’ouvre et nous devons tout d’abord créer une source de données :

Un nouveau dialogue s’ouvre alors, et nous devons cliquer sur le bouton New …

Nous mettons un point pour signifier le serveur local, et choisissons la base de données que nous venons d’installer :

Nous devons maintenant définir sous quel utilisateur nous allons nous connecter à la source de données. Nous choisissons l’utilisateur courant pour des raisons pratiques, mais ce n’est pas ce que l’on ferait pour un environnement de production.

Notons également que le compte de service qui exécute le service SQL Server Analysis Services doit être enregistré sur l’instance SQL Server (moteur de base de données). Par défaut, ce compte est NT Service\MSSQLServerOLAPService. Nous devons donc exécuter le script suivant :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE LOGIN [NT Service\MSSQLServerOLAPService]
FROM WINDOWS

USE AdventureWorksDW2012
GO

CREATE USER [NT Service\MSSQLServerOLAPService]
FOR LOGIN [NT Service\MSSQLServerOLAPService]
GO

-- SQL Server 2021 et suivants
ALTER ROLE db_datareader
ADD MEMBER [NT Service\MSSQLServerOLAPService]

-- Jusqu'à SQL Server 2008 (R2 inclus)
EXEC sp_addrolemember 'db_datareader', 'NT Service\MSSQLServerOLAPService'

Nous pouvons cliquer sur Next, puis sur Finish, et voilà notre source de données créée. De retour dans l’explorateur de solutions, il nous faut maintenant créer une vue source de données :

Nous aurions pu créer la source de données à partir du dialogue qui s’affiche :

Comme nous l’avons déjà créée, nous nous contentons de cliquer sur Next, et obtenons le dialogue suivant, qui présente la liste des tables et vues présentes dans la base de données AdventureWorksDW2012 :

Nous ajoutons donc la vue dbo.vTargetMail, et cliquons sur Next, qui nous amène à un dialogue de revue, et nous validons le tout par Finish.

Nous devons maintenant créer une structure d’exploration de données. De retour dans l’explorateur de solutions, il nous suffit pour ce faire de cliquer-droit sur Mining Structures :

Nous sautons la page d’introduction de l’Assistant d’Exploration de Données en cliquant directement sur Next, ce qui nous amène le dialogue suivant :

Nous continuons avec l’option « A partir d’une base de données relationnelle ou d’un entrepôt de données« , et cliquons sur Next :

Ici nous avons le choix de plusieurs algorithmes, expliqués succinctement (plus de détails dans le livre référencé en fin d’article):

Nous cliquons sur Next, et obtenons un dialogue de revue et de validation de la vue de données : nous cliquons une nouvelles fois sur Next. Nous devons maintenant spécifier la liste des vues à partir desquelles l’algorithme va calculer les réponses possibles. La case à cocher Case permet de spécifier l’entité que l’on souhaite explorer. En général, un cas est représenté par une ligne d’une table ou d’une vue qui stocke ou montre les caractéristiques de transactions. Nous continuons donc avec la proposition de l’assistant :

Nous devons maintenant choisir suivant quelles caractéristiques de l’acheteur nous souhaitons que l’algorithme nous aide à prédire quels sont les meilleurs clients potentiels. Comme il s’agit d’acheteurs de vélos, nous choisissons Age, CommuteDistance, HouseOwnerFlag et NumberCarsOwned :

On peut aussi cliquer sur Suggest : le moteur échantillonne alors les données pour faire quelques propositions :

Nous ne modifions pas la matrice, et validons par Next, ce qui amène la fenêtre suivante :

En dernier lieu, il convient de spécifier le type des données : ceci se fait par un simple clic sur Detect.

Après une validation par clic sur Next, nous pouvons enfin choisir le taux d’échantillonnage : comme 30% des données est un extrait relativement raisonnable, on peut se permettre de ne pas le changer. La lecture de l’explication nous permet de comprendre ce que va faire l’algorithme :

Nous validons le tout par un clic sur Next, ce qui nous permet de revoir notre paramétrage et de renommer la structure et le modèle, mais surtout de cocher la case qui nous permettra d’obtenir les détails de l’analyse jusqu’au niveau des transactions exposées par la vue.

Nous pouvons maintenant valider le tout par Finish, et entraîner le modèle que nous venons de créer. Pour ce faire, il nous suffit de choisir l’option Process… du menu contextuel du modèle :

Notons que l’on peut faire la même chose sous SQL Server Management Studio, après s’être connecté à l’instance SQL Server Analysis Services :

Il nous faut d’abord enregistrer le modèle sur le serveur : jusqu’ici le modèle n’existait que dans SQL Server Data Tools. Nous validons donc par Yes l’avertissement suivant :

Ceci nous amène le dialogue suivant. Pour simplifier, nous continuons avec les options par défaut, et cliquons sur Run … :

Le modèle est alors en cours d’entraînement :

Une fois le succès de l’opération annoncé, nous fermons les dialogues successivement en cliquant sur Close. Nous basculons alors vers l’onglet Mining Model Viewer, ce qui nous permet de parcourir l’arbre :

Le gradient de couleurs qui caractérise chaque nœud est d’intensité plus faible à mesure que la population sous-jacente diminue.

Voici ce qu’indique la légende lorsqu’on clique sur le nœud Age > 47 and < 75 :

La classe d’âge 48-74 comporte 7675 de nos clients. Les facteurs qui influent le plus l’achat d’un vélo dans cette classe d’âge sont en premier lieu le nombre de voitures possédées, suivi par l’âge. On peut d’ailleurs vérifier cela en basculant dans l’onglet Dependancy Network :

Si l’on déplace le curseur en butée basse, on voit clairement que le facteur qui influence le plus l’achat d’un vélo est le nombre de voitures que l’acheteur potentiel possède. Si l’on rapproche le curseur de sa position originale, nous observons que viennent ensuite l’âge, la distance séparant le domicile du lieu de travail, et enfin la propriété d’une maison.

Si vous souhaitez approfondir vos connaissances sur l’Exploration de Données avec SQL Server, voici quelques ressources :

– Le site MarkTab.net, qui pointe vers de nombreux blogs et publie quelques vidéos sur YouTube.
– Le site SQLServerDataMining.com.
– Le livre Data Mining with Microsoft SQL Server 2008 (ISBN: 978-0-470-27774-4, un pavé de 672 pages).

Laisser un commentaire