Partager via


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

Dans cette leçon, vous allez utiliser la forme SELECT FROM <model> PREDICTION JOIN (DMX) de l’instruction SELECT pour créer différents types de prédictions en fonction du modèle d’arbre de décision que vous avez créé dans la leçon 2 : Ajout de modèles d’exploration de données à la structure d’association de données. Ces types de prédiction sont définis ci-dessous.

Requête Singleton
Utilisez une requête singleton pour fournir des valeurs ad hoc lors de la réalisation de prédictions. Par exemple, vous pouvez déterminer si un seul client est susceptible d’être un acheteur de vélos, en passant des entrées à la requête, telles que la distance de trajet, le code de zone ou le nombre d’enfants du client. La requête singleton retourne une valeur qui indique la probabilité que la personne achète un vélo en fonction de ces entrées.

Requête par lot
Utilisez une requête par lots pour déterminer qui dans une table de clients potentiels est susceptible d’acheter un vélo. Par exemple, si votre service marketing vous fournit une liste de clients et de caractéristiques des clients, vous pouvez utiliser une prédiction en série pour déterminer qui dans le tableau est susceptible d’acheter un vélo.

Le formulaire SELECT FROM <model> 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 qui sont retournées dans les résultats. Les résultats peuvent également contenir des colonnes d’entrée à partir des données sources.

  • Requête source définissant les données utilisées pour créer une prédiction. Par exemple, dans 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 sources. Si ces noms correspondent, vous pouvez utiliser la syntaxe NATURAL et abandonner les mappages de colonnes.

Vous pouvez améliorer davantage la requête à l’aide de fonctions de prédiction. Les fonctions de prédiction fournissent des informations supplémentaires, telles que la probabilité d’une prédiction qui se produit, et fournissent une prise en charge de la prédiction dans le jeu de données d’entraînement. Pour plus d’informations sur les fonctions de prédiction, consultez Functions (DMX) .

Les prédictions de ce tutoriel sont basées sur la table ProspectiveBuyer dans l’exemple de base de données AdventureWorksDW2012 . La table ProspectiveBuyer contient une liste de clients potentiels et de leurs caractéristiques associées. Les clients de ce tableau sont indépendants des clients utilisés pour créer le modèle d’exploration de données d’arbre de décision.

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 spécifique est susceptible d’acheter un vélo.

  • Créez une requête par lots pour déterminer quels clients, répertoriés dans une table de clients, sont susceptibles d’acheter un vélo.

Requête Singleton

La première étape consiste à utiliser SELECT FROM <model> PREDICTION JOIN (DMX) dans une requête de prédiction singleton. Voici un exemple générique de 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 la requête doit retourner et spécifie le 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 que vous utilisez pour créer 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 correspond à chaque colonne du modèle à une colonne à partir de l’entrée, en fonction des noms de colonnes. Si les noms de colonnes ne correspondent pas, les colonnes sont ignorées.

Pour créer une requête de prédiction de type singleton

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

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

  3. Remplacez ce qui suit :

    <select list>   
    

    avec :

    [Bike Buyer] AS Buyer, PredictHistogram([Bike Buyer]) AS Statistics  
    

    L’instruction AS est utilisée pour donner un alias aux 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 Functions (DMX).

  4. Remplacez ce qui suit :

    [<mining model>]   
    

    avec :

    [Decision Tree]  
    
  5. Remplacez ce qui suit :

    (SELECT '<value>' AS [<column name>], ...)  AS t  
    

    avec :

    (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 complète doit maintenant être la suivante :

    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 As.

  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 sur la question de savoir si un client avec les caractéristiques spécifiées achètera un vélo, ainsi que des statistiques sur cette prédiction.

Requête par lot

L’étape suivante consiste à utiliser SELECT FROM <model> PREDICTION JOIN (DMX) dans une requête de prédiction par lots. Voici un exemple générique d’instruction batch :

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>  

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 la requête retourne, ainsi que le nom du modèle d’exploration de données 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 sources basées sur les prédictions :

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

Vous avez plusieurs options pour la méthode de récupération des données sources, mais dans ce didacticiel, vous allez utiliser OPENQUERY. Pour plus d’informations sur les options disponibles, consultez <la requête> de données sources.

La ligne suivante définit le mappage entre les colonnes sources du modèle d’exploration de données et les colonnes des données sources :

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 facultative du code spécifie la colonne par laquelle les résultats seront classé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 retournerez les dix premiers acheteurs de vélos, classés par la probabilité que la prédiction soit correcte. Vous pouvez utiliser [DESC|Syntaxe ASC] pour contrôler l’ordre dans lequel les résultats sont affichés.

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

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

  3. Remplacez ce qui suit :

    <select list>   
    

    avec :

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

    La clause TOP 10 spécifie que seuls les dix premiers résultats seront retournés par la requête. L’instruction ORDER BY dans cette requête trie les résultats par la probabilité de la correction de la prédiction, de sorte que seuls les dix résultats les plus probables seront retournés.

  4. Remplacez l’espace réservé suivant :

    [<mining model>]   
    

    Avec le nom du modèle :

    [Decision Tree]  
    
  5. Remplacez l’instruction OPENQUERY générique suivante :

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

    Avec une déclaration qui fait référence à l’entrepôt de données Adventureworks actuel, par exemple :

    OPENQUERY([Adventure Works DW 2014],  
      'SELECT  
        [LastName],  
        [FirstName],  
        [MaritalStatus],  
        [Gender],  
        [YearlyIncome],  
        [TotalChildren],  
        [NumberChildrenAtHome],  
        [Education],  
        [Occupation],  
        [HouseOwnerFlag],  
        [NumberCarsOwned]  
      FROM  
        [dbo].[ProspectiveBuyer]  
      ') AS t  
    
  6. Remplacez la syntaxe générique suivante :

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

    Avec les mappages de colonnes nécessaires pour ce modèle et ce 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 afin de lister les résultats avec la probabilité la plus élevée en premier.

    L’instruction complète doit maintenant être la suivante :

    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  
    
  7. Dans le menu Fichier , cliquez sur Enregistrer DMXQuery1.dmx As.

  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 contenant des noms de clients, une prédiction indiquant si chaque client achètera un vélo et la probabilité de la prédiction.

Il s’agit de la dernière étape du didacticiel Bike Buyer. Vous disposez maintenant d’un ensemble de modèles d’exploration de données que vous pouvez utiliser pour explorer les similitudes entre vos clients et prédire si les clients potentiels achèteront un vélo.

Pour savoir comment utiliser DMX dans un scénario Market Basket, consultez le didacticiel Market Basket DMX.