Leçon 5 : Exécution des requêtes de prédiction
Dans cette leçon, vous allez utiliser le formulaire SELECT FROM <> model PREDICTION JOIN (DMX) de l’instruction SELECT pour créer deux types de prédictions différents basés sur le modèle d’arbre de décision que vous avez créé dans leçon 2 : Ajout de modèles d’exploration de données à la structure d’exploration de données d’association. Ces types de prédiction sont définis ci-dessous.
Requête Singleton
Utilisez une requête singleton pour fournir les valeurs appropriées lors des prédictions. Par exemple, vous pouvez déterminer si un client est susceptible d'acheter un vélo, en intégrant dans la requête des entrées telles que la distance domicile-travail, le code postal ou le nombre d'enfants du client. La requête singleton renvoie une valeur qui indique la probabilité que la personne achète un vélo en fonction de ces entrées.
Requête par lot
Optez pour une requête par lot si vous souhaitez déterminer qui, dans une liste de clients potentiels, est susceptible d'acheter un vélo. Par exemple, si votre service marketing vous communique une liste de clients et d'attributs de clients, vous pouvez alors procéder à une prédiction par lot pour évaluer qui dans la liste des clients est un acheteur de vélo potentiel.
Le formulaire SELECT FROM <PREDICTION> JOIN (DMX) de l’instruction SELECT contient trois parties :
Liste des colonnes du modèle d'exploration de données et des fonctions de prédiction retournées dans les résultats. Ces résultats peuvent également contenir les colonnes d'entrée issues des données sources.
Requête source définissant les données utilisées pour créer une prédiction. Par exemple, dans le cadre d'une requête par lot, il peut s'agir d'une liste de clients.
Mappage entre les colonnes du modèle d'exploration de données et les données source. Si les noms correspondent, vous pouvez alors adopter la syntaxe NATURAL et ignorer les mappages de colonnes.
Vous pouvez davantage affiner la requête à l'aide de fonctions de prédiction. Les fonctions de prédiction fournissent des informations supplémentaires, notamment la probabilité d'une prédiction, et offrent une prise en charge de la prédiction dans le dataset d'apprentissage. Pour plus d’informations sur les fonctions de prédiction, consultez Fonctions (DMX).
Les prédictions de ce tutoriel sont basées sur la table ProspectiveBuyer de l’exemple de base de données AdventureWorksDW2012 . La table ProspectiveBuyer renferme une liste de clients potentiels et de leurs caractéristiques associées. Les clients de cette table sont indépendants des clients avec lesquels le modèle d'exploration de données d'arbre de décision a été créé.
Vous pouvez également créer des prédictions à l’aide du générateur de requêtes de prédiction dans SQL Server Data Tools (SSDT).
Tâches de la leçon
Vous allez effectuer les tâches suivantes dans cette leçon :
Créez une requête singleton pour déterminer si un client donné est susceptible d'acheter un vélo.
Créez une requête par lot pour déterminer qui, dans une liste de clients potentiels, est susceptible d'acheter un vélo.
Requête Singleton
La première étape consiste à utiliser le modèle> SELECT FROM <PREDICTION JOIN (DMX) dans une requête de prédiction singleton. L'exemple générique suivant utilise l'instruction singleton :
SELECT <select list> FROM [<mining model name>]
NATURAL PREDICTION JOIN
(SELECT '<value>' AS [<column>], ...)
AS [<input alias>]
La première ligne du code définit les colonnes du modèle d'exploration de données que doit retourner la requête et spécifie le nom du modèle d'exploration de données utilisé pour générer la prédiction :
SELECT <select list> FROM [<mining model name>]
Les lignes suivantes du code définissent les caractéristiques du client avec lequel vous avez généré une prédiction :
NATURAL PREDICTION JOIN
(SELECT '<value>' AS [<column>], ...)
AS [<input alias>]
ORDER BY <expression>
Si vous spécifiez NATURAL PREDICTION JOIN, le serveur fait correspondre chaque colonne du modèle avec une colonne d'entrée en se basant sur les noms des colonnes. Si les noms des colonnes ne correspondent pas, les colonnes sont ignorées.
Pour créer une requête de prédiction singleton
Dans Explorateur d'objets, cliquez avec le bouton droit sur le instance d’Analysis Services, pointez sur Nouvelle requête, puis cliquez sur DMX.
L'Éditeur de requête s'ouvre et contient une nouvelle requête vide.
Copiez l'exemple générique de l'instruction singleton dans la requête vide.
Remplacez le code suivant :
<select list>
par :
[Bike Buyer] AS Buyer, PredictHistogram([Bike Buyer]) AS Statistics
L'instruction AS est employée pour créer des alias pour les colonnes retournées par la requête. La fonction PredictHistogram retourne des statistiques sur la prédiction, y compris la probabilité et la prise en charge. Pour plus d’informations sur les fonctions qui peuvent être utilisées dans une instruction de prédiction, consultez Fonctions (DMX).
Remplacez le code suivant :
[<mining model>]
par :
[Decision Tree]
Remplacez le code suivant :
(SELECT '<value>' AS [<column name>], ...) AS t
par :
(SELECT 35 AS [Age], '5-10 Miles' AS [Commute Distance], '1' AS [House Owner Flag], 2 AS [Number Cars Owned], 2 AS [Total Children]) AS t
L'instruction tout entière doit se présenter comme suit :
SELECT [Bike Buyer] AS Buyer, PredictHistogram([Bike Buyer]) AS Statistics FROM [Decision Tree] NATURAL PREDICTION JOIN (SELECT 35 AS [Age], '5-10 Miles' AS [Commute Distance], '1' AS [House Owner Flag], 2 AS [Number Cars Owned], 2 AS [Total Children]) AS t
Dans le menu Fichier , cliquez sur Enregistrer DMXQuery1.dmx sous.
Dans la boîte de dialogue Enregistrer sous, accédez au dossier approprié et nommez le fichier
Singleton_Query.dmx
.Dans la barre d’outils, cliquez sur le bouton Exécuter .
La requête retourne une prédiction indiquant dans quelle mesure un client avec les caractéristiques précisées est susceptible d'acheter un vélo, ainsi que des statistiques sur cette prédiction.
Requête par lot
L’étape suivante consiste à utiliser le modèle> SELECT FROM <PREDICTION JOIN (DMX) dans une requête de prédiction par lots. L'exemple générique suivant utilise une instruction par lot :
SELECT TOP <number> <select list>
FROM [<mining model name>]
PREDICTION JOIN
OPENQUERY([<datasource>],'<SELECT statement>')
AS [<input alias>]
ON <on clause, mapping,>
WHERE <where clause, boolean expression,>
ORDER BY <expression>
Tout comme dans la requête singleton, les deux premières lignes du code définissent les colonnes du modèle d'exploration de données que retourne la requête, ainsi que le nom du modèle d'exploration utilisé pour générer la prédiction. L’instruction TOP <number> spécifie que la requête retourne uniquement le nombre ou les résultats spécifiés par <nombre>.
Les lignes suivantes du code définissent les données source sur lesquelles les prédictions sont fondées :
OPENQUERY([<datasource>],'<SELECT statement>')
AS [<input alias>]
Vous disposez de plusieurs options pour la méthode d'extraction des données source mais, dans ce didacticiel, vous utiliserez OPENQUERY. Pour plus d’informations sur les options disponibles, consultez <Requête> de données sources.
La ligne suivante définit le mappage entre les colonnes source du modèle d'exploration et les colonnes des données source :
ON <column mappings>
La clause WHERE filtre les résultats retournés par la requête de prédiction :
WHERE <where clause, boolean expression,>
La dernière ligne du code, qui est facultative, précise la colonne selon laquelle les résultats seront triés :
ORDER BY <expression> [DESC|ASC]
Utilisez ORDER BY en combinaison avec l’instruction TOP <number> pour filtrer les résultats retournés. Par exemple, dans cette prédiction, vous allez retourner les dix meilleurs acheteurs de vélos triés selon la probabilité d'exactitude de la prédiction. Vous pouvez recourir à la syntaxe [DESC|ASC] pour contrôler l'ordre d'affichage des résultats.
Pour créer une requête de prédiction par lot
Dans Explorateur d'objets, cliquez avec le bouton droit sur le instance d’Analysis Services, pointez sur Nouvelle requête, puis cliquez sur DMX.
L'Éditeur de requête s'ouvre et contient une nouvelle requête vide.
Copiez l'exemple générique de l'instruction par lot dans la requête vide.
Remplacez le code suivant :
<select list>
par :
SELECT TOP 10 t.[LastName], t.[FirstName], [Decision Tree].[Bike Buyer], PredictProbability([Bike Buyer])
La clause TOP 10 indique que la requête retourne uniquement les dix meilleurs résultats. L'instruction ORDER BY de cette requête trie les résultats selon la probabilité d'exactitude de la prédiction. Ainsi, seuls les dix meilleurs résultats possibles sont retournés.
Remplacez l'espace réservé suivant :
[<mining model>]
Par le nom du modèle de données :
[Decision Tree]
Remplacez l'instruction générique OPENQUERY suivante :
OPENQUERY([<datasource>],'<SELECT statement>')
Par une instruction qui fait référence à l'entrepôt de données Adventureworks, notamment :
OPENQUERY([Adventure Works DW 2014], 'SELECT [LastName], [FirstName], [MaritalStatus], [Gender], [YearlyIncome], [TotalChildren], [NumberChildrenAtHome], [Education], [Occupation], [HouseOwnerFlag], [NumberCarsOwned] FROM [dbo].[ProspectiveBuyer] ') AS t
Remplacez la syntaxe générique suivante :
<ON clause, mapping,> WHERE <where clause, boolean expression,> ORDER BY <expression>
Par les mappages de colonnes nécessaire pour ce modèle et un jeu de données d'entrée :
[Decision Tree].[Marital Status] = t.[MaritalStatus] AND [Decision Tree].[Gender] = t.[Gender] AND [Decision Tree].[Yearly Income] = t.[YearlyIncome] AND [Decision Tree].[Total Children] = t.[TotalChildren] AND [Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND [Decision Tree].[Education] = t.[Education] AND [Decision Tree].[Occupation] = t.[Occupation] AND [Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND [Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned] WHERE [Decision Tree].[Bike Buyer] =1 ORDER BY PredictProbability([Bike Buyer]) DESC
Spécifiez
DESC
pour afficher en premier les résultats à plus forte probabilité.L'instruction tout entière doit se présenter comme suit :
SELECT TOP 10 t.[LastName], t.[FirstName], [Decision Tree].[Bike Buyer], PredictProbability([Bike Buyer]) FROM [Decision Tree] PREDICTION JOIN OPENQUERY([Adventure Works DW 2014], 'SELECT [LastName], [FirstName], [MaritalStatus], [Gender], [YearlyIncome], [TotalChildren], [NumberChildrenAtHome], [Education], [Occupation], [HouseOwnerFlag], [NumberCarsOwned] FROM [dbo].[ProspectiveBuyer] ') AS t ON [Decision Tree].[Marital Status] = t.[MaritalStatus] AND [Decision Tree].[Gender] = t.[Gender] AND [Decision Tree].[Yearly Income] = t.[YearlyIncome] AND [Decision Tree].[Total Children] = t.[TotalChildren] AND [Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND [Decision Tree].[Education] = t.[Education] AND [Decision Tree].[Occupation] = t.[Occupation] AND [Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND [Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned] WHERE [Decision Tree].[Bike Buyer] =1 ORDER BY PredictProbability([Bike Buyer]) DESC
Dans le menu Fichier , cliquez sur Enregistrer DMXQuery1.dmx sous.
Dans la boîte de dialogue Enregistrer sous, accédez au dossier approprié et nommez le fichier
Batch_Prediction.dmx
.Dans la barre d’outils, cliquez sur le bouton Exécuter .
La requête retourne une table répertoriant les noms des clients, une prédiction indiquant si chaque client est un acheteur de vélo potentiel et la probabilité de cette prédiction.
C'est la dernière étape du didacticiel Bike Buyer. Vous disposez désormais d'un ensemble de modèles d'exploration de données à l'aide desquels vous pouvez examiner des similitudes entre vos clients et prévoir qui parmi eux sont des acheteurs potentiels de vélos.
Pour savoir comment utiliser DMX dans un scénario Market Basket, consultez Le didacticiel Market Basket DMX.