Interrogation d'un modèle d'arbre de décision (Analysis Services - Exploration de données)

Lorsque vous créez une requête sur un modèle d'exploration de données, vous pouvez créer une requête de contenu, qui fournit des détails sur les modèles (ou séquences) découverts au cours de l'analyse, ou créer une requête de prédiction, qui utilise les séquences du modèle pour effectuer des prédictions pour les nouvelles données. Par exemple, une requête de contenu pour un modèle d'arbre de décision peut fournir des statistiques sur le nombre de cas à chaque niveau de l'arbre, ou les règles qui font la différence entre des cas. En revanche, une requête de prédiction mappe le modèle à de nouvelles données pour générer des recommandations, des classifications, etc. Vous pouvez également extraire les métadonnées relatives au modèle en utilisant une requête.

Cette section explique comment créer des requêtes pour les modèles basés sur l'algorithme MDT (Microsoft Decision Trees).

Requêtes de contenu

Récupération des paramètres du modèle depuis l'ensemble de lignes de schéma d'exploration de données

Obtention de détails à propos des arborescences dans le modèle à l'aide de DMX

Récupération de sous-arborescences du modèle

Requêtes de prédiction

Retour de prédictions avec des probabilités

Prédiction d'associations à partir d'un modèle d'arbres de décision

Récupération d'une formule de régression d'un modèle d'arbres de décision

Recherche d'informations à propos d'un modèle d'arbres de décision

Pour créer des requêtes explicites sur le contenu d'un modèle d'arbre de décision, vous devez comprendre la structure du contenu du modèle et les types d'informations stockés dans les différents types de nœuds. Pour plus d'informations, consultez Contenu du modèle d'exploration de données pour les modèles d'arbre de décision (Analysis Services - Exploration de données).

Exemple de requête 1 : récupération des paramètres du modèle depuis l'ensemble de lignes de schéma d'exploration de données

En interrogeant l'ensemble de lignes de schéma d'exploration de données, vous pouvez rechercher les métadonnées relatives au modèle, par exemple sa date de création, le moment où il a été traité pour la dernière fois, le nom de la structure d'exploration de données sur laquelle il est basé et le nom de la colonne utilisée comme attribut prédictible. Vous pouvez également retourner les paramètres qui ont été utilisés lorsque le modèle a été créé pour la première fois.

select MINING_PARAMETERS 
from $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = 'TM_Decision Tree'

Exemples de résultats :

MINING_PARAMETERS

COMPLEXITY_PENALTY=0.5, MAXIMUM_INPUT_ATTRIBUTES=255,MAXIMUM_OUTPUT_ATTRIBUTES=255,MINIMUM_SUPPORT=10,SCORE_METHOD=4,SPLIT_METHOD=3,FORCE_REGRESSOR=

Retour en haut

Exemple de requête 2 : retour de détails à propos du contenu du modèle à l'aide de DMX

La requête suivante retourne des informations de base relatives aux arbres de décision qui ont été créés lors de la génération du modèle dans le Didacticiel sur l'exploration de données de base. Chaque arborescence est stockée dans son propre nœud. Étant donné que ce modèle contient un seul attribut prédictible, il n'y a qu'un seul nœud d'arbre. Toutefois, si vous créez un modèle d'association à l'aide de l'algorithme MDT, il peut y avoir des centaines d'arbres, un pour chaque produit.

Cette requête retourne tous les nœuds de type 2, lesquels sont les nœuds de niveau supérieur d'un arbre qui représente un attribut prédictible particulier.

Notes

La colonne, CHILDREN_CARDINALITY, doit être placée entre parenthèses afin de la distinguer du mot clé réservé MDX du même nom.

SELECT MODEL_NAME, NODE_NAME, NODE_CAPTION, 
NODE_SUPPORT, [CHILDREN_CARDINALITY]
FROM TM_DecisionTrees.CONTENT
WHERE NODE_TYPE = 2

Résultats de l'exemple :

MODEL_NAME

NODE_NAME

NODE_CAPTION

NODE_SUPPORT

CHILDREN_CARDINALITY

TM_DecisionTree

000000001

Tout

12939

5

Que vous indiquent ces résultats ? Dans un modèle d'arbre de décision, la cardinalité d'un nœud particulier vous indique le nombre d'enfants immédiats de ce nœud. La cardinalité de ce nœud est de 5, ce qui signifie que le modèle a divisé la population cible d'acheteurs de bicyclettes potentiels en 5 sous-groupes.

La requête associée suivante retourne les enfants de ces cinq sous-groupes, ainsi que la distribution d'attributs et de valeurs dans les nœuds enfants. Étant donné que des statistiques telles que la prise en charge, la probabilité et la variance sont stockées dans la table imbriquée, NODE_DISTRIBUTION, cet exemple utilise le mot clé FLATTENED pour produire les colonnes de la table imbriquée.

Notes

La colonne de table imbriquée, SUPPORT, doit être placée entre parenthèses afin de la distinguer du mot clé réservé du même nom.

SELECT FLATTENED NODE_NAME, NODE_CAPTION,
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE, [SUPPORT]
FROM NODE_DISTRIBUTION) AS t
FROM TM_DecisionTree.CONTENT
WHERE [PARENT_UNIQUE_NAME] = '000000001'

Résultats de l'exemple :

NODE_NAME

NODE_CAPTION

T.ATTRIBUTE_NAME

T.ATTRIBUTE_VALUE

SUPPORT

00000000100

Number Cars Owned = 0

Bike Buyer

Missing

0

00000000100

Number Cars Owned = 0

Bike Buyer

0

1067

00000000100

Number Cars Owned = 0

Bike Buyer

1

1875

00000000101

Number Cars Owned = 3

Bike Buyer

Missing

0

00000000101

Number Cars Owned = 3

Bike Buyer

0

678

00000000101

Number Cars Owned = 3

Bike Buyer

1

473

D'après ces résultats, vous pouvez indiquer que parmi les clients qui ont acheté un vélo ([Bike Buyer] = 1), 1 067 clients n'avaient pas de voiture et 473 en avait 3.

Retour en haut

Exemple de requête 3 : récupération de sous-arborescences à partir du modèle

Imaginons que vous souhaitiez en savoir plus sur les clients qui ont acheté un vélo. Vous pouvez afficher des détails supplémentaires pour chacun des sous-arbres en utilisant la fonction IsDescendant (DMX) dans la requête, comme indiqué dans l'exemple suivant. La requête retourne le nombre d'acheteurs de vélos en extrayant les nœuds terminaux (NODE_TYPE = 4) de l'arbre qui contient les clients âgés de plus de 42 ans. La requête limite les lignes de la table imbriquée à ceux pour lesquels Bike Buyer = 1.

SELECT FLATTENED NODE_NAME, NODE_CAPTION,NODE_TYPE,
(
SELECT [SUPPORT] FROM NODE_DISTRIBUTION WHERE ATTRIBUTE_NAME = 'Bike Buyer' AND ATTRIBUTE_VALUE = '1'
) AS t
FROM TM_DecisionTree.CONTENT
WHERE ISDESCENDANT('0000000010001')
AND NODE_TYPE = 4

Résultats de l'exemple :

NODE_NAME

NODE_CAPTION

t.SUPPORT

000000001000100

Yearly Income >= 26000 et < 42000

266

00000000100010100

Total Children = 3

75

0000000010001010100

Number Children At Home = 1

75

Retour en haut

Réaliser des prédictions à l'aide d'un modèle d'arbres de décision

Étant donné que les arbres de décision peuvent être utilisés pour différentes tâches, notamment la classification, la régression et même l'association, lorsque vous créez une requête de prédiction sur un modèle d'arbre de décision, vous disposez de nombreuses options. Pour comprendre les résultats de la prédiction, vous devez comprendre le but pour lequel le modèle a été créé. Les exemples de requêtes suivants illustrent trois scénarios différents :

  • retour d'une prédiction pour un modèle de classification, ainsi que de la probabilité d'exactitude de la prédiction, puis filtrage des résultats en fonction de la probabilité ;

  • création d'une requête singleton pour prédire des associations ;

  • extraction de la formule de régression pour une partie d'un arbre de décision où la relation entre l'entrée et la sortie est linéaire.

Exemple de requête 4 : retour de prédictions avec des probabilités

La requête d'exemple suivante utilise le modèle d'arbre de décision qui a été créé dans le Didacticiel sur l'exploration de données de base. La requête passe dans un nouveau jeu d'exemples de données, de la table dbo.ProspectiveBuyers dans AdventureWorks2008R2 DW, afin de prédire lequel des clients dans le nouveau jeu de données achètera un vélo.

La requête utilise la fonction de prédiction PredictHistogram (DMX), laquelle retourne une table imbriquée qui contient des informations utiles sur les probabilités découvertes par le modèle. La clause WHERE finale de la requête filtre les résultats afin de retourner uniquement les clients prédits comme acheteurs de vélos potentiels avec une probabilité supérieure à 0 %.

SELECT
  [TM_DecisionTree].[Bike Buyer],
  PredictHistogram([Bike Buyer]) as Results
From
  [TM_DecisionTree]
PREDICTION JOIN
  OPENQUERY([Adventure Works DW],
    'SELECT
      [FirstName],
      [LastName],
      [MaritalStatus],
      [Gender],
      [YearlyIncome],
      [TotalChildren],
      [NumberChildrenAtHome],
      [HouseOwnerFlag],
      [NumberCarsOwned]
    FROM
      [dbo].[ProspectiveBuyer]
    ') AS t
ON
  [TM_DecisionTree].[First Name] = t.[FirstName] AND
  [TM_DecisionTree].[Last Name] = t.[LastName] AND
  [TM_DecisionTree].[Marital Status] = t.[MaritalStatus] AND
  [TM_DecisionTree].[Gender] = t.[Gender] AND
  [TM_DecisionTree].[Yearly Income] = t.[YearlyIncome] AND
  [TM_DecisionTree].[Total Children] = t.[TotalChildren] AND
  [TM_DecisionTree].[Number Children At Home] = t.[NumberChildrenAtHome] AND
  [TM_DecisionTree].[House Owner Flag] = t.[HouseOwnerFlag] AND
  [TM_DecisionTree].[Number Cars Owned] = t.[NumberCarsOwned]
WHERE [Bike Buyer] = 1
AND PredictProbability([Bike Buyer]) >'.05'

Par défaut, Analysis Services retourne des tables imbriquées avec l'étiquette de colonne Expression. Vous pouvez modifier cette étiquette en utilisant un alias pour la colonne qui est retournée. En procédant ainsi, l'alias (dans le cas présent, Résultats) est utilisé à la fois comme l'en-tête de colonne et comme valeur dans la table imbriquée. Vous devez développer la table imbriquée pour afficher les résultats.

Résultats de l'exemple :

Bike Buyer

Résultats

1

Résultats

Bike Buyer$SUPPORT$PROBABILITY$ADJUSTEDPROBABILITY$VARIANCE$STDEV
125400.6348492420456440.01356216828156200
014600.3649841745793770.0066133693255091500
00.0001665833749791770.00016658337497917700

Si votre fournisseur ne prend pas en charge les ensembles de lignes hiérarchiques tels que ceux présentés ici, vous pouvez utiliser le mot clé FLATTENED dans la requête pour retourner, sous forme de table, les résultats qui contiennent des valeurs Null à la place des valeurs de colonne répétées. Pour plus d'informations, consultez Tables imbriquées (Analysis Services - Exploration de données) ou Présentation de l'instruction Select (DMX).

Retour en haut

Exemple de requête 5 : prédiction d'associations à partir d'un modèle d'arbres de décision

La requête d'exemple suivante est basée sur la structure d'exploration de données Association. Pour pouvoir suivre cet exemple, vous pouvez ajouter un nouveau modèle à cette structure d'exploration de données et sélectionner l'algorithme MDT (Microsoft Decision Trees). Pour plus d'informations sur la création de la structure d'exploration de données Association, consultez Leçon 3 : Génération d'un scénario de panier d'achat (Didacticiel sur l'exploration de données intermédiaire).

L'exemple de requête suivant est une requête singleton que vous pouvez facilement créer dans Business Intelligence Development Studio en choisissant des champs, puis en sélectionnant des valeurs pour ces champs dans une liste déroulante.

SELECT PredictAssociation([DT_Association].[v Assoc Seq Line Items],3)
FROM
  [DT_Association]
NATURAL PREDICTION JOIN
(SELECT (SELECT 'Patch kit' AS [Model]) AS [v Assoc Seq Line Items]) AS t

Résultats attendus :

Modèle

Mountain-200 (VTT-200)

Mountain Tire Tube (Chambre à air VTT)

Touring Tire Tube (Pneu pour vélo de tourisme)

Les résultats vous indiquent les trois meilleurs produits à recommander aux clients qui ont acheté le produit Patch Kit. Vous pouvez également fournir plusieurs produits comme entrée lorsque vous faites des recommandations, soit en entrant des valeurs, soit en ajoutant ou en supprimant des valeurs à l'aide de la boîte de dialogue Entrée de requête singleton. L'exemple de requête suivant montre comment les valeurs multiples sur lesquelles faire une prédiction sont fournies. Les valeurs sont connectées par une clause UNION dans l'instruction SELECT qui définit les valeurs d'entrée.

SELECT PredictAssociation([DT_Association].[v Assoc Seq Line Items],3)
From
  [DT_Association]
NATURAL PREDICTION JOIN
(SELECT (SELECT 'Racing Socks' AS [Model]
  UNION SELECT 'Women''s Mountain Shorts' AS [Model]) AS [v Assoc Seq Line Items]) AS t

Résultats attendus :

Modèle

Long-Sleeve Logo Jersey (Pull-over à manches longues)

Mountain-400-W

Classic Vest (Gilet classique)

Retour en haut

Exemple de requête 6 : récupération d'une formule de régression à partir d'un modèle d'arbres de décision

Lorsque vous créez un modèle d'arbre de décision qui contient une régression sur un attribut continu, vous pouvez utiliser la formule de régression pour effectuer des prédictions, ou extraire des informations relatives à la formule de régression. Pour plus d'informations sur les requêtes sur les modèles de régression, consultez Interrogation d'un modèle de régression linéaire (Analysis Services - Exploration de données).

Si le modèle d'arbres de décision contient un mélange de nœuds de régression et de nœuds qui se divisent sur les plages ou les attributs discrets, vous pouvez créer une requête qui retourne uniquement le nœud de régression. La table NODE_DISTRIBUTION contient les détails de la formule de régression. Dans cet exemple, les colonnes sont aplaties et la table NODE_DISTRIBUTION a un alias afin de faciliter sa lecture. Toutefois, dans ce modèle, aucun régresseur n'a été trouvé pour lier le revenu (Income) à d'autres attributs continus. Dans ce cas-là, Analysis Services retourne la valeur moyenne de l'attribut et la variance totale dans le modèle pour cet attribut.

SELECT FLATTENED NODE_DISTRIBUTION AS t
FROM DT_Predict. CONTENT
WHERE NODE_TYPE = 25

Résultats de l'exemple :

t.ATTRIBUTE_NAME

t.ATTRIBUTE_VALUE

t.SUPPORT

t.PROBABILITY

t.VARIANCE

t.VALUETYPE

Yearly Income

Missing

0

0.000457142857142857

0

1

Yearly Income

57220.8876687257

17484

0.999542857142857

1041275619.52776

3

  

57220.8876687257

0

0

1041216662.54387

11

Pour plus d'informations sur les types de valeurs et les statistiques utilisés dans les modèles de régression, consultez Contenu du modèle d'exploration de données pour les modèles de régression linéaire (Analysis Services - Exploration de données).

Retour en haut

Liste des fonctions de prédiction

Tous les algorithmes Microsoft prennent en charge un ensemble commun de fonctions. Toutefois, l'algorithme MDT (Microsoft Decision Trees) prend en charge les fonctions supplémentaires répertoriées dans le tableau ci-dessous.

Pour obtenir la liste des fonctions communes à tous les algorithmes Microsoft, consultez Mappage des fonctions sur les type de requêtes (DMX). Pour afficher la syntaxe de fonctions spécifiques, consultez Fonctions DMX (Data Mining Extensions).