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 przezoutput_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 > 10
col_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 iprediction_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
iInferenceLog
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
, recall
i 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.