Leçon 5 : Exécution des requêtes de prédiction

Dans cette leçon, vous allez utiliser le formulaire SELECT FROM <modèle> PREDICTION JOIN (DMX) de l'instruction SELECT pour créer deux différents types de prédiction fondés sur le modèle d'arbre de décision que vous avez créé au cours de la Leçon 2 : Ajout de modèles d'exploration de données à la structure d'exploration de données Market Basket. 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 <modèle> PREDICTION JOIN (DMX) de l'instruction SELECT est composé de 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 didacticiel sont fondées sur la table ProspectiveBuyer de la base de données exemple AdventureWorksDW. 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 disponible dans Business Intelligence Development Studio. Pour plus d'informations, consultez Utilisation du Générateur de requêtes de prédictions pour créer des requêtes de prédictions DMX.

Tâches de la leçon

Au cours de cette leçon, vous allez effectuer les tâches suivantes :

  • 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 SELECT FROM <modèle> 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

  1. Dans l'Explorateur d'objets, cliquez avec le bouton droit sur l'instance de 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.

  2. Copiez l'exemple générique de l'instruction singleton dans la requête vide.

  3. 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 données statistiques concernant la prédiction, notamment la probabilité et la prise en charge. Pour plus d'informations sur les fonctions qu'il est possible d'utiliser dans une instruction de prédiction, consultez Fonctions (DMX).

  4. Remplacez le code suivant :

    [<mining model>] 
    

    par :

    [Decision Tree]
    
  5. 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
    
  6. Dans le menu Fichier, cliquez sur Enregistrer DMXQuery1.dmx sous.

  7. Dans la boîte de dialogue Enregistrer sous, accédez au dossier approprié et nommez le fichier Singleton_Query.dmx.

  8. 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 formulaire SELECT FROM <modèle> PREDICTION JOIN (DMX) dans une requête de prédiction par lot. 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 <number>.

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 <source data query>.

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 l'instruction ORDER BY conjointement 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

  1. Dans l'Explorateur d'objets, cliquez avec le bouton droit sur l'instance de 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.

  2. Copiez l'exemple générique de l'instruction par lot dans la requête vide.

  3. Remplacez le code suivant :

    <select list> 
    

    par :

    SELECT
      TOP 10
      t.[LastName],
      t.[FirstName],
      [Decision Tree].[Bike Buyer],
      PredictProbability([Bike Buyer])
    

    La valeur 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.

  4. Remplacez le code suivant :

    [<mining model>] 
    

    par :

    [Decision Tree]
    
  5. Remplacez le code suivant :

    OPENQUERY([<datasource>],'<SELECT statement>')
    

    par :

      OPENQUERY([Adventure Works DW],
        'SELECT
          [LastName],
          [FirstName],
          [MaritalStatus],
          [Gender],
          [YearlyIncome],
          [TotalChildren],
          [NumberChildrenAtHome],
          [Education],
          [Occupation],
          [HouseOwnerFlag],
          [NumberCarsOwned]
        FROM
          [dbo].[ProspectiveBuyer]
        ') AS t
    
  6. Remplacez le code suivant :

    <ON clause, mapping,> 
    WHERE <where clause, boolean expression,>
    ORDER BY <expression>
    

    par :

    [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],
        '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
    
  7. Dans le menu Fichier, cliquez sur Enregistrer DMXQuery1.dmx sous.

  8. Dans la boîte de dialogue Enregistrer sous, accédez au dossier approprié et nommez le fichier Batch_Prediction.dmx.

  9. 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 le cadre d'un scénario Market Basket, consultez Didacticiel DMX Market Basket.