Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette page décrit les tables de métriques créées par le profilage des données. Pour plus d’informations sur le tableau de bord créé par un profil, consultez le tableau de bord de profilage des données.
Lorsqu’un profil s’exécute sur une table Databricks, il crée ou met à jour deux tables de métriques : une table de métriques de profil et une table de métriques de dérive.
- La table des métriques de profil contient des statistiques récapitulatives pour chaque colonne et pour chaque combinaison de colonnes de fenêtre de temps, de tranche et de regroupement. Pour
InferenceLogl’analyse, la table d’analyse contient également des métriques de précision du modèle. - La table des métriques de dérive contient des statistiques qui suivent les changements dans la distribution d’une métrique. Les tables de dérive peuvent être utilisées pour visualiser ou alerter sur les modifications apportées aux données au lieu de valeurs spécifiques. Les types de dérive suivants sont calculés :
- La dérive consécutive compare une fenêtre à la fenêtre de temps précédente. La dérive consécutive est calculée uniquement si une fenêtre de temps consécutive existe après l’agrégation en fonction des granularités spécifiées.
- La dérive de base compare une fenêtre à la distribution de base déterminée par la table de référence. La dérive de base est calculée uniquement si une table de référence est fournie.
Emplacement des tables de métriques
Les tables de métriques sont enregistrées dans {output_schema}.{table_name}_profile_metrics et {output_schema}.{table_name}_drift_metricsoù :
-
{output_schema}est le catalogue et le schéma spécifiés paroutput_schema_name. -
{table_name}est le nom de la table en cours de profilage.
Calcul des statistiques de profil
Chaque statistique et métrique dans les tables de métriques est calculée pour un intervalle de temps spécifié (appelé « fenêtre »). Pour l’analyse Snapshot, la fenêtre de temps est un seul point dans le temps correspondant à l’heure à laquelle la métrique a été actualisée. Pour l’analyse TimeSeries et InferenceLog, la fenêtre de temps est basée sur les granularités spécifiées dans create_monitor et les valeurs dans le timestamp_col spécifié dans l’argument profile_type.
Les métriques sont toujours calculées pour l’ensemble de la table. En outre, si vous fournissez une expression de découpage, les métriques sont calculées pour chaque tranche de données définie par une valeur de l’expression.
Par exemple:
slicing_exprs=["col_1", "col_2 > 10"]
génère les tranches suivantes : une pour col_2 > 10, une pour col_2 <= 10et une pour chaque valeur unique dans col1.
Les tranches sont identifiées dans les tables de métriques par les noms de colonnes slice_key et slice_value. Dans cet exemple, une clé de tranche est « col_2 > 10 » et les valeurs correspondantes sont « true » et « false ». La table entière équivaut à slice_key = NULL et slice_value = NULL. Les tranches sont définies par une seule clé de segment.
Les métriques sont calculées pour tous les groupes possibles définis par les fenêtres de temps et les clés et valeurs de segment. En outre, pour l’analyse InferenceLog, les métriques sont calculées pour chaque ID de modèle. Pour plus d’informations, consultez Schémas de colonne pour les tables générées.
Statistiques supplémentaires pour la précision du modèle (analyse seule InferenceLog)
Des statistiques supplémentaires sont calculées à des fins d’analyse InferenceLog.
- La qualité du modèle est calculée si
label_coletprediction_colsont fournis. - Les tranches sont créées automatiquement en fonction des valeurs distinctes de
model_id_col. - Pour les modèles de classification, les statistiques d’impartialité et de biais sont calculées pour les tranches qui ont une valeur booléenne.
Tables d’analyse des requêtes et de métriques de dérive
Vous pouvez interroger les tables de métriques directement. L’exemple suivant est basé sur l’analyse InferenceLog :
SELECT
window.start, column_name, count, num_nulls, distinct_count, frequent_items
FROM census_monitor_db.adult_census_profile_metrics
WHERE model_id = 1 — Constrain to version 1
AND slice_key IS NULL — look at aggregate metrics over the whole data
AND column_name = "income_predicted"
ORDER BY window.start
Schémas de colonnes pour les tables générées
Pour chaque colonne de la table primaire, les tables de métriques contiennent une ligne pour chaque combinaison de colonnes de regroupement. La colonne associée à chaque ligne s’affiche dans la colonne column_name.
Pour les métriques basées sur plusieurs colonnes, telles que les métriques de précision du modèle, column_name est défini sur :table.
Pour les métriques de profil, les colonnes de regroupement suivantes sont utilisées :
- fenêtre de temps
- granularité (
TimeSeriesetInferenceLoganalyse uniquement) - type de journal : table d’entrée ou table de référence
- clé et valeur de segment
- id de modèle (
InferenceLoganalyse uniquement)
Pour les métriques de dérive, les colonnes de regroupement supplémentaires suivantes sont utilisées :
- fenêtre de temps de comparaison
- type de dérive (comparaison à la fenêtre précédente ou comparaison à la table de base)
Les schémas des tables de métriques sont présentés ci-dessous et sont également affichés dans la documentation de référence de l’API de profilage des données.
Schéma de table de métriques de profil
Le tableau suivant montre le schéma de la table des métriques de profil. Lorsqu’une métrique n’est pas applicable à une ligne, la cellule correspondante a la valeur Null.
| Nom de colonne | Type | Description |
|---|---|---|
| Regroupement de colonnes | ||
| fenêtre | Struct. Voir [1] ci-dessous. | Fenêtre de temps. |
| granularité | ficelle | Durée de la fenêtre, définie par le paramètre granularities. [2] |
| model_id_col | ficelle | Optionnel. Utilisé uniquement pour le InferenceLog type d’analyse. |
| log_type | ficelle | Table utilisée pour calculer les métriques. LIGNE DE BASE ou ENTRÉE. |
| slice_key | ficelle | Expression de segment. NULL pour la valeur par défaut, c’est-à-dire toutes les données. |
| slice_value | ficelle | Valeur de l’expression de découpage. |
| nom_de_colonne | ficelle | Nom de la colonne dans la table primaire.
:table est un nom spécial pour les métriques qui s’appliquent à l’ensemble de la table, telles que la précision du modèle. |
| type_de_données | ficelle | Type de données Spark de column_name. |
| logging_table_commit_version | int | Ignorer. |
| version du moniteur | bigint | Version de la configuration du profil utilisée pour calculer les métriques dans la ligne. Pour plus d’informations, consultez [3] ci-dessous. |
| Colonnes de métriques - statistiques récapitulatives | ||
| count | bigint | Nombre de valeurs non null. |
| num_nulls | bigint | Nombre de valeurs Null dans column_name. |
| avg | double | Moyenne arithmétique de la colonne, ignorant les valeurs Null. |
| Quantiles | array<double> |
Tableau de 1 000 quantiles. Voir [4] ci-dessous. |
| distinct_count | bigint | Nombre approximatif de valeurs distinctes en column_name. Cela utilise la approx_count_distinct fonction, de sorte que le résultat peut ne pas être exact. |
| min | double | La valeur minimale est column_name. |
| max | double | La valeur maximale est column_name. |
| stddev | double | Écart type de column_name. |
| num_zeros | bigint | Nombre de zéros dans column_name. |
| num_nan | bigint | Nombre de valeurs NaN dans column_name. |
| taille_minimale | double | Taille minimale des tableaux ou structures dans column_name. |
| taille_max | double | Taille maximale des tableaux ou structures dans column_name. |
| avg_size | double | Taille moyenne des tableaux ou structures dans column_name. |
| min_len | double | Longueur minimale des valeurs de chaîne et binaires dans column_name. |
| max_len | double | Longueur maximale des chaînes de caractères et des valeurs binaires en column_name. |
| avg_len | double | Longueur moyenne des chaînes de caractères et des valeurs binaires en column_name. |
| frequent_items | Struct. Voir [1] ci-dessous. | Top 100 des éléments les plus fréquemment présents. |
| non_null_columns | array<string> |
Liste de colonnes avec au moins une valeur non null. |
| médiane | double | Valeur médiane de column_name. |
| percent_null | double | Pourcentage de valeurs Null dans column_name. |
| percent_zeros | double | Pourcentage de valeurs qui sont nulles dans column_name. |
| percent_distinct | double | Pourcentage de valeurs distinctes dans column_name. |
| Colonnes de métriques : précision du modèle de classification [5] | ||
| accuracy_score | double | Précision du modèle, calculée comme suit :
Les valeurs NULL sont ignorées. |
| log_loss | double | Perte de journal pour les problèmes de classification, calculée comme suit :
Exige prediction_proba_col. Les prédictions ou les étiquettes qui sont NULL sont ignorées. |
| roc_auc_score | Struct. Voir [1] ci-dessous. | Score ROC AUC pour les classifications binaire et multiclasse. Exige prediction_proba_col. Retourne des scores pondérés selon la méthode "un-contre-un" et des scores avec moyenne macro. Les étiquettes ou les prédictions qui sont NULL sont ignorées. |
| matrice de confusion | Struct. Voir [1] ci-dessous. | |
| précision | Struct. Voir [1] ci-dessous. | |
| rappel | Struct. Voir [1] ci-dessous. | |
| f1_score | Struct. Voir [1] ci-dessous. | |
| Colonnes de métriques : précision du modèle de régression [5] | ||
| erreur quadratique moyenne | double | Erreur quadratique moyenne entre prediction_col et label_col. |
| root_mean_squared_error | double | Erreur quadratique moyenne racine entre prediction_col et label_col. |
| mean_average_error | double | Erreur moyenne moyenne entre prediction_col et label_col. |
| erreur de pourcentage absolue moyenne | double | Erreur en pourcentage absolu moyen entre prediction_col et label_col. |
| r2_score | double | Score au carré R entre prediction_col et label_col. |
| Colonnes de métriques : impartialité et biais [6] | ||
| parité prédictive | double | Mesure si les deux groupes ont une précision égale pour toutes les classes prédites.
label_col est obligatoire. |
| predictive_equality | double | Mesure si les deux groupes ont un taux de faux positifs égal à toutes les classes prédites.
label_col est obligatoire. |
| égalité_des_chances | double | Mesure si les deux groupes ont un rappel égal dans toutes les classes prédites.
label_col est obligatoire. |
| parité statistique | double | Mesure si les deux groupes ont un taux d’acceptation égal. Ici, le taux d’acceptation est défini comme la probabilité empirique d’être prédit comme une certaine classe, dans toutes les classes prédites. |
[1] Format de struct pour confusion_matrix, precision, recall, f1_score, et roc_auc_score:
| Nom de colonne | Type |
|---|---|
| fenêtre | struct<start: timestamp, end: timestamp> |
| frequent_items | array<struct<item: string, count: bigint>> |
| matrice de confusion | struct<prediction: string, label: string, count: bigint> |
| précision | struct<one_vs_all: map<string,double>, macro: double, weighted: double> |
| rappel | struct<one_vs_all: map<string,double>, macro: double, weighted: double> |
| f1_score | struct<one_vs_all: map<string,double>, macro: double, weighted: double> |
| roc_auc_score | struct<one_vs_one: struct<weighted: double, macro: double>> |
[2] Pour les profils de séries chronologiques ou d’inférence, le profil examine les 30 jours précédant la création du profil. En raison de ce seuil, la première analyse peut inclure une fenêtre partielle. Par exemple, la limite de 30 jours peut tomber au milieu d’une semaine ou d’un mois, auquel cas la semaine ou le mois complet n’est pas inclus dans le calcul. Ce problème affecte uniquement la première fenêtre.
[3] La version indiquée dans cette colonne est la version utilisée pour calculer les statistiques dans la ligne et peut ne pas être la version actuelle du profil. Chaque fois que vous actualisez les métriques, le profil tente de recompiler les métriques précédemment calculées à l’aide de la configuration de profil actuelle. La version actuelle du profil apparaît dans les informations de profil retournées par l’API et le client Python.
[4] Exemple de code pour récupérer le 50e centile : SELECT element_at(quantiles, int((size(quantiles)+1)/2)) AS p50 ... ou SELECT quantiles[500] ... .
[5] S'affiche uniquement si le profil a un type d’analyse InferenceLog et que label_col et prediction_col sont tous les deux fournis.
[6] Uniquement indiqué si le profil dispose d'un type d'analyse InferenceLog et que problem_type est classification.
Schéma de table de métriques de dérive
Le tableau suivant montre le schéma de la table des métriques de dérive. La table de dérive est générée uniquement si une table de référence est fournie ou si une fenêtre de temps consécutive existe après l’agrégation en fonction des granularités spécifiées. Lorsqu’une métrique n’est pas applicable à une ligne, la cellule correspondante a la valeur Null.
| Nom de colonne | Type | Description |
|---|---|---|
| Regroupement de colonnes | ||
| fenêtre | struct<start: timestamp, end: timestamp> |
Fenêtre de temps. |
| window_cmp | struct<start: timestamp, end: timestamp> |
Fenêtre de comparaison pour drift_type CONSECUTIVE. |
| drift_type | ficelle | LIGNE DE BASE ou CONSÉCUTIVE. Si les métriques de dérive sont comparées à la fenêtre de temps précédente ou à la table de référence. |
| granularité | ficelle | Durée de la fenêtre, définie par le paramètre granularities. [7] |
| model_id_col | ficelle | Optionnel. Utilisé uniquement pour le InferenceLog type d’analyse. |
| slice_key | ficelle | Expression de segment. NULL pour la valeur par défaut, c’est-à-dire toutes les données. |
| slice_value | ficelle | Valeur de l’expression de découpage. |
| nom_de_colonne | ficelle | Nom de la colonne dans la table primaire.
:table est un nom spécial pour les métriques qui s’appliquent à l’ensemble de la table, telles que la précision du modèle. |
| type_de_données | ficelle | Type de données Spark de column_name. |
| version du moniteur | bigint | Version de la configuration du moniteur utilisée pour calculer les métriques dans la ligne. Pour plus d’informations, consultez [8] ci-dessous. |
| Colonnes de métriques - dérive | Les différences sont calculées en tant que fenêtre actuelle - fenêtre de comparaison. | |
| count_delta | double | Différence en count. |
| avg_delta | double | Différence en avg. |
| percent_null_delta | double | Différence en percent_null. |
| percent_zeros_delta | double | Différence en percent_zeros. |
| percent_distinct_delta | double | Différence en percent_distinct. |
| non_null_columns_delta | struct<added: int, missing: int> |
Nombre de colonnes avec une augmentation ou une diminution de valeurs non null. |
| chi_squared_test | struct<statistic: double, pvalue: double> |
Test chi-carré pour la dérive dans la distribution. Calculé pour les colonnes catégorielles uniquement.
null pour les colonnes numériques. |
| ks_test | struct<statistic: double, pvalue: double> |
Test KS pour la dérive dans la distribution. Calculé pour les colonnes numériques uniquement.
null pour les colonnes catégorielles. |
| tv_distance | double | Distance de variation totale pour la dérive dans la distribution. Calculé pour les colonnes catégorielles uniquement.
null pour les colonnes numériques. |
| l_infinity_distance | double | Distance L-infini pour la dérive dans la distribution. Calculé pour les colonnes catégorielles uniquement.
null pour les colonnes numériques. |
| js_distance | double | Distance de variation totale pour la dérive dans la distribution. Calculé pour les colonnes catégorielles uniquement.
null pour les colonnes numériques. |
| wasserstein_distance | double | Dérive entre deux distributions numériques à l’aide de la métrique de distance de Wasserstein. Calculé pour les colonnes numériques uniquement.
null pour les colonnes catégorielles. |
| indice_de_stabilité_de_la_population | double | Métrique pour comparer la dérive entre deux distributions numériques à l’aide de la métrique d’index de stabilité de la population. Pour plus d’informations, consultez [9] ci-dessous. Calculé pour les colonnes numériques uniquement.
null pour les colonnes catégorielles. |
[7] Pour les profils de série chronologique ou d’inférence, le profil couvre les 30 jours précédant le moment où le profil est créé. En raison de ce seuil, la première analyse peut inclure une fenêtre partielle. Par exemple, la limite de 30 jours peut tomber au milieu d’une semaine ou d’un mois, auquel cas la semaine ou le mois complet n’est pas inclus dans le calcul. Ce problème affecte uniquement la première fenêtre.
[8] La version indiquée dans cette colonne est la version utilisée pour calculer les statistiques dans la ligne et peut ne pas être la version actuelle du profil. Chaque fois que vous actualisez les métriques, le profil tente de recompiler les métriques précédemment calculées à l’aide de la configuration de profil actuelle. La version actuelle du profil apparaît dans les informations de profil retournées par l’API et le client Python.
[9] La sortie de l’index de stabilité de la population est une valeur numérique qui représente la différence entre deux distributions. La plage est [0, inf). PSI < 0.1 signifie qu’il n’y a pas de changement significatif de population. PSI < 0.2 indique un changement modéré de la population. PSI >= 0,2 indique un changement significatif de population.