Udostępnij za pośrednictwem


Monitorowanie tabel metryk

Na tej stronie opisano tabele metryk utworzone przez usługę Databricks Lakehouse Monitoring. Aby uzyskać informacje o pulpicie nawigacyjnym utworzonym przez monitor, zobacz Korzystanie z wygenerowanego pulpitu nawigacyjnego SQL.

Gdy monitor jest uruchamiany w tabeli usługi Databricks, tworzy lub aktualizuje dwie tabele metryk: tabelę metryk profilu i tabelę metryk dryfu.

  • Tabela metryk profilu zawiera podsumowanie statystyk dla każdej kolumny i dla każdej kombinacji przedziału czasu, wycinka i grupowania kolumn. Na potrzeby InferenceLog analizy tabela analizy zawiera również metryki dokładności modelu.
  • Tabela metryk dryfu zawiera statystyki śledzące zmiany rozkładu dla metryki. Tabele dryfu mogą służyć do wizualizacji lub zgłaszania alertów dotyczących zmian w danych zamiast określonych wartości. Obliczane są następujące typy dryfu:
    • Kolejne dryfy porównuje okno z poprzednim oknem czasu. Kolejna dryf jest obliczana tylko wtedy, gdy kolejne przedziały czasu istnieją po agregacji zgodnie z określonymi stopniami szczegółowości.
    • Dryf linii bazowej porównuje okno z rozkładem odniesienia określonym przez tabelę odniesienia. Dryf wg planu bazowego jest obliczany tylko wtedy, gdy zostanie podana tabela odniesienia.

Gdzie znajdują się tabele metryk

Tabele metryk monitora są zapisywane w systemach {output_schema}.{table_name}_profile_metrics i {output_schema}.{table_name}_drift_metrics, gdzie:

  • {output_schema} to wykaz i schemat określony przez output_schema_name.
  • {table_name} to nazwa monitorowanej tabeli.

Jak są obliczane statystyki monitorowania

Każda statystyka i metryka w tabelach metryk są obliczane dla określonego interwału czasu (nazywanego "oknem"). W przypadku Snapshot analizy przedział czasu jest pojedynczym punktem w czasie odpowiadającym czasowi odświeżenia metryki. W przypadku TimeSeries i InferenceLog analizy przedział czasu jest oparty na stopniach szczegółowości określonych w create_monitor i wartościach określonych w timestamp_col argumencie profile_type .

Metryki są zawsze obliczane dla całej tabeli. Ponadto w przypadku podania wyrażenia fragmentowania metryki są obliczane dla każdego wycinka danych zdefiniowanego przez wartość wyrażenia.

Na przykład:

slicing_exprs=["col_1", "col_2 > 10"]

Generuje następujące wycinki: jeden dla , jeden dla col_2 > 10col_2 <= 10, i jeden dla każdej unikatowej wartości w .col1

Wycinki są identyfikowane w tabelach metryk według nazw slice_key kolumn i slice_value. W tym przykładzie jeden klucz wycinka to "col_2 > 10", a odpowiednie wartości to "true" i "false". Cała tabela jest równoważna wartościom slice_key = NULL i slice_value = NULL. Wycinki są definiowane przez pojedynczy klucz wycinka.

Metryki są obliczane dla wszystkich możliwych grup zdefiniowanych przez okna czasowe i klucze i wartości fragmentów. Ponadto na potrzeby InferenceLog analizy metryki są obliczane dla każdego identyfikatora modelu. Aby uzyskać szczegółowe informacje, zobacz Schematy kolumn dla wygenerowanych tabel.

Dodatkowe statystyki dotyczące monitorowania dokładności modelu (InferenceLog tylko analiza)

Dodatkowe statystyki są obliczane na potrzeby InferenceLog analizy.

  • Jakość modelu jest obliczana, jeśli są dostępne zarówno, label_col jak i prediction_col .
  • Wycinki są tworzone automatycznie na podstawie unikatowych wartości .model_id_col
  • W przypadku modeli klasyfikacji statystyki sprawiedliwości i stronniczości są obliczane dla wycinków, które mają wartość logiczną.

Tabele metryk analizy zapytań i dryfu

Tabele metryk można wysyłać bezpośrednio do zapytań. Poniższy przykład opiera się na InferenceLog analizie:

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

Schematy kolumn dla wygenerowanych tabel

Dla każdej kolumny w tabeli podstawowej tabele metryk zawierają jeden wiersz dla każdej kombinacji kolumn grupowania. Kolumna skojarzona z każdym wierszem jest wyświetlana w kolumnie column_name.

W przypadku metryk opartych na więcej niż jednej kolumnie, takiej jak metryki dokładności modelu, column_name jest ustawiona na :tablewartość .

W przypadku metryk profilu są używane następujące kolumny grupowania:

  • przedział czasu
  • stopień szczegółowości (TimeSeries i InferenceLog tylko analiza)
  • typ dziennika — tabela wejściowa lub tabela bazowa
  • fragmentator klucza i wartości
  • identyfikator modelu (InferenceLog tylko analiza)

W przypadku metryk dryfu są używane następujące dodatkowe kolumny grupowania:

  • przedział czasu porównania
  • dryf typ (porównanie z poprzednim oknem lub porównaniem z tabelą odniesienia)

Schematy tabel metryk przedstawiono poniżej i są również wyświetlane w dokumentacji referencyjnej interfejsu API monitorowania usługi Databricks Lakehouse.

Schemat tabeli metryk profilu

W poniższej tabeli przedstawiono schemat tabeli metryk profilu. Jeśli metryka nie ma zastosowania do wiersza, odpowiednia komórka ma wartość null.

Nazwa kolumny Type Opis
Grupowanie kolumn
okno Struct. Zobacz [1] poniżej. Przedział czasu.
ziarnistość string Czas trwania okna, ustawiony według granularities parametru. [2]
model_id_col string Opcjonalny. Używane tylko dla InferenceLog typu analizy.
log_type string Tabela używana do obliczania metryk. PUNKT ODNIESIENIA lub DANE WEJŚCIOWE.
slice_key string Wyrażenie fragmentatora. Wartość NULL dla wartości domyślnej, czyli wszystkie dane.
slice_value string Wartość wyrażenia fragmentowania.
column_name string Nazwa kolumny w tabeli podstawowej. :table to specjalna nazwa metryk, które mają zastosowanie do całej tabeli, na przykład dokładność modelu.
data_type string Typ danych platformy Spark .column_name
logging_table_commit_version int Ignore.
monitor_version bigint Wersja konfiguracji monitora używana do obliczania metryk w wierszu. Aby uzyskać szczegółowe informacje, zobacz [3] poniżej.
Kolumny metryk — statystyki podsumowania
count bigint Liczba wartości innych niż null.
num_nulls bigint Liczba wartości null w elem.column_name
średnio double Średnia arytmetyczna kolumny, wywłaszając wartości null.
kwantyle array<double> Tablica 1000 kwantyli. Zobacz [4] poniżej.
distinct_count bigint Liczba unikatowych wartości w elem column_name.
min double Wartość minimalna w pliku column_name.
max double Wartość maksymalna w pliku column_name.
stddev double Odchylenie standardowe .column_name
num_zeros bigint Liczba zer w elem column_name.
num_nan bigint Liczba wartości NaN w elem.column_name
min_size double Minimalny rozmiar tablic lub struktur w obiekcie column_name.
max_size double Maksymalny rozmiar tablic lub struktur w obiekcie column_name.
avg_size double Średni rozmiar tablic lub struktur w obiekcie column_name.
min_len double Minimalna długość ciągu i wartości binarnych w pliku column_name.
max_len double Maksymalna długość ciągu i wartości binarnych w pliku column_name.
avg_len double Średnia długość ciągu i wartości binarnych w pliku column_name.
frequent_items Struct. Zobacz [1] poniżej. 100 najczęściej występujących elementów.
non_null_columns array<string> Lista kolumn z co najmniej jedną wartością inną niż null.
mediana double Mediana wartości column_name.
percent_null double Procent wartości null w elem column_name.
percent_zeros double Procent wartości, które są zerowe w .column_name
percent_distinct double Procent unikatowych wartości w elem column_name.
Kolumny metryk — dokładność modelu klasyfikacji [5]
accuracy_score double Dokładność modelu obliczana jako (liczba poprawnych przewidywań / łączna liczba przewidywań), ignorując wartości null.
confusion_matrix Struct. Zobacz [1] poniżej.
precyzja Struct. Zobacz [1] poniżej.
trafność Struct. Zobacz [1] poniżej.
f1_score Struct. Zobacz [1] poniżej.
Kolumny metryk — dokładność modelu regresji [5]
mean_squared_error double Błąd średniokwadratowy między prediction_col i label_col.
root_mean_squared_error double Błąd średniokwadratowy od prediction_col do label_col.
mean_average_error double Średni błąd między prediction_col i label_col.
mean_absolute_percentage_error double Średni bezwzględny błąd procentowy między prediction_col i label_col.
r2_score double Wynik z kwadratem R między prediction_col i label_col.
Kolumny metryk — sprawiedliwość i stronniczość [6]
predictive_parity double Mierzy, czy obie grupy mają równą precyzję we wszystkich przewidywanych klasach. Ciąg label_col jest wymagany.
predictive_equality double Mierzy, czy obie grupy mają równe fałszywie dodatnie współczynniki we wszystkich przewidywanych klasach. Ciąg label_col jest wymagany.
equal_opportunity double Mierzy, czy obie grupy mają równą kompletność we wszystkich przewidywanych klasach. Ciąg label_col jest wymagany.
statistical_parity double Mierzy, czy obie grupy mają równy współczynnik akceptacji. W tym miejscu współczynnik akceptacji jest definiowany jako prawdopodobieństwo empiryczne, które ma być przewidywane jako określona klasa we wszystkich przewidywanych klasach.

[1] Format struktury dla confusion_matrix, precision, recalli f1_score:

Nazwa kolumny Typ
okno struct<start: timestamp, end: timestamp>
frequent_items array<struct<item: string, count: bigint>>
confusion_matrix struct<prediction: string, label: string, count: bigint>
precyzja struct<one_vs_all: map<string,double>, macro: double, weighted: double>
trafność struct<one_vs_all: map<string,double>, macro: double, weighted: double>
f1_score struct<one_vs_all: map<string,double>, macro: double, weighted: double>

[2] W przypadku profilów szeregów czasowych lub wnioskowania monitor patrzy wstecz 30 dni od momentu utworzenia monitora. Ze względu na to odcięcie pierwsza analiza może zawierać częściowe okno. Na przykład limit 30 dni może spaść w środku tygodnia lub miesiąca, w tym przypadku pełny tydzień lub miesiąc nie jest uwzględniony w obliczeniu. Ten problem dotyczy tylko pierwszego okna.

[3] Wersja wyświetlana w tej kolumnie to wersja użyta do obliczenia statystyk w wierszu i może nie być bieżącą wersją monitora. Za każdym razem, gdy odświeżasz metryki, monitor próbuje ponownie skompilować wcześniej obliczone metryki przy użyciu bieżącej konfiguracji monitora. Bieżąca wersja monitora jest wyświetlana w informacjach monitora zwracanych przez interfejs API i klienta języka Python.

[4] Przykładowy kod pobierania 50. percentyla: SELECT element_at(quantiles, int((size(quantiles)+1)/2)) AS p50 ... lub SELECT quantiles[500] ... .

[5] Wyświetlane tylko wtedy, gdy monitor ma InferenceLog typ analizy i są label_col udostępniane.prediction_col

[6] Wyświetlane tylko wtedy, gdy monitor ma InferenceLog typ analizy i problem_type ma wartość classification.

Schemat tabeli metryk dryfu

W poniższej tabeli przedstawiono schemat tabeli metryk dryfu. Tabela dryfu jest generowana tylko wtedy, gdy jest podana tabela odniesienia lub gdy istnieje kolejne przedziały czasu po agregacji zgodnie z określonymi poziomami szczegółowości.

Nazwa kolumny Type Opis
Grupowanie kolumn
okno struct<start: timestamp, end: timestamp> Przedział czasu.
window_cmp struct<start: timestamp, end: timestamp> Okno porównania dla drift_type CONSECUTIVE.
drift_type string PUNKT ODNIESIENIA lub KOLEJNA. Niezależnie od tego, czy metryki dryfu są porównywane z poprzednim przedziałem czasu, czy z tabelą odniesienia.
ziarnistość string Czas trwania okna, ustawiony według granularities parametru. [7]
model_id_col string Opcjonalny. Używane tylko dla InferenceLog typu analizy.
slice_key string Wyrażenie fragmentatora. Wartość NULL dla wartości domyślnej, czyli wszystkie dane.
slice_value string Wartość wyrażenia fragmentowania.
column_name string Nazwa kolumny w tabeli podstawowej. :table to specjalna nazwa metryk, które mają zastosowanie do całej tabeli, na przykład dokładność modelu.
data_type string Typ danych platformy Spark .column_name
monitor_version bigint Wersja konfiguracji monitora używana do obliczania metryk w wierszu. Aby uzyskać szczegółowe informacje, zobacz [8] poniżej.
Kolumny metryk — dryf Różnice są obliczane jako bieżące okno — okno porównania.
count_delta double Różnica w elem.count
avg_delta double Różnica w elem.avg
percent_null_delta double Różnica w elem.percent_null
percent_zeros_delta double Różnica w elem.percent_zeros
percent_distinct_delta double Różnica w elem.percent_distinct
non_null_columns_delta struct<added: int, missing: int> Liczba kolumn ze wzrostem lub zmniejszeniem wartości innych niż null.
chi_squared_test struct<statistic: double, pvalue: double> Test chi-kwadrat pod kątem dryfu w dystrybucji.
ks_test struct<statistic: double, pvalue: double> Test KS pod kątem dryfu w dystrybucji. Obliczane tylko dla kolumn liczbowych.
tv_distance double Całkowita odległość odchylenia dla dryfu w rozkładie.
l_infinity_distance double Odległość L-nieskończoność dla dryfu w rozkładie.
js_distance double Jensen–Shannon odległość dryfu w dystrybucji. Obliczane tylko dla kolumn kategorii.
wasserstein_distance double Dryf między dwoma rozkładami liczbowymi przy użyciu metryki odległości Wassersteina.
population_stability_index double Metryka do porównywania dryfu między dwoma rozkładami liczbowymi przy użyciu metryki indeksu stabilności populacji. Aby uzyskać szczegółowe informacje, zobacz [9] poniżej.

[7] W przypadku profilów szeregów czasowych lub wnioskowania monitor patrzy wstecz 30 dni od momentu utworzenia monitora. Ze względu na to odcięcie pierwsza analiza może zawierać częściowe okno. Na przykład limit 30 dni może spaść w środku tygodnia lub miesiąca, w tym przypadku pełny tydzień lub miesiąc nie jest uwzględniony w obliczeniu. Ten problem dotyczy tylko pierwszego okna.

[8] Wersja wyświetlana w tej kolumnie jest wersją, która została użyta do obliczenia statystyk w wierszu i może nie być bieżącą wersją monitora. Za każdym razem, gdy odświeżasz metryki, monitor próbuje ponownie skompilować wcześniej obliczone metryki przy użyciu bieżącej konfiguracji monitora. Bieżąca wersja monitora jest wyświetlana w informacjach monitora zwracanych przez interfejs API i klienta języka Python.

[9] Dane wyjściowe indeksu stabilności populacji to wartość liczbowa reprezentująca sposób, w jaki różnią się dwa rozkłady. Zakres to [0, inf). PSI < 0.1 nie oznacza znaczącej zmiany populacji. PSI < 0.2 wskazuje umiarkowaną zmianę populacji. PSI >= 0,2 wskazuje znaczną zmianę populacji.