Monitorování tabulek metrik
Tato stránka popisuje tabulky metrik vytvořené monitorováním Databricks Lakehouse. Informace o řídicím panelu vytvořeném monitorováním najdete v tématu Použití vygenerovaného řídicího panelu SQL.
Když se monitorování spustí v tabulce Databricks, vytvoří nebo aktualizuje dvě tabulky metrik: tabulku metrik profilu a tabulku metrik posunu.
- Tabulka metrik profilu obsahuje souhrnné statistiky pro každý sloupec a pro každou kombinaci časových intervalů, řezů a seskupování sloupců. Tabulka
InferenceLog
analýzy obsahuje také metriky přesnosti modelu. - Tabulka metrik posunu obsahuje statistiky, které sledují změny v distribuci metriky. Tabulky posunů se dají použít k vizualizaci nebo upozorňování na změny v datech místo konkrétních hodnot. Vypočítávají se následující typy odchylek:
- Po sobě jdoucí posun porovnává okno s předchozím časovým oknem. Po sobě jdoucí posun se vypočítá pouze v případě, že po sobě jdoucí časové období existuje po agregaci podle zadaných podrobností.
- Posun směrného plánu porovnává okno s rozdělením podle směrného plánu určeného tabulkou směrného plánu. Posun směrného plánu se vypočítá pouze v případě, že je k dispozici tabulka směrného plánu.
Kde se nacházejí tabulky metrik
Monitorování tabulek metrik se ukládá do {output_schema}.{table_name}_profile_metrics
a {output_schema}.{table_name}_drift_metrics
kde:
{output_schema}
je katalog a schéma určené parametremoutput_schema_name
.{table_name}
je název monitorované tabulky.
Jak se vypočítávají statistiky monitorování
Každá statistika a metrika v tabulkách metrik se počítají pro zadaný časový interval (označovaný jako "okno"). Pro Snapshot
účely analýzy je časové období jedním bodem v čase, který odpovídá času, kdy byla metrika aktualizována. Časový TimeSeries
interval a InferenceLog
analýza vychází z podrobností zadaných v create_monitor
argumentu a hodnot zadaných v timestamp_col
argumentu profile_type
.
Metriky se vždy počítají pro celou tabulku. Pokud navíc zadáte výraz řezů, metriky se počítají pro každý řez dat definovaný hodnotou výrazu.
Příklad:
slicing_exprs=["col_1", "col_2 > 10"]
generuje následující řezy: jeden pro , jeden pro col_2 > 10
col_2 <= 10
a jeden pro každou jedinečnou hodnotu v col1
.
Řezy jsou v tabulkách metrik identifikovány názvy slice_key
sloupců a slice_value
. V tomto příkladu by jeden klíč řezu byl "col_2 > 10" a odpovídající hodnoty by byly "true" a "false". Celá tabulka je ekvivalentní slice_key
hodnotě = NULL a slice_value
= NULL. Řezy jsou definované jedním klíčem řezu.
Metriky se počítají pro všechny možné skupiny definované časovými okny a průřezy klíčů a hodnot. Kromě toho se metriky pro InferenceLog
analýzu počítají pro každé ID modelu. Podrobnosti najdete v tématu Schémata sloupců pro vygenerované tabulky.
Další statistiky monitorování přesnosti modelu (InferenceLog
pouze analýza)
Další statistiky se počítají pro InferenceLog
analýzu.
- Kvalita modelu se vypočítá, pokud je k dispozici obojí
label_col
prediction_col
. - Řezy se automaticky vytvářejí na základě jedinečných
model_id_col
hodnot . - U klasifikačních modelů se pro řezy, které mají logickou hodnotu, počítají statistiky nestrannosti a předsudků.
Tabulky metrik analýzy dotazů a posunu
Tabulky metrik můžete dotazovat přímo. Následující příklad je založen na InferenceLog
analýze:
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
Schémata sloupců pro vygenerované tabulky
Pro každý sloupec v primární tabulce obsahují tabulky metrik jeden řádek pro každou kombinaci sloupců seskupení. Sloupec přidružený k jednotlivým řádkům se zobrazí ve sloupci column_name
.
Pro metriky založené na více než jednom sloupci, jako jsou metriky přesnosti modelu, column_name
je nastavena na :table
hodnotu .
Pro metriky profilu se používají následující sloupce seskupení:
- časové období
- členitost (
TimeSeries
aInferenceLog
pouze analýza) - typ protokolu – vstupní tabulka nebo směrná tabulka
- průřez – klíč a hodnota
- ID modelu (
InferenceLog
pouze analýza)
Pro metriky posunu se používají následující další sloupce seskupení:
- časové období porovnání
- typ posunu (porovnání s předchozím oknem nebo porovnáním se směrnou tabulkou)
Schémata tabulek metrik jsou uvedená níže a jsou zobrazená také v referenční dokumentaci k rozhraní API pro monitorování Databricks Lakehouse.
Schéma tabulky metrik profilu
Následující tabulka ukazuje schéma tabulky metrik profilu. Pokud se metrika nevztahuje na řádek, má odpovídající buňka hodnotu null.
Název sloupce | Typ | Popis |
---|---|---|
Seskupování sloupců | ||
okno | Struct. Viz [1] níže. | Časové období. |
zrnitost | string | Doba trvání okna nastavená podle parametru granularities . [2] |
model_id_col | string | Nepovinné. Používá se pouze pro InferenceLog typ analýzy. |
log_type | string | Tabulka použitá k výpočtu metrik SMĚRNÝ PLÁN nebo VSTUP. |
slice_key | string | Výraz řezu Hodnota NULL pro výchozí nastavení, což jsou všechna data. |
slice_value | string | Hodnota výrazu řezu |
column_name | string | Název sloupce v primární tabulce :table je speciální název pro metriky, které platí pro celou tabulku, jako je například přesnost modelu. |
data_type | string | Datový typ Sparku column_name . |
logging_table_commit_version | int | Ignore. |
monitor_version | bigint | Verze konfigurace monitorování sloužící k výpočtu metrik v řádku Podrobnosti najdete níže v části [3]. |
Sloupce metrik – souhrnná statistika | ||
count | bigint | Počet hodnot, které nejsou null. |
num_nulls | bigint | Počet hodnot null v column_name . |
prům. | double | Aritmetický průměr sloupce, který zařadí hodnoty null. |
quantiles | array<double> |
Pole 1000 kvantových hodnot. Viz [4] níže. |
distinct_count | bigint | Počet jedinečných hodnot v column_name . |
min | double | Minimální hodnota v column_name . |
max | double | Maximální hodnota v column_name . |
stddev | double | Směrodatná odchylka column_name . |
num_zeros | bigint | Počet nul v column_name . |
num_nan | bigint | Počet hodnot NaN v column_name . |
min_size | double | Minimální velikost polí nebo struktur v column_name . |
max_size | double | Maximální velikost polí nebo struktur v column_name . |
avg_size | double | Průměrná velikost polí nebo struktur v column_name . |
min_len | double | Minimální délka řetězce a binárních hodnot v column_name . |
max_len | double | Maximální délka řetězcových a binárních hodnot v column_name . |
avg_len | double | Průměrná délka řetězce a binárních hodnot v column_name . |
frequent_items | Struct. Viz [1] níže. | Nejčastěji se vyskytujících položek: 100 nejvyšších. |
non_null_columns | array<string> |
Seznam sloupců s alespoň jednou hodnotou, která není null. |
medián | double | Medián hodnoty column_name . |
percent_null | double | Procento hodnot null v column_name . |
percent_zeros | double | Procento hodnot, které jsou nula v column_name . |
percent_distinct | double | Procento hodnot, které jsou odlišné v column_name . |
Sloupce metrik – přesnost klasifikačního modelu [5] | ||
accuracy_score | double | Přesnost modelu vypočítaná jako (počet správných předpovědí / celkový počet předpovědí), ignorování hodnot null |
confusion_matrix | Struct. Viz [1] níže. | |
přesnost | Struct. Viz [1] níže. | |
úplnost | Struct. Viz [1] níže. | |
f1_score | Struct. Viz [1] níže. | |
Sloupce metrik – přesnost regresního modelu [5] | ||
mean_squared_error | double | Střední kvadratická chyba mezi prediction_col a label_col . |
root_mean_squared_error | double | Odmocnina střední kvadratická chyba mezi prediction_col a label_col . |
mean_average_error | double | Střední průměrná chyba mezi prediction_col a label_col . |
mean_absolute_percentage_error | double | Střední absolutní procentuální chyba mezi prediction_col a label_col . |
r2_score | double | R-čtvercové skóre mezi prediction_col a label_col . |
Sloupce metrik – nestrannost a předsudky [6] | ||
predictive_parity | double | Určuje, zda mají obě skupiny stejnou přesnost ve všech predikovaných třídách. label_col je povinné. |
predictive_equality | double | Určuje, zda mají obě skupiny stejnou falešně pozitivní míru napříč všemi predikovanými třídami. label_col je povinné. |
equal_opportunity | double | Určuje, zda mají obě skupiny stejnou úplnost napříč všemi predikovanými třídami. label_col je povinné. |
statistical_parity | double | Určuje, zda mají obě skupiny stejnou míru přijetí. Zde je míra přijetí definována jako empirická pravděpodobnost, která se má předpovědět jako určitá třída napříč všemi predikovanými třídami. |
[1] Formát struktury pro confusion_matrix
, precision
, recall
a f1_score
:
Název sloupce | Typ |
---|---|
okno | struct<start: timestamp, end: timestamp> |
frequent_items | array<struct<item: string, count: bigint>> |
confusion_matrix | struct<prediction: string, label: string, count: bigint> |
přesnost | struct<one_vs_all: map<string,double>, macro: double, weighted: double> |
úplnost | 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] U časových řad nebo profilů odvozování se monitor po dobu 30 dnů od vytvoření monitoru vrátí. Z tohoto důvodu může první analýza zahrnovat částečné okno. Limit 30 dnů může například spadat doprostřed týdne nebo měsíce, v takovém případě se celý týden nebo měsíc do výpočtu nezahrne. Tento problém se týká pouze prvního okna.
[3] Verze zobrazená v tomto sloupci je verze, která byla použita k výpočtu statistik v řádku a nemusí být aktuální verzí monitoru. Pokaždé, když metriky aktualizujete, se monitor pokusí překompilovat dříve počítané metriky pomocí aktuální konfigurace monitorování. Aktuální verze monitorování se zobrazí v informacích o monitorování vrácených rozhraním API a klientem Pythonu.
[4] Vzorový kód pro načtení 50. percentilu: SELECT element_at(quantiles, int((size(quantiles)+1)/2)) AS p50 ...
nebo SELECT quantiles[500] ...
.
[5] Zobrazí se pouze v případě, že monitor obsahuje InferenceLog
typ analýzy a je k dispozici.label_col
prediction_col
[6] Zobrazí se pouze v případě, že monitor obsahuje InferenceLog
typ analýzy a problem_type
je classification
.
Schéma tabulky posunu metrik
Následující tabulka ukazuje schéma tabulky metrik posunu. Tabulka posunů se generuje pouze v případě, že je zadána směrná tabulka nebo pokud po sobě jdoucí časové období existuje po agregaci podle zadaných podrobností.
Název sloupce | Typ | Popis |
---|---|---|
Seskupování sloupců | ||
okno | struct<start: timestamp, end: timestamp> |
Časové období. |
window_cmp | struct<start: timestamp, end: timestamp> |
Srovnávací okno pro drift_type CONSECUTIVE . |
drift_type | string | SMĚRNÝ PLÁN nebo PO SOBĚ JDOUCÍ. Ať už se metriky posunu porovnávají s předchozím časovým oknem nebo se směrnou tabulkou. |
zrnitost | string | Doba trvání okna nastavená podle parametru granularities . [7] |
model_id_col | string | Nepovinné. Používá se pouze pro InferenceLog typ analýzy. |
slice_key | string | Výraz řezu Hodnota NULL pro výchozí nastavení, což jsou všechna data. |
slice_value | string | Hodnota výrazu řezu |
column_name | string | Název sloupce v primární tabulce :table je speciální název pro metriky, které platí pro celou tabulku, jako je například přesnost modelu. |
data_type | string | Datový typ Sparku column_name . |
monitor_version | bigint | Verze konfigurace monitorování sloužící k výpočtu metrik v řádku Podrobnosti najdete níže v části [8]. |
Sloupce metrik – posun | Rozdíly se počítají jako aktuální okno – okno porovnání. | |
count_delta | double | Rozdíl v count . |
avg_delta | double | Rozdíl v avg . |
percent_null_delta | double | Rozdíl v percent_null . |
percent_zeros_delta | double | Rozdíl v percent_zeros . |
percent_distinct_delta | double | Rozdíl v percent_distinct . |
non_null_columns_delta | struct<added: int, missing: int> |
Počet sloupců se zvýšením nebo snížením hodnot, které nejsou null. |
chi_squared_test | struct<statistic: double, pvalue: double> |
Chí-kvadrátový test pro posun v rozdělení. |
ks_test | struct<statistic: double, pvalue: double> |
Test KS pro odchylky v distribuci Vypočítáno pouze pro číselné sloupce. |
tv_distance | double | Celková variační vzdálenost pro posun v rozdělení. |
l_infinity_distance | double | L-nekonečno vzdálenost pro posun v rozdělení. |
js_distance | double | Jensen–Shannon vzdálenost pro posun v distribuci. Vypočítáno pouze pro sloupce kategorií. |
wasserstein_distance | double | Posun mezi dvěma číselnými rozděleními pomocí metriky vzdálenosti Wasserstein. |
population_stability_index | double | Metrika pro porovnání posunu mezi dvěma číselnými rozděleními pomocí metriky indexu stability populace Podrobnosti najdete níže v části [9]. |
[7] U profilů časových řad nebo odvozování se monitor po dobu 30 dnů od vytvoření monitoru vrátí. Z tohoto důvodu může první analýza zahrnovat částečné okno. Limit 30 dnů může například spadat doprostřed týdne nebo měsíce, v takovém případě se celý týden nebo měsíc do výpočtu nezahrne. Tento problém se týká pouze prvního okna.
[8] Verze zobrazená v tomto sloupci je verze, která byla použita k výpočtu statistik v řádku a nemusí být aktuální verzí monitoru. Pokaždé, když metriky aktualizujete, se monitor pokusí překompilovat dříve počítané metriky pomocí aktuální konfigurace monitorování. Aktuální verze monitorování se zobrazí v informacích o monitorování vrácených rozhraním API a klientem Pythonu.
[9] Výstup indexu stability populace je číselná hodnota, která představuje, jak se liší dvě rozdělení. Rozsah je [0, inf). PSI < 0.1 znamená, že nedošlo k významné změně populace. PSI < 0.2 označuje střední změnu populace. PSI >= 0,2 označuje významnou změnu populace.