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 na tabeli Databricks, tworzy lub aktualizuje dwie tabele metryk: metryk profilu i metryk dryfu.

  • Tabela metryk profilu zawiera podsumowanie statystyk dla każdej kolumny i dla każdej kombinacji przedziału czasu, wycinka i grupowania kolumn. W przypadku analizy InferenceLog 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 powiadamiania o zmianach w danych, a nie określonych wartości. Obliczane są następujące typy dryfu:
    • Kolejny dryf porównuje okno czasowe z poprzednim. Konsekutywny dryf jest obliczany tylko wtedy, gdy istnieje kolejne okno czasowe po agregacji zgodnie z określonymi granulacjami.
    • Dryf linii bazowej porównuje okno z rozkładem linii bazowej określonym przez tabelę linii bazowej. Dryf linii bazowej jest obliczany tylko wtedy, gdy zostanie podana tabela linii bazowej.

Gdzie znajdują się tabele metryk

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

  • {output_schema} jest wykazem i schematem określonym przez output_schema_name.
  • {table_name} jest nazwą 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 analizy Snapshot przedział czasu jest pojedynczym punktem w czasie odpowiadającym czasowi odświeżenia metryki. W przypadku analizy TimeSeries i InferenceLog przedział czasu jest oparty na stopniach szczegółowości określonych w create_monitor i wartościach w timestamp_col określonych w 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 kolumn slice_key i slice_value. W tym przykładzie jeden klucz segmentu to „col_2 > 10”, a odpowiednie wartości to „true” i „false”. Cała tabela odpowiada 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 oraz klucze i wartości segmentów. Ponadto w przypadku analizy InferenceLog 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 odrębnych 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 metryk związanych z dryfem

Możesz bezpośrednio zapytać tabele metryk. 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 wartość :table.

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
  • typ dryfu (porównanie z poprzednim oknem lub porównanie z tabelą odniesienia)

Schematy tabel metryk przedstawiono poniżej, a także przedstawiono 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 przez parametr granularities. [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 jest specjalną nazwą metryk, które mają zastosowanie do całej tabeli, na przykład dokładności 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 zbiorcze
count bigint Liczba wartości innych niż null.
num_nulls bigint Liczba wartości null w column_name.
średnio double Średnia arytmetyczna kolumny, ignorując wartości puste.
kwantyle array<double> Tablica 1000 kwantyli. Zobacz [4] poniżej.
distinct_count bigint Liczba unikatowych wartości w 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 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 column_name.
max_len double Maksymalna długość ciągu i wartości binarnych w column_name.
avg_len double Średnia długość ciągu i wartości binarnych w 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 column_name.
percent_zeros double Procent wartości, które są zerowe w column_name.
percent_distinct double Procent unikatowych wartości w 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 metryczne — 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 Metryki — 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 Type
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 przycięcie, pierwsza analiza może obejmować częściowy zakres danych. 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 układ tabeli metryk dryfu. Tabela dryfu jest generowana tylko wtedy, gdy jest podana tabela odniesienia lub gdy po agregacji istnieje kolejny przedział czasu zgodnie z określoną 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 przez parametr granularities. [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 jest specjalną nazwą metryk, które mają zastosowanie do całej tabeli, na przykład dokładności 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 wskaźników - odchylenie Różnice są obliczane jako bieżące okno — okno porównawcze.
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 przycięcie, pierwsza analiza może obejmować częściowy zakres danych. 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.