Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Auf dieser Seite werden die Metriktabellen beschrieben, die durch die Datenprofilerstellung erstellt wurden. Informationen zum Dashboard, das mit einem Profil erstellt wurde, finden Sie im Dashboard zur Datenprofilerstellung.
Wenn ein Profil in einer Databricks-Tabelle ausgeführt wird, erstellt oder aktualisiert es zwei Metriktabellen: eine Profilmetrikentabelle und eine Driftmetrikentabelle.
- Die Tabelle mit den Profilmetriken enthält zusammenfassende Statistiken für jede Spalte und für jede Kombination von Zeitfenster-, Slice- und Gruppierungsspalten. Für die
InferenceLog-Analyse enthält die Analysetabelle auch Modellgenauigkeitsmetriken. - Die Datendrifttabelle enthält Statistiken, mit denen Änderungen in der Verteilung einer Metrik nachverfolgt werden. Datendrifttabellen können verwendet werden, um Änderungen in den Daten anstelle von bestimmten Werten zu visualisieren oder zu melden. Die folgenden Datendrifttypen werden berechnet:
- Beim fortlaufenden Datendrift wird ein Fenster mit dem vorhergehenden Zeitfenster verglichen. Der fortlaufende Datendrift wird nur berechnet, wenn nach der Aggregation gemäß der angegebenen Granularität ein aufeinanderfolgendes Zeitfenster vorhanden ist.
- Beim Baselinedatendrift wird ein Fenster mit der Baseline-Verteilung verglichen, die durch die Baselinetabelle bestimmt wird. Der Baselinedatendrift wird nur berechnet, wenn eine Baselinetabelle bereitgestellt wird.
Speicherort der Metriktabellen
Metriktabellen werden in {output_schema}.{table_name}_profile_metrics und {output_schema}.{table_name}_drift_metrics gespeichert, wobei:
-
{output_schema}ist der Katalog und das Schema, die vonoutput_schema_nameangegeben werden. -
{table_name}ist der Name der Tabelle, die profiliert wird.
Berechnung von Profilstatistiken
Jede Statistik und Metrik in den Metriktabellen wird für ein angegebenes Zeitintervall (ein sogenanntes „Zeitfenster“) berechnet. Für die Snapshot-Analyse ist das Zeitfenster ein einzelner Zeitpunkt, der dem Zeitpunkt entspricht, zu dem die Metrik aktualisiert wurde. Für die TimeSeries-Analyse und die InferenceLog-Analyse basiert das Zeitfenster auf der in create_monitor angegebenen Granularität und den Werten von timestamp_col, die im profile_type-Argument angegeben werden.
Metriken werden immer für die gesamte Tabelle berechnet. Wenn Sie einen Slicingausdruck angeben, werden außerdem Metriken für jeden durch einen Wert des Ausdrucks definierten Datenslice berechnet.
Beispiel:
slicing_exprs=["col_1", "col_2 > 10"]
generiert die folgenden Slices: einen für col_2 > 10, einen für col_2 <= 10 und einen für jeden eindeutigen Wert in col1.
Slices werden in den Metriktabellen anhand der Spaltennamen slice_key und slice_valueidentifiziert. In diesem Beispiel würde ein Sliceschlüssel „col_2 > 10“ lauten, und die zugehörigen Werte wären „true“ und „false“. Die gesamte Tabelle ist gleichbedeutend mit slice_key = NULL und slice_value = NULL. Slices werden durch einen einzelnen Sliceschlüssel definiert.
Metriken werden für alle möglichen Gruppen berechnet, die durch die Zeitfenster und Sliceschlüssel und -werte definiert sind. Darüber hinaus werden für die InferenceLog-Analyse Metriken für jede Modell-ID berechnet. Weitere Informationen finden Sie unter Spaltenschemata für generierte Tabellen.
Zusätzliche Statistiken für die Modellgenauigkeit (InferenceLog nur Analyse)
Für die InferenceLog-Analyse werden zusätzliche Statistiken berechnet.
- Die Modellqualität wird berechnet, wenn sowohl
label_colals auchprediction_colangegeben werden. - Slices werden automatisch basierend auf den unterschiedlichen Werten von
model_id_colerstellt. - Für Klassifizierungsmodelle werden Fairness- und Trendstatistiken für Slices mit einem booleschen Wert berechnet.
Abfrageanalyse und Datendriftmetriktabellen
Sie können die Metriktabellen direkt abfragen. Das folgende Beispiel beruht auf der InferenceLog-Analyse:
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
Spaltenschemata für generierte Tabellen
Metriktabellen enthalten für jede Spalte in der primären Tabelle eine Zeile für jede Kombination von Gruppierungsspalten. Die jeder Zeile zugeordnete Spalte wird in der Spalte column_name angezeigt.
Für Metriken, die auf mehreren Spalten basieren, z. B. Modellgenauigkeitsmetriken, wird column_name auf :table festgelegt.
Für Profilmetriken werden die folgenden Gruppierungsspalten verwendet:
- Zeitfenster
- Granularität (nur
TimeSeries- undInferenceLog-Analyse) - Protokolltyp: Eingabetabelle oder Baselinetabelle
- Sliceschlüssel und -wert
- Modell-ID (nur
InferenceLog-Analyse)
Für Datendriftmetriken werden die folgenden zusätzlichen Gruppierungsspalten verwendet:
- Vergleichszeitfenster
- Datendrifttyp (Vergleich mit dem vorhergehenden Fenster oder Vergleich mit der Baselinetabelle)
Die Schemas der Metriktabellen sind unten dargestellt und werden auch in der Referenzdokumentation zur Datenprofilerstellungs-API angezeigt.
Schema von Profilmetrikentabellen
Die folgende Tabelle zeigt das Schema der Profilmetrikentabelle. Wenn eine Metrik nicht auf eine Zeile anwendbar ist, ist die entsprechende Zelle NULL.
| Spaltenname | Typ | Beschreibung |
|---|---|---|
| Gruppierungsspalten | ||
| Fenster | Struktur. Siehe unten: [1]. | Zeitfenster. |
| Granularität | Schnur | Fensterdauer, die durch den granularities-Parameter festgelegt wird. [2] |
| model_id_col | Schnur | Dies ist optional. Wird nur für den Analysetyp InferenceLog verwendet. |
| Protokolltyp | Schnur | Tabelle zum Berechnen von Metriken. BASELINE oder INPUT. |
| slice_key | Schnur | Sliceausdruck. NULL für den Standardwert, d. h. alle Daten. |
| slice_value | Schnur | Wert des Slicingausdrucks. |
| Spaltenname | Schnur | Name der Spalte in der primären Tabelle.
:table ist ein spezieller Name für Metriken, die für die gesamte Tabelle gelten, z. B. Modellgenauigkeit. |
| Datentyp | Schnur | Spark-Datentyp column_name. |
| logging_table_commit_version | INT | Ignorieren: |
| monitor_version | bigint | Version der Profilkonfiguration, die zum Berechnen der Metriken in der Zeile verwendet wird. Nähere Informationen finden Sie unten unter [3]. |
| Metrikspalten – zusammenfassende Statistiken | ||
| anzahl | bigint | Anzahl der Nicht-NULL-Werte. |
| num_nulls | bigint | Anzahl der NULL-Werte in column_name. |
| avg | doppelt | Arithmetisches Mittel der Spalte, wobei Nullen ignoriert werden. |
| Quantile | array<double> |
Array von 1000 Quantilen. Siehe unten: [4]. |
| distinct_count | bigint | Ungefähre Anzahl unterschiedlicher Werte in column_name. Dadurch wird die approx_count_distinct Funktion verwendet, sodass das Ergebnis möglicherweise nicht exakt ist. |
| min | doppelt | Minimumwert in column_name. |
| max | doppelt | Maximumwert in column_name. |
| stddev | doppelt | Standardabweichung von column_name. |
| num_zeros | bigint | Anzahl der Nullen in column_name. |
| num_nan | bigint | Anzahl der NaN-Werte in column_name. |
| Mindestgröße | doppelt | Mindestgröße der Arrays oder Strukturen in column_name. |
| Maximalgröße | doppelt | Maximale Größe der Arrays oder Strukturen in column_name. |
| avg_size | doppelt | Durchschnittliche Größe der Arrays oder Strukturen in column_name. |
| min_len | doppelt | Mindestlänge der Zeichenfolgen- und Binärwerten in column_name. |
| max_len | doppelt | Maximale Länge der Zeichenfolgen- und Binärwerten in column_name. |
| avg_len | doppelt | Durchschnittliche Länge der Zeichenfolgen- und Binärwerten in column_name. |
| häufige Artikel | Struktur. Siehe unten: [1]. | Die 100 am häufigsten vorkommenden Elemente. |
| non_null_columns | array<string> |
Liste der Spalten mit mindestens einem Wert ungleich NULL. |
| Median | doppelt | Median von column_name. |
| Prozent_Null | doppelt | Prozentsatz der NULL-Werte in column_name. |
| percent_zeros | doppelt | Prozentsatz der Werte, die in column_name Null (0) sind. |
| percent_distinct | doppelt | Prozentsatz der Werte, die in column_name unterschiedlich sind. |
| Metrikspalten – Genauigkeit des Klassifizierungsmodells [5] | ||
| accuracy_score | doppelt | Genauigkeit des Modells, berechnet als:
NULL-Werte werden ignoriert. |
| log_loss | doppelt | Protokollverlust für Klassifizierungsprobleme, berechnet als:
Erfordert prediction_proba_col. Vorhersagen oder Beschriftungen, die NULL sind, werden ignoriert. |
| roc_auc_score | Struktur. Siehe unten: [1]. | ROC AUC-Wert für binäre und Mehrklassenklassifizierung. Erfordert prediction_proba_col. Gibt 1-vs-1 gewichtete und durchschnittliche Makroergebnisse zurück. Labels oder Vorhersagen, die NULL sind, werden ignoriert. |
| confusion_matrix | Struktur. Siehe unten: [1]. | |
| Präzision | Struktur. Siehe unten: [1]. | |
| recall (Abruf) | Struktur. Siehe unten: [1]. | |
| f1_score | Struktur. Siehe unten: [1]. | |
| Metrikspalten – Genauigkeit des Regressionsmodells [5] | ||
| mean_squared_error | doppelt | Mittlere quadratische Abweichung zwischen prediction_col und label_col. |
| root_mean_squared_error | doppelt | Mittlere quadratische Gesamtabweichung zwischen prediction_col und label_col. |
| mean_average_error | doppelt | Mittlere durchschnittliche Abweichung zwischen prediction_col und label_col. |
| mittlerer absoluter prozentualer Fehler | doppelt | Mittlere absolute prozentuale Abweichung zwischen prediction_col und label_col. |
| r²-Wert | doppelt | Bestimmtheitsmaß zwischen prediction_col und label_col. |
| Metrikspalten – Fairness und Trend [6] | ||
| predictive_parity | doppelt | Misst, ob die beiden Gruppen für alle vorhergesagten Klassen die gleiche Genauigkeit aufweisen.
label_col ist erforderlich. |
| predictive_equality | doppelt | Misst, ob die beiden Gruppen für alle vorhergesagten Klassen die gleiche False Positive-Rate aufweisen.
label_col ist erforderlich. |
| Chancengleichheit | doppelt | Misst, ob die beiden Gruppen für alle vorhergesagten Klassen den gleichen Abruf aufweisen.
label_col ist erforderlich. |
| statistische Parität | doppelt | Misst, ob die beiden Gruppen die gleiche Akzeptanzrate aufweisen. Die Akzeptanzrate wird hier als empirische Wahrscheinlichkeit definiert, unter Berücksichtigung aller vorhergesagten Klassen als eine bestimmte Klasse vorhergesagt zu werden. |
[1] Format der Struktur für confusion_matrix, , precision, recall, f1_scoreund roc_auc_score:
| Spaltenname | Typ |
|---|---|
| Fenster | struct<start: timestamp, end: timestamp> |
| häufige Artikel | array<struct<item: string, count: bigint>> |
| confusion_matrix | struct<prediction: string, label: string, count: bigint> |
| Präzision | struct<one_vs_all: map<string,double>, macro: double, weighted: double> |
| recall (Abruf) | 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] Bei Zeitreihen- oder Rückschlussprofilen blickt das Profil 30 Tage ab dem Zeitpunkt der Erstellung des Profils zurück. Aufgrund dieses Grenzwerts kann die erste Analyse ein Teilfenster enthalten. So kann beispielsweise die 30-Tage-Grenze in die Mitte einer Woche oder eines Monats fallen. In diesem Fall ist nicht die vollständige Woche oder der vollständige Monat in der Berechnung enthalten. Dieses Problem betrifft nur das erste Fenster.
[3] Die in dieser Spalte angezeigte Version ist die Version, die zum Berechnen der Statistiken in der Zeile verwendet wurde und möglicherweise nicht die aktuelle Version des Profils ist. Jedes Mal, wenn Sie die Metriken aktualisieren, versucht das Profil, zuvor berechnete Metriken mithilfe der aktuellen Profilkonfiguration neu zu kompensieren. Die aktuelle Profilversion wird in den Profilinformationen angezeigt, die von der API und dem Python-Client zurückgegeben werden.
[4] Beispielcode zum Abrufen des 50. Perzentils: SELECT element_at(quantiles, int((size(quantiles)+1)/2)) AS p50 ... oder SELECT quantiles[500] ... .
[5] Wird nur angezeigt, wenn das Profil den Analysetyp InferenceLog hat und sowohl label_col als auch prediction_col bereitgestellt werden.
[6] Wird nur angezeigt, wenn das Profil den Analysetyp aufweist InferenceLog und problem_type ist classification.
Schema von Datendriftmetrikentabellen
Die folgende Tabelle zeigt das Schema der Datendriftmetrikentabelle. Die Datendrifttabelle wird nur generiert, wenn eine Baselinetabelle bereitgestellt wird oder wenn nach der Aggregation gemäß der angegebenen Granularität ein aufeinanderfolgendes Zeitfenster vorhanden ist. Wenn eine Metrik nicht auf eine Zeile anwendbar ist, ist die entsprechende Zelle NULL.
| Spaltenname | Typ | Beschreibung |
|---|---|---|
| Gruppierungsspalten | ||
| Fenster | struct<start: timestamp, end: timestamp> |
Zeitfenster. |
| window_cmp | struct<start: timestamp, end: timestamp> |
Vergleichsfenster für drift_type CONSECUTIVE. |
| Drift-Typ | Schnur | BASELINE oder CONSECUTIVE. Gibt an, ob die Datendriftmetriken mit dem vorhergehenden Zeitfenster oder der Baselinetabelle verglichen werden. |
| Granularität | Schnur | Fensterdauer, die durch den granularities-Parameter festgelegt wird. [7] |
| model_id_col | Schnur | Dies ist optional. Wird nur für den Analysetyp InferenceLog verwendet. |
| slice_key | Schnur | Sliceausdruck. NULL für den Standardwert, d. h. alle Daten. |
| slice_value | Schnur | Wert des Slicingausdrucks. |
| Spaltenname | Schnur | Name der Spalte in der primären Tabelle.
:table ist ein spezieller Name für Metriken, die für die gesamte Tabelle gelten, z. B. Modellgenauigkeit. |
| Datentyp | Schnur | Spark-Datentyp column_name. |
| monitor_version | bigint | Version der Überwachungskonfiguration, die zum Berechnen der Metriken in der Zeile verwendet wird. Nähere Informationen finden Sie unten unter [8]. |
| Metrikspalten – Drift | Unterschiede werden als Differenz zwischen dem aktuellen Fenster und dem Vergleichsfenster berechnet. | |
| count_delta | doppelt | Unterschied in count. |
| avg_delta | doppelt | Unterschied in avg. |
| percent_null_delta | doppelt | Unterschied in percent_null. |
| percent_zeros_delta | doppelt | Unterschied in percent_zeros. |
| percent_distinct_delta | doppelt | Unterschied in percent_distinct. |
| non_null_columns_delta | struct<added: int, missing: int> |
Anzahl von Spalten mit einer beliebigen Erhöhung oder Verringerung bei Werten ungleich NULL. |
| chi_squared_test | struct<statistic: double, pvalue: double> |
Chi-Quadrat-Test auf Datendrift in der Verteilung. Wird nur für kategorische Spalten berechnet.
null für numerische Spalten. |
| ks_test | struct<statistic: double, pvalue: double> |
KS-Test auf Datendrift in der Verteilung. Wird nur für numerische Spalten berechnet.
null für kategorisierte Spalten. |
| TV-Abstand | doppelt | Gesamtvariationsabstand für den Datendrift in der Verteilung. Wird nur für kategorische Spalten berechnet.
null für numerische Spalten. |
| l_infinity_distance | doppelt | L-Unendlichkeitsentfernung für den Datendrift in der Verteilung. Wird nur für kategorische Spalten berechnet.
null für numerische Spalten. |
| js_distance | doppelt | Jensen-Shannon-Entfernung für den Datendrift in der Verteilung. Wird nur für kategorische Spalten berechnet.
null für numerische Spalten. |
| wasserstein_distance | doppelt | Datendrift zwischen zwei numerischen Verteilungen mithilfe der Wasserstein-Entfernungsmetrik. Wird nur für numerische Spalten berechnet.
null für kategorisierte Spalten. |
| Populationsstabilitätsindex | doppelt | Metrik zum Vergleichen der Abweichung zwischen zwei numerischen Verteilungen unter Verwendung der Metrik für den Populationsstabilitätsindex. Nähere Informationen finden Sie unten unter [9]. Wird nur für numerische Spalten berechnet.
null für kategorisierte Spalten. |
[7] Bei Zeitreihen- oder Rückschlussprofilen sieht das Profil 30 Tage nach der Erstellung des Profils zurück. Aufgrund dieses Grenzwerts kann die erste Analyse ein Teilfenster enthalten. So kann beispielsweise die 30-Tage-Grenze in die Mitte einer Woche oder eines Monats fallen. In diesem Fall ist nicht die vollständige Woche oder der vollständige Monat in der Berechnung enthalten. Dieses Problem betrifft nur das erste Fenster.
[8] Die in dieser Spalte angezeigte Version ist die Version, die zum Berechnen der Statistiken in der Zeile verwendet wurde und möglicherweise nicht die aktuelle Version des Profils ist. Jedes Mal, wenn Sie die Metriken aktualisieren, versucht das Profil, zuvor berechnete Metriken mithilfe der aktuellen Profilkonfiguration neu zu kompensieren. Die aktuelle Profilversion wird in den Profilinformationen angezeigt, die von der API und dem Python-Client zurückgegeben werden.
[9] Die Ausgabe des Populationsstabilitätsindex ist ein numerischer Wert, der angibt, wie unterschiedlich zwei Verteilungen sind. Der Bereich entspricht [0, inf). PSI < 0,1 bedeutet, dass keine signifikante Änderung der Population vorliegt. PSI < 0,2 gibt eine moderate Änderung der Population an. PSI >= 0,2 zeigt eine signifikante Bevölkerungsänderung an.