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

Nouveau : 5 décembre 2005

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 déterminer si un seul client est susceptible d'acheter un vélo. Par exemple, si vous identifiez un client potentiel qui réside près de son lieu de travail, est père ou mère de deux enfants et vit dans un quartier (code postal) spécifique, vous pouvez recourir à une requête singleton pour déterminer dans quelle mesure cette personne est susceptible d'acheter un vélo.
  • Requête par lots
    Optez pour une requête par lots 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 lots 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 l'ensemble de résultats. Cette liste peut également contenir les colonnes d'entrée issues des données source.
  • 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 lots, 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éer une requête singleton pour déterminer si un client donné est susceptible d'acheter un vélo ;
  • créer une requête par lots pour déterminer qui, dans un groupe de clients, est susceptible d'acheter un vélo.

Requête singleton

La première étape consiste à utiliser le formulaire 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 aliast>]

La première ligne du code définit les colonnes du modèle d'exploration de données que retourne la requête, ainsi que le modèle d'exploration 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. Si les noms des colonnes ne correspondent pas, ils sont ignorés.

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
       [Decision Tree].[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 lots

L'étape suivante consiste à utiliser le formulaire SELECT FROM <modèle> PREDICTION JOIN (DMX) dans une requête de prédiction par lots. L'exemple générique suivant utilise une instruction par lots :

SELECT TOP <number> <select list> 
FROM [<mining model name>]
PREDICTION JOIN
OPENQUERY([<datasource>],'<SELECT statement>')
  AS [<input alias>]
ON <on clause>
WHERE <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 <on clause>

La clause WHERE filtre les résultats retournés par la requête de prédiction :

WHERE <expression>

La dernière ligne du code 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 lots

  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 lots 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> 
    WHERE <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
    

    Ajoutez l'instruction 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.