Freigeben über


Metriktabellen zur Datenprofilerstellung

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 von output_schema_name angegeben 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_col als auch prediction_col angegeben 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- und InferenceLog-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:
Formel der Genauigkeit.
NULL-Werte werden ignoriert.
log_loss doppelt Protokollverlust für Klassifizierungsprobleme, berechnet als:
Log-Loss-Gleichung.
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.