0 / 0
Retourner à la version anglaise de la documentation
Métriques de dérive
Dernière mise à jour : 25 oct. 2024
Métriques de dérive

Lorsque vous configurez des évaluations de dérive, vous pouvez générer des mesures qui vous aident à déterminer dans quelle mesure votre modèle prédit les résultats au fil du temps.

Vous pouvez consulter les résultats de vos évaluations de dérive sur le tableau de bord Insights. Pour afficher les résultats, vous pouvez sélectionner une vignette de déploiement de modèle et cliquer sur la flèche flèche de navigation dans la section d'évaluation Dérive pour afficher un récapitulatif des métriques de dérive de votre dernière évaluation. Pour plus d'informations, voir Examen des résultats de dérive.

Les mesures de dérive sont calculées en analysant le comportement de votre modèle et en construisant son propre modèle pour prédire si votre modèle génère des prédictions précises pour les points de données. Ce modèle de détection de dérive traite les données utiles pour identifier le nombre d'enregistrements pour lesquels votre modèle effectue des prévisions inexactes et génère la précision prévue de votre modèle.

La dérive est prise en charge pour les données structurées uniquement et ne prend pas en charge les fonctions Python .

Mesures de dérive prises en charge

Les mesures de dérive suivantes sont prises en charge pour les évaluations de dérive :

Baisse de l'exactitude

Les évaluations de dérive estiment la baisse de précision de votre modèle au moment de l'exécution par rapport aux données d'apprentissage. La précision du modèle diminue s'il y a une augmentation des transactions similaires à celles que le modèle n'a pas évaluées correctement dans les données d'apprentissage.

Fonctionnement

Le moniteur de dérive fonctionne différemment dans les environnements de pré-production et de production.

Dans les environnements de pré-production, lorsque vous téléchargez des données de test marquées, les données sont ajoutées aux tableaux de commentaires et de données utiles. Les données marquées sont ajoutées en tant qu'annotation dans le tableau de contenu. La précision est calculée à l'aide de la colonne de données libellée et de la colonne de prévision du tableau du contenu.

Dans les environnements de production, un modèle de détection des dérives est créé en examinant les données utilisées pour former et tester le modèle. Par exemple, si le modèle a une exactitude de 90 % sur les données de test, cela signifie qu'il fournit des prédictions incorrectes sur 10 % des données de test. Un modèle de classification binaire est construit qui accepte un point de données et prédit si ce point de données est similaire aux données que le modèle a prédites de manière incorrecte (10 %) ou précise (90 %).

Une fois le modèle de détection de dérive créé, il est évalué, au moment de l'exécution, à l'aide de toutes les données reçues par le modèle client. Par exemple, si le modèle client a reçu 1 000 enregistrements au cours des trois dernières heures, le modèle de détection de dérive s'exécute sur ces mêmes 1 000 points de données. Il calcule combien des enregistrements sont similaires aux 10 % d'enregistrements sur lesquels le modèle a fait une erreur lors de l'entraînement. Si 200 de ces enregistrements sont similaires aux 10 % cela implique que l'exactitude du modèle est probablement de 80 %. Comme elle était de 90 % lors de l'entraînement, cela signifie qu'il y a une dérive d'exactitude de 10 % dans le modèle.

Pour atténuer la dérive après sa détection, vous devez construire une nouvelle version du modèle qui corrige le problème. Les points de données mis en évidence comme causes de la dérive constituent un bon point de départ. Introduisez les nouvelles données dans le modèle prédictif après avoir étiqueté manuellement les transactions en dérive et les utiliser pour entraîner à nouveau le modèle.

Calculs

La baisse de la précision de la mesure est calculée uniquement pour les modèles de classification binaires et multi-classes structurés. Chaque transaction est analysée afin d'estimer si la prédiction du modèle est exacte. Si la prédiction est inexacte, la transaction est marquée comme en dérive. La précision estimée est ensuite calculée comme la fraction des transactions non fractionnée par rapport au nombre total de transactions analysées. L'exactitude de base est l'exactitude du modèle sur les données de test. L'ampleur de la dérive de la précision est calculée comme la différence entre la précision de base et la précision estimée. En outre, toutes les transactions dérivées sont calculées, puis regroupées en fonction de la similarité de la contribution de chaque caractéristique à la dérive de la précision. Dans chaque groupe, les caractéristiques importantes qui ont contribué à la dérive de la précision sont estimées et leur impact est classé en trois catégories : important, partiel et faible.

Baisse de la cohérence des données

Fonctionnement

Chaque transaction est analysée pour vérifier l'incohérence des données en comparant les transactions en cours d'exécution avec les schémas des transactions dans les données d'apprentissage. Si une transaction enfreint un ou plusieurs modèles de données d'apprentissage, elle est identifiée comme incohérente. Pour calculer la baisse de cohérence des données, le nombre total de transactions est divisé par le nombre de transactions identifiées comme incohérentes. Par exemple, si 10 transactions sont identifiées comme incohérentes à partir d'un ensemble de 100 transactions, la baisse de la cohérence des données est de 10%.

Calculs

Pour identifier l'incohérence des données, un schéma est généré lorsque vous configurez la détection de dérive en créant un fichier constraints.json pour spécifier les règles que vos données d'entrée doivent suivre. Le schéma est utilisé pour évaluer la dérive de vos données en identifiant les valeurs aberrantes qui ne correspondent pas aux contraintes spécifiées. Le schéma est spécifié en tant qu'objet JSON avec des tableaux columns et constraints qui décrivent les données de formation, comme illustré dans l'exemple suivant:

{
      "columns": [
        {
            "name": "CheckingStatus",
            "dtype": "categorical",
            "count": 5000,
            "sparse": false,
            "skip_learning": false
        },
      "constraints": [
        {
            "name": "categorical_distribution_constraint",
            "id": "f0476d40-d7df-4095-9be5-82564511432c",
            "kind": "single_column",
            "columns": [
                "CheckingStatus"
            ],
            "content": {
                "frequency_distribution": {
                    "0_to_200": 1304,
                    "greater_200": 305,
                    "less_0": 1398,
                    "no_checking": 1993
                }
            }
        }

Colonnes

Values are specified for the name, dtype, count,sparse, and skip_learning keys to describe a column.

Les clés name et dtype décrivent le libellé et le type de données d'une colonne. Les valeurs suivantes qui sont spécifiées avec la clé dtype décrivent le type de données:

  • categorical
  • numeric_discrete
  • numeric_continuous

Le type de données spécifié détermine si d'autres propriétés statistiques sont décrites avec des clés, telles que min, maxet mean. Par exemple, lorsque le type de données numeric_discrete ou numeric_continuous est spécifié, les propriétés sont décrites comme illustré dans l'exemple suivant:

{
            "name": "LoanDuration",
            "dtype": "numeric_discrete",
            "count": 5000,
            "sparse": false,
            "skip_learning": false,
            "min": 4,
            "max": 53,
            "mean": 21.28820697954272,
            "std": 10.999096037050032,
            "percentiles": [
                13.0,
                21.0,
                29.0
            ],
            "count_actual": 4986
        }

La clé count indique le nombre de lignes d'une colonne. Des valeurs booléennes sont spécifiées pour décrire les clés sparse et skip_learning d'une colonne. La clé sparse indique si une colonne est éparse et la clé skip_learning indique si une colonne ignore l'apprentissage de l'une des règles décrites dans le schéma. Une colonne est peu dense si les 25th et 75th percentiles ont la même valeur.

Contraintes

La clé name spécifie le type de contrainte. Les valeurs suivantes sont spécifiées pour décrire le type de contrainte:

  • categorical_distribution_constraint
  • numeric_range_constraint
  • numeric_distribution_constraint
  • catnum_range_constraint
  • catnum_distribution_constraint
  • catcat_distribution_constraint

La clé id identifie les contraintes avec un identificateur unique universel (UUID). La clé kind indique si la contrainte est une contrainte single_column ou two-column .

La clé columns spécifie un tableau de noms de colonne. Lorsqu'une contrainte single_column avec la clé kind est spécifiée, le tableau contient une valeur correspondant à la colonne que vous souhaitez décrire. Lorsqu'une contrainte two-column avec la clé kind est spécifiée, le tableau contient des valeurs en corrélation avec les colonnes qui contiennent des données connexes.

La clé content spécifie les attributs qui décrivent les caractéristiques statistiques de vos données. Le type de contrainte spécifié avec la clé name détermine quel attribut est spécifié dans la clé content , comme illustré dans le tableau suivant:

Attribut Contraintes
distribution_fréquence contrainte_distribution_catégorielle
plages numeric_range_constraint, catnum_range_constraint
distribution numeric_distribution_constraint, catnum_distribution_constraint
combinaisons rare_combinaisons contrainte_distribution_catche
colonne source catcatcat_distribution_constraint, catnum_range_constraint, catnum_distribution_constraint
colonne cible catcatcat_distribution_constraint, catnum_range_constraint, catnum_distribution_constraint

Les sections suivantes fournissent des exemples de spécification de chaque type de contrainte:

Contrainte de distribution catégorielle

        {
            "name": "categorical_distribution_constraint",
            "id": "f0476d40-d7df-4095-9be5-82564511432c",
            "kind": "single_column",
            "columns": [
                "CheckingStatus"
            ],
            "content": {
                "frequency_distribution": {
                    "0_to_200": 1304,
                    "greater_200": 305,
                    "less_0": 1398,
                    "no_checking": 1993
                }
            }
        }

Dans les données d'apprentissage, la colonne CheckingStatus contient quatre valeurs spécifiées avec l'attribut frequency_distribution . L'attribut frequency_distribution spécifie les effectifs avec des valeurs pour les catégories, telles que 0_to_200. Si des enregistrements sont trouvés dans les données utiles qui spécifient des valeurs différentes des frequency_distribution valeurs d'attribut, les enregistrements sont identifiés comme des dérives.

Contrainte de plage numérique

   {
            "name": "numeric_range_constraint",
            "id": "79f3a1f5-30a1-4c7f-91a0-1613013ee802",
            "kind": "single_column",
            "columns": [
                "LoanAmount"
            ],
            "content": {
                "ranges": [
                    {
                        "min": 250,
                        "max": 11676,
                        "count": 5000
                    }
                ]
            }
        }

La colonne LoanAmount contient les valeurs minimale et maximale spécifiées avec l'attribut ranges pour définir une plage pour les données d'apprentissage. L'attribut ranges spécifie les régions à haute densité de la colonne. Les plages qui apparaissent rarement dans les données d'apprentissage ne sont pas incluses. Si les données de la charge utile contiennent des enregistrements qui ne correspondent pas à la plage et à un tampon prédéfini, ces enregistrements sont identifiés comme des dérives.

Contrainte de distribution numérique

{
            "name": "numeric_distribution_constraint",
            "id": "3a97494b-0cd7-483e-a1c6-adb7755c1cb0",
            "kind": "single_column",
            "columns": [
                "LoanAmount"
            ],
            "content": {
                "distribution": {
                        "name": "norm",
                        "parameters": {
                            "loc": 3799.62,
                            "scale": 1920.0640064678398
                        },
                        "p-value": 0.22617155797563282
                }
            }
        }

La colonne LoanAmount contient des valeurs qui sont spécifiées avec l'attribut distribution pour définir une distribution normale pour les données d'apprentissage. Si les enregistrements trouvés dans les données de la charge utile ne correspondent pas à la distribution normale, ils sont identifiés comme des dérives. Les distributions qui sont ajustées sont les distributions uniformes, exponentielles ou normales. Si des enregistrements correspondant à ces distributions ne sont pas trouvés, cette contrainte n'est pas apprise.

Contrainte de distribution catégorielle-catégorielle

    {
            "name": "catcat_distribution_constraint",
            "id": "99468600-1924-44d9-852c-1727c9c414ee",
            "kind": "two_column",
            "columns": [
                "CheckingStatus",
                "CreditHistory"
            ],
            "content": {
                "source_column": "CheckingStatus",
                "target_column": "CreditHistory",
                "rare_combinations": [
                    {
                        "source_value": "no_checking",
                        "target_values": [
                            "no_credits"
                        ]
                    }
                ]
            }
        }

Pour les colonnes CheckingStatus et CreditHistory , les attributs rare_combinations spécifient une combinaison de valeurs qui apparaissent rarement dans les données d'apprentissage. Si des enregistrements contenant la combinaison sont trouvés dans les données utiles, ils sont identifiés comme des dérives.

Contrainte d'intervalle numérique catégorielle

        {
            "name": "catnum_range_constraint",
            "id": "f252033c-1635-4974-8976-3f7904d0c37d",
            "kind": "two_column",
            "columns": [
                "CheckingStatus",
                "LoanAmount"
            ],
            "content": {
                "source_column": "CheckingStatus",
                "target_column": "LoanAmount",
                "ranges": {
                    "no_checking": [
                        {
                            "min": 250,
                            "max": 11676,
                            "count": 1993
                        }
                    ],
                    "less_0": [
                        {
                            "min": 250,
                            "max": 7200,
                            "count": 1398
                        }
                    ],
                    "0_to_200": [
                        {
                            "min": 250,
                            "max": 9076,
                            "count": 1304
                        }
                    ],
                    "greater_200": [
                        {
                            "min": 250,
                            "max": 9772,
                            "count": 305
                        }
                    ]
                }
            }
        }

L'attribut ranges spécifie les valeurs minimale et maximale pour les colonnes CheckingStatus et LoanAmount qui définissent une plage pour les données d'apprentissage. Si des enregistrements sont trouvés dans les données utiles qui ne contiennent pas de valeurs de colonnes LoanAmount et CheckingStatus correspondant à l'intervalle et à un tampon prédéfini, les enregistrements sont identifiés comme étant à la dérive.

Contrainte de distribution numérique catégorielle

        {
            "name": "catnum_distribution_constraint",
            "id": "3a97494b-0cd7-483e-a1c6-adb7755c1cb0",
            "kind": "two_column",
            "columns": [
                "CheckingStatus",
                "LoanAmount"
            ],
            "content": {
                "source_column": "CheckingStatus",
                "target_column": "LoanAmount",
                "distribution": {
                    "greater_200": {
                        "name": "norm",
                        "parameters": {
                            "loc": 3799.62,
                            "scale": 1920.0640064678398
                        },
                        "p-value": 0.22617155797563282
                    }
                }
            }
        }

Les colonnes LoanAmount et CheckingStatus contiennent des valeurs qui sont spécifiées avec l'attribut distribution pour définir une distribution normale pour les données d'apprentissage. Si des enregistrements sont trouvés dans les données utiles qui ne contiennent pas de valeurs de colonnes LoanAmount et CheckingStatus qui correspondent à la distribution normale, les enregistrements sont identifiés comme des dérives.

Remarque :

Pour atténuer la dérive après sa détection, vous devez construire une nouvelle version du modèle qui corrige le problème. Les points de données mis en évidence comme causes de la dérive constituent un bon point de départ. Introduisez les nouvelles données dans le modèle prédictif après avoir étiqueté manuellement les transactions en dérive et les utiliser pour entraîner à nouveau le modèle.

En savoir plus

Examen des connaissances du modèle

Rubrique parent: Métriques de dérive

Recherche et réponse à l'IA générative
Ces réponses sont générées par un modèle de langue de grande taille dans watsonx.ai en fonction du contenu de la documentation du produit. En savoir plus