Interrogation de modèles d'exploration de données (Analysis Services - Exploration de données)

Après avoir effectué l'apprentissage d'un modèle d'exploration de données, vous pouvez explorer le modèle à l'aide des visionneuses personnalisées qui sont fournies dans SQL Server Management Studio ou Business Intelligence Development Studio. Toutefois, si vous souhaitez faire des prédictions ou obtenir des informations avancées ou plus spécifiques du modèle, vous devez créer une requête sur le modèle d'exploration de données. Les requêtes vous aident à mieux comprendre et à mieux utiliser les informations dans le modèle, notamment dans le cadre des tâches suivantes :

  • Faire des prédictions uniques et par lot

  • En savoir plus sur les séquences identifiées par le modèle

  • Afficher des détails ou les cas d'apprentissage pour une séquence particulière ou un sous-ensemble du modèle

  • Extraire les détails des cas dans le modèle d'exploration de données

  • Extraire des formules, des règles ou des statistiques sur la totalité ou un sous-ensemble du modèle et des données

SQL Server Analysis Services fournit une interface de conception graphique pour créer des requêtes, ainsi qu'un langage de requête appelé extensions DMX (Data Mining Extensions) qui est utile pour créer des prédictions personnalisées et des requêtes complexes. Pour générer des requêtes de prédiction DMX, vous pouvez utiliser en premier lieu les générateurs de requêtes qui sont disponibles dans SQL Server Management Studio et Business Intelligence Development Studio. Un jeu de modèles de requête DMX est également fourni dans SQL Server Management Studio.

Pour plus d'informations sur l'utilisation du générateur de requêtes, consultez Utilisation du Générateur de requêtes de prédictions pour créer des requêtes de prédictions DMX.

Pour plus d'informations sur l'utilisation des modèles de requête DMX, consultez Création de requêtes DMX dans SQL Server Management Studio ou Procédure : utiliser des modèles dans SQL Server Management Studio.

Cette section décrit les types de requête que vous pouvez créer et les informations fournies par chaque type de requête. Cette section inclue également des exemples de requêtes pour des types spécifiques de modèles d'exploration de données.

  • Requêtes de prédiction

    • Requêtes de prédiction singleton

    • Requêtes de prédiction par lot

    • Prédictions de série chronologique

  • Requêtes de contenu

  • Requêtes de définition de données

Requêtes de prédiction

De nombreux projets d'exploration de données ont pour objectif principal d'utiliser les modèles d'exploration de données pour faire des prédictions. Par exemple, vous pouvez prédire le volume de produits que votre société vendra l'année prochaine au cours du mois de décembre ou si un client potentiel achètera un produit suite à une campagne de publicité.

Lorsque vous créez une prédiction, vous fournissez en général des nouvelles données et vous demandez au modèle de générer une prédiction basée sur ces nouvelles données. Vous pouvez faire des prédictions dans un lot en mappant le modèle à une source externe de données dans une jointure de prédiction. Vous pouvez aussi fournir des valeurs une par une en créant une requête singleton.

Les requêtes de prédiction singleton et par lot utilisent toutes les deux la syntaxe PREDICTION JOIN pour définir les nouvelles données : la différence réside dans la façon de spécifier l'entrée de la jointure de prédiction. Dans une requête singleton, les données sont incluses dans le cadre de la requête. Dans une requête par lot, les données proviennent d'une source de données externe spécifiée en utilisant la syntaxe OPENQUERY. Pour plus d'informations, consultez OPENQUERY (DMX).

Par ailleurs, les modèles de série chronologique vous permettent de faire des prédictions basées uniquement sur le modèle. Ainsi, vous pouvez simplement demander des prédictions basées sur la série existante sans qu'il vous soit nécessaire de fournir de nouvelles données.

La section suivante fournit des informations sur la création de chacun de ces types de requête :

Type de requête

Options de requête

Requête de prédiction singleton

Faire une prédiction sur un nouveau cas unique, ou plusieurs cas nouveaux, que vous tapez dans la requête.

Prédictions par lot

Mapper de nouveaux cas dans une source de données externe au modèle et faire des prédictions.

Prédictions de série chronologique

Prédire un nombre spécifié d'étapes futures en fonction d'un modèle existant.

Étendre un modèle existant en ajoutant de nouvelles données et faire des prédictions basées sur la série composite.

Appliquer le modèle existant à une nouvelle série de données en utilisant l'option REPLACE_MODEL_CASES.

Outre la prédiction d'une valeur spécifique, telle que le montant des ventes le mois prochain, ou d'un produit à recommander à un client, vous pouvez personnaliser une requête de prédiction en vue de retourner plusieurs types d'informations en rapport avec la prédiction. Par exemple, il peut être utile de connaître la probabilité d'exactitude de la prédiction afin que vous puissiez décider s'il faut ou non présenter la recommandation à l'utilisateur.

Pour personnaliser les informations retournées par une requête de prédiction, vous ajoutez des fonctions de prédiction à la requête. Chaque type de modèle ou de requête prend en charge des fonctions spécifiques. Par exemple, les modèles de clustering prennent en charge des fonctions de prédiction spéciales qui fournissent des détails supplémentaires sur les regroupements créés par le modèle. Les modèles de série chronologique prennent en charge des fonctions de prédiction qui calculent les différences au fil du temps. Il existe aussi des fonctions de prédiction générales qui fonctionnent avec la plupart des types de modèles. Pour obtenir la liste des fonctions de prédiction prise en charge dans les différents types de requête, consultez Mappage des fonctions sur les type de requêtes (DMX). Pour obtenir la liste complète des fonctions de prévision, consultez Fonctions DMX (Data Mining Extensions).

Retour en haut

Requêtes singleton

Une requête singleton est utile lorsque vous souhaitez créer des prédictions simples en temps réel. Par exemple, vous pouvez obtenir des informations d'un client par le biais d'un site Web, puis utiliser ces données pour retourner des prédictions présentées sous la forme de recommandations spécifiques à ce client. Ou bien, vous pouvez analyser le contenu d'un message électronique puis utiliser un modèle de classification existant pour attribuer une catégorie au message électronique et router le message en conséquence.

Les requêtes singleton ne requièrent pas une table séparée qui contient l'entrée. Au lieu de cela, vous passez une ligne unique de données dans le modèle et une prédiction unique est retournée en temps réel. Vous pouvez également étendre la requête singleton pour élaborer plusieurs prédictions en tapant une instruction SELECT qui contient un cas unique, en ajoutant l'opérateur UNION, puis en tapant une autre instruction SELECT pour spécifier un autre cas.

Les méthodes suivantes vous permettent de créer des requêtes singleton sur un modèle existant :

  • Utilisation du Concepteur d'exploration de données

  • Utilisation d'un modèle de requête singleton

  • Création d'une instruction DMX par programmation ou dans un autre client Analysis Services

Lorsque vous créez une requête singleton, vous devez fournir les nouvelles données au modèle sous la forme d'une jointure PREDICTION JOIN. Cela signifie que bien que vous n'effectuiez pas le mappage à une table réelle, vous devez vous assurer que les nouvelles données correspondent aux colonnes existantes dans le modèle d'exploration de données. Si les nouvelles colonnes de données et les nouvelles données correspondent exactement, Analysis Services mappera les colonnes pour vous. On parle alors d'une jointure NATURAL PREDICTION JOIN. Toutefois, si les colonnes ne concordent pas, ou si les nouvelles données ne contiennent pas les mêmes type et quantité de données que le modèle, vous devez spécifier les colonnes du modèle qui sont mappées aux nouvelles données ou spécifier les valeurs manquantes.

Pour plus d'informations sur la création d'une requête singleton dans le Concepteur d'exploration de données, consultez Procédure : créer une requête singleton dans le Concepteur d'exploration de données et Utilisation du Générateur de requêtes de prédictions pour créer des requêtes de prédictions DMX.

Pour plus d'informations sur l'utilisation de DMX pour créer une requête singleton, consultez Requêtes de prévision (DMX).

Pour obtenir un exemple d'utilisation des modèles de requête DMX dans SQL Server Management Studio, consultez Procédure : créer une requête singleton de prédiction à partir d'un modèle.

Retour en haut

Requêtes de prédiction par lot

Lorsque vous effectuez une jointure de prédiction, vous mappez le modèle à une nouvelle source de données, et Analysis Services fait ensuite des prédictions pour chaque ligne dans les nouvelles données en fonction des séquences dans le modèle. Une jointure de prédiction est utile lorsque vous avez beaucoup d'informations dans une table ou une autre source de données externe et que vous souhaitez faire des prédictions en utilisant le modèle ayant fait l'objet d'un apprentissage.

Les méthodes suivantes vous permettent de créer des requêtes de prédiction par lot sur un modèle existant :

  • Utilisation du Concepteur d'exploration de données

  • Utilisation d'un modèle

  • Création d'une instruction DMX par programmation ou dans un autre client Analysis Services

  • Si vous créez une requête de prédiction par lot à l'aide du Concepteur d'exploration de données, la source de données externe doit être d'abord définie comme vue de source de données.

Si vous utilisez DMX pour créer une jointure de prédiction, vous pouvez spécifier la source de données externe en utilisant les commandes OPENQUERY, OPENROWSET ou SHAPE. La méthode d'accès aux données par défaut dans les modèles DMX est OPENQUERY. Pour plus d'informations sur ces méthodes, consultez <source data query>.

Quelle que soit la façon dont vous définissez les données externes, la source de données que vous spécifiez doit contenir des colonnes avec des données qui sont semblables aux données dans le modèle. Toutefois, les nouvelles informations peuvent être incomplètes. Par exemple, votre liste de clients peut contenir une colonne Age mais aucune information à propos du revenu. Même si les données de revenu ont été utilisées lors de l'apprentissage du modèle, vous pouvez encore mapper les nouvelles données au modèle et créer une prédiction ; toutefois, le manque d'informations complètes peut affecter la qualité de prédictions dans certains cas.

Pour obtenir de meilleurs résultats, vous devez joindre autant de colonnes correspondantes que possible entre les nouvelles données et le modèle. Toutefois, la requête réussira même s'il n'y a pas de correspondances. Si aucune colonne n'est jointe, la requête retournera la prédiction marginale, qui est équivalente à l'instruction SELECT SELECT <predictable-column> FROM <model> sans clause PREDICTION JOIN.

Utilisation des résultats d'une requête de prédiction

Une requête de prédiction est différente d'une requête sur une base de données relationnelle. Chaque fonction de prédiction que vous ajoutez à une requête retourne son propre ensemble de lignes. Par conséquent, lorsque vous faites une prédiction sur un cas unique, le résultat peut être une valeur prédite avec plusieurs colonnes de tables imbriquées contenant des détails supplémentaires.

Chaque fois que vous combinez plusieurs fonctions dans une requête, les résultats sont regroupés dans un ensemble de lignes hiérarchique. Toutefois, si votre fournisseur ne peut pas gérer d'ensembles de lignes hiérarchiques, vous pouvez aplatir les résultats en utilisant le mot clé FLATTEN dans la requête de prédiction.

Pour plus d'informations et des exemples d'ensembles de lignes aplatis, consultez SELECT (DMX).

Prédictions dans les modèles d'exploration de données de série chronologique

Les modèles de série chronologique offrent plus de souplesse dans la façon dont vous pouvez utiliser de nouvelles données et créer des prédictions. Vous pouvez soit utiliser le modèle tel quel pour créer des prédictions, soit fournir de nouvelles données au modèle pour mettre à jour les prédictions en fonction des tendances récentes. Si vous ajoutez de nouvelles données, vous pouvez spécifier la façon dont les nouvelles données doivent être utilisées, soit pour étendre les cas de modèle, soit pour remplacer les cas de modèle.

Lorsque vous étendez les cas de modèle, vous ajoutez les nouvelles données de faits au modèle de série chronologique et les prédictions suivantes sont basées sur la nouvelle série combinée. Lorsque vous remplacez les cas de modèle, vous conservez le modèle ayant fait l'objet d'un apprentissage, mais vous remplacez les cas sous-jacents par un nouveau jeu de données de cas.

Quelle que soit l'approche que vous utilisez, le point de départ pour les prédictions est toujours la fin de la série d'origine.

Par exemple, supposons que vous ayez un modèle de série chronologique existant dont l'apprentissage a été effectué sur les chiffres des ventes de l'année précédente. Après avoir collecté plusieurs mois de nouveaux chiffres de ventes, vous décidez de mettre à jour vos prévisions de ventes pour l'année actuelle. Vous pouvez créer une jointure de prédiction qui met à jour le modèle en ajoutant de nouvelles données et qui étend le modèle pour faire de nouvelles prédictions.

Vous pouvez également créer votre modèle en fonction de données existantes, puis créer une jointure de prédiction qui remplace les données de cas par les nouvelles données. Cette option est utile si, par exemple, il manque beaucoup de données dans un magasin et que vous voulez utiliser un modèle qui repose sur les données d'autres magasins pour faire des prédictions. Pour plus d'informations sur la création de jointures de prédiction sur des modèles de série chronologique, consultez Interrogation de modèles de série chronologique ou PredictTimeSeries (DMX).

Retour en haut

Requêtes de contenu

Une requête de contenu est une façon d'extraire des informations sur les statistiques internes et la structure du modèle d'exploration de données. Parfois, une requête de contenu peut fournir des détails qui ne sont pas aisément disponibles dans la visionneuse. Vous pouvez également utiliser les résultats d'une requête de contenu pour extraire des informations par programme pour d'autres utilisations. Par exemple, vous pouvez extraire des formules ou des probabilités pour effectuer vos propres calculs ou récupérer des informations utilisables sur les cas dans un modèle.

Cette section fournit des informations générales sur les types d'informations que vous pouvez récupérer à l'aide d'une requête de contenu. Les requêtes de contenu utilisent la syntaxe DMX présentée dans le tableau suivant :

Type de requête

Options de requête

SELECT FROM <modèle>.CASES

Rechercher les cas utilisés pour l'apprentissage ou le test d'un modèle. Extraire des données, y compris les colonnes dans la structure d'exploration de données sous-jacente.

SELECT FROM <structure>.CASES

Afficher toutes les données incluses dans la structure, y compris les colonnes qui ne sont pas incluses dans un modèle d'exploration de données particulier.

SELECT FROM <modèle>.CONTENT

Récupérer des informations détaillées sur des nœuds spécifiques dans le modèle, y compris les règles et les formules, les statistiques de prise en charge et de variance, etc.

SELECT FROM <modèle>.DIMENSIONCONTENT

Prend en charge les requêtes d'une dimension d'exploration de données.

Ce type de requête est principalement destiné à une utilisation interne. Si vous développez votre propre algorithme de plug-in, vous pouvez utiliser cette syntaxe pour tester vos modèles.

Tous les algorithmes ne prennent pas en charge cette fonctionnalité. La prise en charge est indiquée par un indicateur dans l'ensemble de lignes de schéma MINING_SERVICES.

Certains éléments de contenu de modèle sont communs à tous les algorithmes. Toutefois, le contenu de chaque modèle dépend en général de l'algorithme que vous avez utilisé pour créer le modèle. Par conséquent, lorsque vous créez une requête de contenu, vous devez identifier les types d'informations dans le modèle qui sont les plus utiles.

Par exemple, si vous créez une requête qui utilise la syntaxe SELECT FROM <model>.CONTENT, la requête retourne des informations très différentes selon que le modèle est un modèle Sequence Clustering, un modèle d'arbres de décision ou un modèle de série chronologique. Pour un modèle d'association, vous pouvez récupérer les descriptions de règles spécifiques pour utiliser les règles dans une application personnalisée, alors que dans un modèle de série chronologique ou Sequence Clustering, vous pouvez rechercher plus d'informations sur les modèles d'heure détectés par le modèle.

Certains exemples sont fournis dans les sections suivantes pour illustrer l'ampleur et la profondeur des informations que vous pouvez obtenir d'une requête de contenu ; toutefois, pour obtenir des informations sur le contenu propre à chaque type de modèle d'exploration de données, consultez Contenu du modèle d'exploration de données (Analysis Services - Exploration de données).

Exemple 1 : requête de contenu sur un modèle d'association

Vous pouvez utiliser une instruction SELECT FROM <modèle>.CONTENT pour retourner différents types de contenu selon le type de modèle que vous interrogez. Pour un modèle d'association, les nœuds qui représentent des règles ont une valeur NODE_TYPE de 8, tandis que les jeux d'éléments ont une valeur NODE_TYPE de 7. Ainsi, la requête suivante retourne les 10 premiers jeux d'éléments, classés par prise en charge (classement par défaut).

SELECT TOP 10 NODE_DESCRIPTION, NODE_PROBABILITY, SUPPORT
FROM <model>.CONTENT WHERE NODE_TYPE = 7

L'exemple suivant retourne trois colonnes : l'ID du nœud, la règle complète et le produit dans la partie droite du jeu d'éléments, c'est-à-dire le produit prédit comme étant associé à d'autres produits dans le cadre d'un jeu d'éléments.

Le mot clé FLATTENED indique que l'ensemble de lignes imbriqué doit être converti en table plate. L'attribut qui représente le produit dans la partie droite de la règle est contenu dans la table NODE_DISTRIBUTION ; par conséquent, nous récupérons uniquement la ligne qui contient un nom d'attribut en spécifiant que la longueur doit être supérieure à 2. Une fonction de chaîne simple est utilisée pour supprimer le nom du modèle de la troisième colonne. En général, le nom du modèle est toujours préfixé des valeurs des colonnes imbriquées. La clause WHERE spécifie que la valeur de NODE_TYPE doit être 8 pour récupérer uniquement des règles.

SELECT FLATTENED NODE_UNIQUE_NAME , NODE_DESCRIPTION,
     (SELECT RIGHT(ATTRIBUTE_NAME, (LEN(ATTRIBUTE_NAME)-LEN('Association model name'))) 
FROM NODE_DISTRIBUTION
WHERE LEN(ATTRIBUTE_NAME)>2
) 
AS RightSideProduct
FROM [<Association model name>].CONTENT
WHERE NODE_TYPE = 8 
ORDER BY NODE_SUPPORT DESC

Pour obtenir d'autres exemples, consultez Interrogation d'un modèle d'association (Analysis Services - Exploration de données).

Exemple 2 : requête de contenu sur un modèle d'arbre de décision

L'interrogation du contenu modèle s'avère particulièrement utile lorsque vous souhaitez par exemple donner suite à une requête de prédiction en retournant la règle qui explique pourquoi cet état a été prédit. Par exemple, vous pouvez ajouter la fonction de prédiction PredictNodeId (DMX) à une requête pour obtenir l'ID du nœud qui contient la règle en utilisant la syntaxe suivante :

SELECT  Predict([Bike Buyer]), PredictNodeID([Bike Buyer]) 
FROM [<decision tree model name>]
PREDICTION JOIN 
<input rowset> 

Pour un modèle d'arbres de décision, la légende contient la description du chemin d'accès au résultat. Par conséquent, une fois que vous avez l'ID du nœud qui contient le résultat, vous pouvez récupérer la règle ou le chemin d'accès qui explique la prédiction en créant une requête de contenu, par exemple :

SELECT NODE_CAPTION
FROM [<decision tree model name>] 
WHERE NODE_UNIQUE_NAME= '<node id>'

Pour obtenir plus d'exemples, consultez Interrogation d'un modèle d'arbre de décision (Analysis Services - Exploration de données).

Retour en haut

Requêtes de définition de données

Analysis Services fournit diverses instructions de définition de données pour créer et gérer la structure et les modèles d'exploration de données. Pour plus d'informations, consultez Gestion des structures et modèles d'exploration de données.