Partager via


Requêtes de prédiction (exploration de données)

L’objectif d’un projet d’exploration de données classique consiste à utiliser le modèle d’exploration de données pour effectuer des prédictions. Par exemple, vous pouvez prédire la quantité de temps d’arrêt attendu pour un certain cluster de serveurs ou générer un score qui indique si des segments de clients sont susceptibles de répondre à une campagne publicitaire. Pour effectuer toutes ces opérations, vous devez créer une requête de prédiction.

Fonctionnellement, il existe différents types de requêtes de prédiction prises en charge dans SQL Server, en fonction du type d’entrées de la requête :

Type de requête Options de requête
Requêtes de prédiction Singleton Utilisez une requête singleton lorsque vous souhaitez prédire les résultats pour un nouveau cas unique ou plusieurs nouveaux cas. Vous fournissez les valeurs d’entrée directement dans la requête et la requête est exécutée en tant que session unique.
Prédictions par lots Utilisez des prédictions par lots lorsque vous avez des données externes que vous souhaitez alimenter dans le modèle, à utiliser comme base pour les prédictions. Pour effectuer des prédictions pour un ensemble entier de données, vous mappez les données de la source externe aux colonnes du modèle, puis spécifiez le type de données prédictives que vous souhaitez générer.

La requête pour l’ensemble du jeu de données est exécutée dans une seule session, ce qui rend cette option beaucoup plus efficace que l’envoi de plusieurs requêtes répétées.
Prévisions de séries chronologiques Utilisez une requête de série chronologique lorsque vous souhaitez prédire une valeur sur un certain nombre d’étapes ultérieures. L’exploration de données SQL Server fournit également les fonctionnalités suivantes dans les requêtes de série chronologique :

Vous pouvez étendre un modèle existant en ajoutant de nouvelles données dans le cadre de la requête et en effectuant des prédictions basées sur la série composite.

Vous pouvez appliquer un modèle existant à une nouvelle série de données à l’aide de l’option REPLACE_MODEL_CASES.

Vous pouvez effectuer une prédiction croisée.

Les sections suivantes décrivent la syntaxe générale des requêtes de prédiction, les différents types de requêtes de prédiction et comment utiliser les résultats des requêtes de prédiction.

Conception de requête de prédiction de base

Utilisation des résultats des requêtes

Conception de requête de prédiction de base

Lorsque vous créez une prédiction, vous fournissez généralement un élément de nouvelles données et demandez au modèle de générer une prédiction basée sur les nouvelles données.

  • Dans une requête de prédiction par lots, vous mappez le modèle à une source de données externe à l’aide d’une jointure de prédiction.

  • Dans une requête de prédiction singleton, vous tapez une ou plusieurs valeurs à utiliser comme entrées. Vous pouvez créer plusieurs prédictions à l’aide d’une requête de prédiction singleton. Toutefois, si vous avez besoin de créer de nombreuses prédictions, les performances sont meilleures lorsque vous utilisez une requête par lots.

Les requêtes de prédiction singleton et batch utilisent la syntaxe PREDICTION JOIN pour définir les nouvelles données. La différence réside dans la façon dont le côté d’entrée de la jointure de prédiction est spécifié.

  • Dans une requête de prédiction par lots, les données proviennent d’une source de données externe spécifiée à l’aide de la syntaxe OPENQUERY.

  • Dans une requête de prédiction singleton, les données sont fournies inline dans le cadre de la requête.

Pour les modèles de série chronologique, les données d’entrée ne sont pas toujours requises ; il est possible d’effectuer des prédictions en utilisant uniquement les données déjà dans le modèle. Toutefois, si vous spécifiez de nouvelles données d’entrée, vous devez décider si vous utiliserez les nouvelles données pour mettre à jour et étendre le modèle, ou pour remplacer la série d’origine de données utilisée dans le modèle. Pour plus d’informations sur ces options, consultez Exemples de requêtes de modèle de série chronologique.

Ajout de fonctions de prédiction

En plus de prédire une valeur, vous pouvez personnaliser une requête de prédiction pour retourner différents types d’informations liés à la prédiction. Par exemple, si la prédiction crée une liste de produits à recommander à un client, vous pouvez également retourner la probabilité de chaque prédiction afin de pouvoir les classer et présenter uniquement les recommandations principales à l’utilisateur.

Pour ce faire, vous ajoutez des fonctions de prédiction à la requête. Chaque modèle ou type 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 clusters créés par le modèle, tandis que les modèles de série chronologique ont des fonctions qui calculent les différences au fil du temps. Il existe également des fonctions de prédiction générales qui fonctionnent avec presque tous les types de modèles. Pour obtenir la liste des fonctions de prédiction prises en charge dans différents types de requêtes, consultez cette rubrique la référence DMX : Fonctions de prédiction générales (DMX).

Création de requêtes de prédiction Singleton

Une requête de prédiction singleton est utile lorsque vous souhaitez créer des prédictions rapides en temps réel. Un scénario courant peut être que vous avez obtenu des informations d’un client, peut-être à l’aide d’un formulaire sur un site Web et que vous souhaitez soumettre ces données comme entrée à une requête de prédiction singleton. Par exemple, lorsqu’un client choisit un produit dans une liste, vous pouvez utiliser cette sélection comme entrée dans une requête qui prédit les meilleurs produits à recommander.

Les requêtes de prédiction Singleton ne nécessitent pas de table distincte qui contient une entrée. Au lieu de cela, vous fournissez une ou plusieurs lignes de valeurs comme entrée dans le modèle, et les prédictions ou prédictions sont retournées en temps réel.

Avertissement

Malgré le nom, les requêtes de prédiction singleton n’effectuent pas seulement des prédictions uniques. Vous pouvez générer plusieurs prédictions pour chaque ensemble d’entrées. Vous fournissez plusieurs cas d’entrée en créant une instruction SELECT pour chaque cas d’entrée et en les combinant avec l’opérateur UNION.

Lorsque vous créez une requête de prédiction singleton, vous devez fournir les nouvelles données au modèle sous la forme d’une JOINTURE DE PRÉDICTION. Cela signifie que même si vous ne mappez pas à 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 mappe les colonnes pour vous. C’est ce qu’on appelle une JOINTURE DE PRÉDICTION NATURELLE. Toutefois, si les colonnes ne correspondent pas, ou si les nouvelles données ne contiennent pas le même type et la même quantité de données qui se trouve dans le modèle, vous devez spécifier les colonnes du mappage de modèle aux nouvelles données, ou spécifier les valeurs manquantes.

Requêtes de prédiction par lots

Une requête de prédiction par lots est utile lorsque vous avez des données externes que vous souhaitez utiliser pour effectuer des prédictions. Par exemple, vous avez peut-être créé un modèle qui catégorise les clients par leur activité en ligne et leur historique d’achat. Vous pouvez appliquer ce modèle à une liste de prospects nouvellement acquis, créer des projections pour les ventes ou identifier des cibles pour les campagnes proposées.

Lorsque vous effectuez une jointure de prédiction, vous devez mapper les colonnes du modèle aux colonnes de la nouvelle source de données. Par conséquent, la source de données que vous choisissez pour une entrée doit être similaire aux données du modèle. Les nouvelles informations ne doivent pas correspondre exactement et peuvent être incomplètes. Par exemple, supposons que le modèle a été formé à l’aide d’informations sur le revenu et l’âge, mais que la liste des clients que vous utilisez pour les prédictions a l’âge, mais rien sur le revenu. Dans ce scénario, vous pouvez toujours mapper les nouvelles données au modèle et créer une prédiction pour chaque client. Toutefois, si le revenu était un prédicteur important pour le modèle, le manque d’informations complètes affecterait la qualité des prédictions.

Pour obtenir les 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 retourne la prédiction marginale, qui équivaut à l’instruction SELECT <predictable-column> FROM <model> sans clause PREDICTION JOIN.

Une fois que vous avez correctement mappé toutes les colonnes pertinentes, vous exécutez la requête et Analysis Services effectue des prédictions pour chaque ligne dans les nouvelles données en fonction des modèles du modèle. Vous pouvez enregistrer les résultats dans une nouvelle table dans la vue de source de données qui contient les données externes, ou vous pouvez copier et coller les données que vous utilisez SQL Server Data Tools (SSDT) ou SQL Server Management Studio.

Avertissement

Si vous utilisez le concepteur dans SQL Server Data Tools (SSDT), la source de données externe doit d’abord être 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 à l’aide des 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 <la requête> de données sources.

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

Les modèles de série chronologique sont différents des autres types de modèles ; vous pouvez utiliser le modèle tel qu’il est pour créer des prédictions, ou vous pouvez fournir de nouvelles données au modèle pour mettre à jour le modèle et créer des 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.

  • L’extension des cas de modèle signifie que vous ajoutez les nouvelles données à la série existante de données dans le modèle de série chronologique. Désormais, les prédictions sont basées sur la nouvelle série combinée. Cette option est bonne lorsque vous souhaitez simplement ajouter quelques points de données à un modèle existant.

    Par exemple, supposons que vous disposez d’un modèle de série chronologique existant qui a été formé sur les données de ventes de l’année précédente. Une fois que vous avez collecté plusieurs mois de nouvelles données de ventes, vous décidez de mettre à jour vos prévisions de ventes pour l’année en cours. Vous pouvez créer une jointure de prédiction qui met à jour le modèle en ajoutant de nouvelles données et étend le modèle pour effectuer de nouvelles prédictions.

  • Le remplacement des cas de modèle signifie que vous conservez le modèle entraîné, mais remplacez les cas sous-jacents par un nouvel ensemble de données de cas. Cette option est utile lorsque vous souhaitez conserver la tendance dans le modèle, mais l’appliquer à un autre ensemble de données.

    Par exemple, votre modèle d’origine a peut-être été formé sur un ensemble de données avec des volumes de ventes très élevés ; lorsque vous remplacez les données sous-jacentes par une nouvelle série (peut-être à partir d’un magasin avec un volume de ventes inférieur), vous conservez la tendance, mais les prédictions commencent par les valeurs de la série de remplacement.

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

Pour plus d’informations sur la création de jointures de prédiction sur des modèles de série chronologique, consultez Exemples de requêtes de modèle de série chronologique ou PredictTimeSeries (DMX).

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

Vos options d’enregistrement des résultats d’une requête de prédiction d’exploration de données diffèrent selon la façon dont vous créez la requête.

  • Lorsque vous générez une requête à l’aide du Générateur de requêtes de prédiction dans SQL Server Management Studio ou SQL Server Data Tools (SSDT), vous pouvez enregistrer les résultats d’une requête de prédiction dans une source de données Analysis Services existante. Pour plus d’informations, consultez Afficher et enregistrer les résultats d’une requête de prédiction.

  • Lorsque vous créez des requêtes de prédiction à l’aide de DMX dans le volet Requête de SQL Server Management Studio, vous pouvez utiliser les options de sortie de requête pour enregistrer les résultats dans un fichier, ou dans le volet Résultats de la requête sous forme de texte ou dans une grille. Pour plus d’informations, consultez Éditeurs de requête et de texte (SQL Server Management Studio).

  • Lorsque vous exécutez une requête de prédiction à l’aide des composants Integration Services, les tâches permettent d’écrire les résultats dans une base de données à l’aide d’un gestionnaire de connexions ADO.NET disponible ou d’un gestionnaire de connexions OLEDB. Pour plus d’informations, consultez Tâche de requête d’exploration de données.

Il est important de comprendre que les résultats d’une requête de prédiction ne sont pas similaires aux résultats d’une requête sur une base de données relationnelle, qui retourne toujours une seule ligne de valeurs associées. Chaque fonction de prédiction DMX que vous ajoutez à une requête retourne son propre ensemble de lignes. Par conséquent, lorsque vous effectuez 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.

Si vous combinez plusieurs fonctions dans une requête, les résultats de retour sont combinés en tant qu’ensemble de lignes hiérarchiques. Par exemple, supposons que vous utilisez un modèle de série chronologique pour prédire les valeurs futures pour le montant des ventes et la quantité de ventes, à l’aide d’une requête telle que cette instruction DMX :

SELECT  
  PredictTimeSeries([Forecasting].[Amount]) as [PredictedAmount]  
, PredictTimeSeries([Forecasting].[Quantity]) as [PredictedQty]  
FROM  
  [Forecasting]  
  

Les résultats de cette requête sont deux colonnes, une pour chaque série prédite, où chaque ligne contient une table imbriquée avec les valeurs prédites :

PredictedAmount

$TIME Montant
201101 172067.11
$TIME Montant
201102 363390.68

PredictedQty

$TIME Quantité
201101 77
$TIME Quantité
201102 260

Si votre fournisseur ne peut pas gérer les ensembles de lignes hiérarchiques, vous pouvez aplatir les résultats à l’aide du mot clé FLATTEN dans la requête de prédiction. Pour plus d'informations, notamment des exemples d'ensembles de lignes aplatis, consultez SELECT (DMX).

Voir aussi

Requêtes de contenu (exploration de données)
Requêtes de définition de données (exploration de données)