Tables de métriques de profilage des données
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 est exécuté sur une table Databricks, il crée ou met à jour deux tables de métriques : une table des métriques de profil et une table des métriques de drift.
- La table des métriques de profil contient des statistiques récapitulatives pour chaque colonne et pour chaque combinaison de fenêtre temporelle, de tranche et de colonnes de regroupement. Pour l'
InferenceLoganalyse, la table d'analyse contient également les métriques de précision du modèle. - La table des métriques de drift contient des statistiques qui suivent les changements de distribution pour une métrique. Les tables de drift peuvent être utilisées pour visualiser les modifications des données ou alerter sur celles-ci, au lieu de valeurs spécifiques. Les types de drift suivants sont calculés :
- La dérive (drift) consécutive compare une fenêtre à la fenêtre de temps précédente. La dérive (drift) consécutive n'est calculée que si une fenêtre temporelle consécutive existe après agrégation selon les granularités spécifiées.
- Le drift de référence compare une fenêtre à la distribution de référence déterminée par la table de référence. Le drift de référence n'est calculé que si une table de référence est fournie.
Où se trouvent les 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_metrics, où :
{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.
Comment les statistiques de profilage sont calculées
Chaque statistique et métrique des tables de métriques est calculée pour un intervalle de temps spécifié (appelé une « fenêtre »). Pour l'analyse Snapshot, la fenêtre temporelle est un seul point dans le temps correspondant au moment où la métrique a été actualisée. Pour l'analyse TimeSeries et InferenceLog, la fenêtre temporelle est basée sur les granularités spécifiées dans create_monitor et les valeurs de timestamp_col spécifiées dans l'argument profile_type.
Les indicateurs sont toujours calculés pour l'ensemble de la table. De plus, 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 <= 10, et une pour chaque valeur unique de col1.
Les tranches sont identifiées dans les tables de métriques par les noms des colonnes slice_key et slice_value. Dans cet exemple, une clé de tranche serait « col_2 > 10 » et les valeurs correspondantes seraient « 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 tranche.
Les métriques sont calculées pour tous les groupes possibles définis par les fenêtres temporelles, ainsi que les clés et valeurs de tranche. De plus, pour l'analyse InferenceLog, les métriques sont calculées pour chaque ID de modèle. Pour plus de détails, voir Schémas de colonne pour les tables générées.
Statistiques supplémentaires pour la précision du modèle (InferenceLog analyse uniquement)
Des statistiques supplémentaires sont calculées pour l'analyse InferenceLog.
- La qualité du modèle est calculée si
label_coletprediction_colsont fournis. - Les tranches sont automatiquement créées en fonction des valeurs distinctes de
model_id_col. - Pour les modèles de classification, les statistiques d'équité et de biais sont calculées pour les tranches qui ont une valeur booléenne.
Tables des métriques de query, d'analyse et de drift
Vous pouvez interroger directement les tables de métriques. 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 colonne pour les tables générées
Pour chaque colonne de la table principale, les tables de métriques contiennent une ligne pour chaque combinaison de colonnes de regroupement. La colonne associée à chaque ligne est affichée dans la colonne column_name.
Pour les métriques basées sur plusieurs colonnes, telles que les métriques de précision de 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 temporelle
- granularité (analyse
TimeSeriesetInferenceLoguniquement) - type de log - table d'entrée ou table de base
- clé et valeur de segment
- ID du modèle (
InferenceLoganalyse uniquement)
Pour les métriques de drift, les colonnes de regroupement supplémentaires suivantes sont utilisées :
- fenêtre de comparaison temporelle
- type de drift (comparaison à la fenêtre précédente ou à la table de référence)
Les schémas des tables de métriques sont présentés ci-dessous et sont également présentés dans la documentation de référence de l'API de profilage des données.
Schéma de la table des métriques de profil
Le tableau suivant présente le schéma de la table des métriques de profil. Lorsqu'une métrique n'est pas applicable à une ligne, la cellule correspondante est null.
Nom de colonne | Type | Description |
|---|---|---|
Colonnes de regroupement | ||
fenêtre | Structure. Voir [1] ci-dessous. | Fenêtre de temps. |
granularité | chaîne | Durée de la fenêtre, définie par le paramètre |
model_id_col | chaîne | Facultatif. Utilisé uniquement pour le type d’analyse |
Type de journal | chaîne | Table utilisée pour calculer les métriques. BASELINE ou INPUT. |
slice_key | chaîne | Expression de découpage. NULL for default, which is all data. |
slice_value | chaîne | Valeur de l'expression de découpage. |
column_name | chaîne | Nom de la colonne dans la table primaire. |
type de données | chaîne | Type de données Spark de |
logging_table_commit_version | int | Ignorer. |
monitor_version | bigint | Version de la configuration du profil utilisée pour calculer les métriques de la ligne. Voir [3] ci-dessous pour plus de détails. |
Colonnes de métriques – statistiques de synthèse | ||
Décompte | bigint | Nombre de valeurs non nulles. |
Nombre de valeurs nulles | bigint | Nombre de valeurs nulles dans |
moy. | double | Moyenne arithmétique de la colonne, en ignorant les valeurs nulles. |
quantiles |
| Tableau de 1000 quantiles. Voir [4] ci-dessous. |
distinct_count | bigint | Nombre approximatif de valeurs distinctes dans |
min | double | Valeur minimale dans |
max | double | Valeur maximale dans |
stddev | double | Écart-type de |
num_zeros | bigint | Nombre de zéros dans |
num_nan | bigint | Nombre de valeurs NaN dans |
min_size | double | Taille minimale des tableaux ou des structures dans |
max_size | double | Taille maximale des tableaux ou des structures dans |
avg_size | double | Taille moyenne des tableaux ou des structures dans |
min_len | double | Longueur minimale des valeurs de chaîne et binaires dans |
max_len | double | Longueur maximale des valeurs de chaîne et binaires dans |
avg_len | double | Longueur moyenne des valeurs de chaîne et binaires dans |
éléments fréquents | Structure. Voir [1] ci-dessous. | Les 100 éléments les plus fréquents. |
non_null_columns |
| Liste des colonnes avec au moins une valeur non nulle. |
médiane | double | Valeur médiane de |
percent_null | double | Pourcentage de valeurs nulles dans |
percent_zeros | double | Pourcentage des valeurs nulles dans |
percent_distinct | double | Pourcentage de valeurs distinctes dans |
**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 nulles sont ignorées. |
log_loss | double | Perte de log pour les problèmes de classification, calculée comme suit :
|
roc_auc_score | Structure. Voir [1] ci-dessous. | Score ROC AUC pour la classification binaire et multi-classe. Nécessite |
confusion_matrix | Structure. Voir [1] ci-dessous. | |
Précision | Structure. Voir [1] ci-dessous. | |
rappel | Structure. Voir [1] ci-dessous. | |
f1_score | Structure. Voir [1] ci-dessous. | |
**Colonnes de métriques - précision du modèle de régression** [5] | ||
mean_squared_error | double | Erreur quadratique moyenne entre |
erreur quadratique moyenne | double | Erreur quadratique moyenne entre |
erreur_moyenne_absolue | double | Erreur moyenne entre |
erreur_pourcentage_absolue_moyenne | double | Erreur de pourcentage absolue moyenne entre |
r2_score | double | Score R-carré entre |
Colonnes de métriques – équité et biais [6] | ||
parité_prédictive | double | Mesure si les deux groupes ont une précision égale sur toutes les classes prédites. |
predictive_equality | double | Mesure si les deux groupes ont un taux de faux positifs égal pour toutes les classes prédites. |
égalité des chances | double | Mesure si les deux groupes ont un rappel égal sur toutes les classes prédites. |
parité statistique | double | Mesure si les deux groupes ont un taux d'acceptation égal. Le taux d'acceptation est ici défini comme la probabilité empirique d'être prédit comme une certaine classe, parmi toutes les classes prédites. |
[1] Format de la structure pour confusion_matrix, precision, recall, f1_score et roc_auc_score:
Nom de colonne | Type |
|---|---|
fenêtre |
|
éléments fréquents |
|
confusion_matrix |
|
Précision |
|
rappel |
|
f1_score |
|
roc_auc_score |
|
[2] Pour les profils de séries chronologiques ou d'inférence, le profil remonte à 30 jours à compter de la date de création du profil. En raison de cette coupure, la première analyse pourrait inclure une fenêtre partielle. Par exemple, la limite de 30 jours pourrait 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 n'affecte que la première fenêtre.
[3] La version affichée dans cette colonne est celle qui a été utilisée pour calculer les statistiques dans la ligne et pourrait ne pas être la version actuelle du profil. Chaque fois que vous refresh les métriques, le profil tente de recalculer 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 renvoyées par l’API et le client Python.
[4] Exemple de code pour récupérer le 50e percentile : SELECT element_at(quantiles, int((size(quantiles)+1)/2)) AS p50 ... ou SELECT quantiles[500] ....
[5] Affiché uniquement si le profil a le type d'analyse InferenceLog et que label_col et prediction_col sont fournis.
[6] Affiché uniquement si le profil a le type d'analyse InferenceLog et que problem_type est classification.
Schéma de la table des métriques de drift
Le tableau suivant présente le schéma de la table des métriques de drift. La table de drift n'est générée que si une table de référence est fournie ou si une fenêtre temporelle consécutive existe après agrégation selon les granularités spécifiées. Lorsqu'une métrique n'est pas applicable à une ligne, la cellule correspondante est nulle.
Nom de colonne | Type | Description |
|---|---|---|
Colonnes de regroupement | ||
fenêtre |
| Fenêtre de temps. |
window_cmp |
| Fenêtre de comparaison pour drift_type |
drift_type | chaîne | DE RÉFÉRENCE ou CONSÉCUTIF. Si les métriques de drift sont comparées à la fenêtre temporelle précédente ou à la table de référence. |
granularité | chaîne | Durée de la fenêtre, définie par le paramètre |
model_id_col | chaîne | Facultatif. Utilisé uniquement pour le type d’analyse |
slice_key | chaîne | Expression de découpage. NULL for default, which is all data. |
slice_value | chaîne | Valeur de l'expression de découpage. |
column_name | chaîne | Nom de la colonne dans la table primaire. |
type de données | chaîne | Type de données Spark de |
monitor_version | bigint | Version de la configuration du moniteur utilisée pour calculer les métriques de la ligne. Consultez [8] ci-dessous pour plus de détails. |
Colonnes de métriques - drift | Les différences sont calculées comme fenêtre actuelle - fenêtre de comparaison. | |
count_delta | double | Différence dans |
avg_delta | double | Différence dans |
percent_null_delta | double | Différence dans |
percent_zeros_delta | double | Différence dans |
percent_distinct_delta | double | Différence dans |
non_null_columns_delta |
| Nombre de colonnes avec une augmentation ou une diminution des valeurs non nulles. |
chi_squared_test |
| Test du chi-carré de drift de la distribution. Calculé uniquement pour les colonnes catégorielles. |
ks_test |
| Test de KS pour la drift de la distribution. Calculé pour les colonnes numériques uniquement. |
tv_distance | double | Distance de variation totale pour le drift dans la distribution. Calculé uniquement pour les colonnes catégorielles. |
l_infinity_distance | double | Distance L-infini pour le drift de distribution. Calculé uniquement pour les colonnes catégorielles. |
js_distance | double | Distance de Jensen–Shannon pour le drift dans la distribution. Calculé uniquement pour les colonnes catégorielles. |
wasserstein_distance | double | Drift entre deux distributions numériques à l’aide de la métrique de distance de Wasserstein. Calculé pour les colonnes numériques uniquement. |
indice de stabilité de la population | double | Métrique permettant de comparer le drift entre deux distributions numériques à l’aide de la métrique d’indice de stabilité de la population. Consultez [9] ci-dessous pour plus de détails. Calculé pour les colonnes numériques uniquement. |
[7] Pour les profils de séries temporelles ou d'inférence, le profil examine les 30 jours précédents à partir du moment où le profil est créé. En raison de cette coupure, la première analyse pourrait inclure une fenêtre partielle. Par exemple, la limite de 30 jours pourrait 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 n'affecte que la première fenêtre.
[8] La version affichée dans cette colonne est la version qui a été utilisée pour calculer les statistiques de la ligne et pourrait ne pas être la version actuelle du profil. Chaque fois que vous refresh les métriques, le profil tente de recalculer 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 renvoyées par l’API et le client Python.
[9] Le résultat de l’indice de stabilité de la population est une valeur numérique qui représente les différences entre deux distributions. La plage est [0, inf). PSI < 0,1 signifie aucun changement significatif de population. Un PSI < 0,2 indique un changement de population modéré. Un PSI >= 0,2 indique un changement de population significatif.
