Partitionnement des données en jeux d'apprentissage et jeux de test (Analysis Services – Exploration de données)

La séparation des données en jeux d'apprentissage et jeux de test correspond à une partie importante de l'évaluation des modèles d'exploration de données. En général, lorsque vous partitionnez un jeu de données en un jeu d'apprentissage et un jeu de test, la plupart des données sont utilisées pour l'apprentissage et une plus petite partie des données est utilisée pour les tests. Analysis Services échantillonne de manière aléatoire les données afin d'aider à s'assurer que les partitions de test et d'apprentissage sont semblables. L'utilisation de données similaires pour l'apprentissage et les tests vous permet de minimiser les effets des différences de données et de mieux comprendre les caractéristiques du modèle.

Après le traitement d'un modèle à l'aide du jeu d'apprentissage, vous testez le modèle en effectuant des prédictions sur le jeu de test. Comme les données dans le jeu de test contiennent déjà des valeurs connues pour l'attribut que vous souhaitez prédire, il est facile de déterminer si les prédictions du modèle sont correctes.

En général, la précision prédictive d'un modèle d'exploration de données est mesurée par la finesse ou la précision de classification. Pour plus d'informations sur les graphiques de courbes d'élévation et autres graphiques de précision, consultez Outils de création de diagramme de précision de modèle (Analysis Services - Exploration de données).

Création de partitions pour les structures d'exploration de données

Dans SQL Server 2008, vous partitionnez les données au niveau de la structure d'exploration de données. Les informations sur la taille de partition et sur les données dans chaque partition sont stockées avec la structure et tous les modèles basés sur cette structure peuvent utiliser les partitions pour l'apprentissage et les tests.

Vous pouvez définir une partition sur une structure d'exploration de données de plusieurs façons :

  • en utilisant l'Assistant Exploration de données pour partitionner une structure d'exploration de données lorsque vous créez la structure d'exploration de données ;

  • en modifiant les propriétés de la structure sous l'onglet Structure d'exploration de données du Concepteur de modèle d'exploration de données ;

  • en créant et modifiant par programme les structures à l'aide des objets AMO (Analysis Management Objects) ou du langage de définition de données (DDL) XML.

Utilisation de l'Assistant Exploration de données pour partitionner une structure d'exploration de données

Par défaut, après avoir défini les sources de données pour une structure d'exploration de données, l'Assistant Exploration de données divise les données en partitions de 70 % pour l'apprentissage et de 30 % pour les tests. Ce rapport est souvent utilisé dans l'exploration de données, mais avec Analysis Services vous pouvez modifier ce rapport en fonction de vos besoins.

Vous pouvez également configurer l'Assistant pour définir un nombre maximal de cas d'apprentissage ou vous pouvez associer les limites pour permettre un pourcentage maximal de cas jusqu'à un nombre maximal spécifié de cas. Lorsque vous spécifiez à la fois un pourcentage maximal de cas et un nombre maximal de cas, Analysis Services utilise la plus petite des deux limites comme taille du jeu de test. Par exemple, si vous spécifiez une exclusion de 30 % pour les scénarios de test et un nombre maximal de scénarios de test égal à 1000, la taille du jeu de test ne dépassera jamais 1 000 scénarios. Cela peut être utile si vous souhaitez garantir que la taille de votre jeu de test reste cohérente même si des données d'apprentissage supplémentaires sont ajoutées au modèle.

Si vous utilisez la même vue de source de données pour des structures d'exploration de données différentes et que vous souhaitez garantir que les données soient partitionnées approximativement de la même manière pour toutes les structures d'exploration de données et leurs modèles, vous devez spécifier la valeur de départ qui est utilisée pour initialiser l'échantillonnage aléatoire. Lorsque vous spécifiez une valeur pour HoldoutSeed, Analysis Services utilise cette valeur pour commencer l'échantillonnage. Dans le cas contraire, l'échantillonnage utilise un algorithme de hachage sur le nom de la structure d'exploration de données pour créer la valeur de départ.

Notes

Si vous créez une copie de la structure d'exploration de données à l'aide des instructions EXPORT et IMPORT, la nouvelle structure d'exploration de données aura la même définition de partition, parce que le processus d'exportation crée un nouvel ID mais utilise le même nom. Toutefois, si deux structures d'exploration de données utilisent la même source de données sous-jacente tout en ayant des noms différents, les partitions créées pour chaque structure d'exploration de données seront différentes.

Modification des propriétés de la structure

Si vous créez et traitez une structure d'exploration de données, puis décidez ultérieurement d'ajouter une partition de test, vous pouvez modifier les propriétés de la structure d'exploration de données. Pour changer la façon dont les données sont partitionnées, modifiez les propriétés suivantes :

Propriété

Description

HoldoutMaxCases

Spécifie le nombre maximal de scénarios à inclure dans le jeu de test.

HoldoutMaxPercent

Spécifie le nombre de cas à inclure dans le jeu de test en tant que pourcentage du jeu de données complet. Pour n'avoir aucun jeu de données, il convient de spécifier 0.

HoldoutSeed

Spécifie une valeur entière à utiliser comme valeur de départ lors de la sélection aléatoire de données pour les partitions. Cette valeur n'affecte pas le nombre de cas dans le jeu d'apprentissage ; à la place, elle garantit que la partition peut être répétée.

Si vous ajoutez une partition à une structure existante ou modifiez une partition, vous devez retraiter la structure et tous les modèles associés. En outre, comme l'ajout d'une partition provoque l'apprentissage du modèle sur un autre sous-ensemble des données, vous pouvez constater des résultats différents de votre modèle.

Spécification de HOLDOUT par programme

Vous pouvez créer une structure d'exploration de données partitionnée en utilisant des instructions DMX, des objets AMO ou le langage DDL XML.

  • DMX   Dans le langage DMX (Data Mining Extensions), l'instruction CREATE MINING STRUCTURE a été étendue pour inclure une clause WITH HOLDOUT. Pour obtenir la syntaxe et des exemples de l'instruction CREATE STRUCTURE, consultez CREATE MINING STRUCTURE (DMX).

    Notes

    L'instruction ALTER MINING STRUCTURE ne prend pas en charge l'utilisation de paramètres d'exclusion.

  • ASSL   Vous pouvez créer de nouvelles structures d'exploration de données partitionnées et ajouter des partitions aux structures d'exploration de données existantes, en utilisant le langage ASSL (Analysis Services Scripting Language). Pour plus d'informations, consultez Élément MiningStructure (ASSL).

  • AMO   Vous pouvez également afficher et modifier des partitions à l'aide des objets AMO. Pour plus d'informations, consultez Concepts et modèle objet AMO.

Vous pouvez afficher les informations relatives aux partitions dans une structure d'exploration de données existante en interrogeant l'ensemble de lignes de schéma d'exploration de données. Vous pouvez pour cela effectuer un appel DISCOVER ROWSET ou utiliser une requête DMX. Pour plus d'informations, consultez Ensembles de lignes de schéma d'exploration de données ou Interrogation des ensembles de lignes de schéma d'exploration de données (Analysis Services - Exploration de données).

Utilisation des informations de partition

Par défaut, toutes les informations relatives aux partitions d'apprentissage et de test sont mises en cache afin que vous puissiez utiliser des partitions existantes pour former puis tester de nouveaux modèles. Vous pouvez également définir des filtres à appliquer aux partitions d'exclusion mises en cache afin de pouvoir évaluer le modèle sur des sous-ensembles des données. Pour plus d'informations, consultez Création de filtres pour les modèles d'exploration de données (Analysis Services - Exploration de données).

La façon dont les cas sont divisés en partitions dépend de la façon dont vous configurez les données d'exclusion et les données que vous fournissez. Si vous souhaitez déterminer le nombre de cas dans chaque partition ou trouver des détails sur les cas inclus dans les jeux d'apprentissage et de test, vous pouvez interroger la structure du modèle en créant une requête DMX. Par exemple, la requête ci-dessous retourne les cas qui ont été utilisés dans le jeu d'apprentissage du modèle.

SELECT * from <structure>.CASES WHERE IsTrainingCase()

Pour extraire uniquement les scénarios de test et filtrer également les scénarios de test sur l'une des colonnes dans la structure d'exploration de données, utilisez la syntaxe suivante :

SELECT * from <structure>.CASES WHERE IsTestCase() AND <structure column name> = '<value>'

Limitations sur l'utilisation de l'exclusion

  • Pour utiliser l'exclusion, la propriété MiningStructureCacheMode de la structure d'exploration de données doit avoir la valeur par défaut, KeepTrainingCases. Si vous modifiez la propriété CacheMode en lui affectant ClearAfterProcessing, puis retraitez la structure d'exploration de données, la partition sera perdue.

  • Vous ne pouvez pas utiliser de partitions avec des modèles de séries chronologiques. Par conséquent, le partitionnement est désactivé si vous créez une partition et spécifiez que l'algorithme MTS (Microsoft Time Series) doit être utilisé pour créer le modèle. Le partitionnement est également désactivé si la structure d'exploration de données contient une colonne KEY TIME au niveau du cas ou de la table imbriquée.

  • Vous pouvez configurer par inadvertance les partitions de façon à utiliser le jeu de données complet pour les tests et à n'utiliser aucune donnée pour l'apprentissage. Toutefois, Analysis Services déclenchera une erreur afin que vous puissiez résoudre le problème. Analysis Services vous prévient également lorsque la structure est traitée, si plus de 50 % des données ont été exclues pour les tests.

  • Dans la plupart des cas, la valeur d'exclusion par défaut 30 fournit un bon équilibre entre les données d'apprentissage et de test. Il n'existe pas de méthode simple pour déterminer le volume minimal du jeu de données permettant de fournir un apprentissage suffisant ou le volume maximal du jeu d'apprentissage permettant d'éviter un surajustement. Toutefois, après avoir construit un modèle, vous pouvez utiliser la validation croisée pour évaluer le jeu de données par rapport à un modèle particulier. Pour plus d'informations, consultez Validation croisée (Analysis Services - Exploration de données).

  • Outre les propriétés répertoriées dans le tableau précédent, une propriété en lecture seule, HoldoutActualSize, est fournie dans les objets AMO et le langage DDL XML. Toutefois, comme la taille réelle d'une partition ne peut pas être déterminée précisément avant le traitement de la structure, vous devez vérifier si le modèle a été traité avant d'extraire la valeur de la propriété HoldoutActualSize.