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 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
, max
et 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
- Contrainte de plage numérique
- Contrainte de distribution numérique
- Contrainte de distribution catégorielle-catégorielle
- Contrainte de plage numérique catégorielle
- Contrainte de distribution catégorielle numérique
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.
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