Sdílet prostřednictvím


Monitorování tabulek metrik

Důležité

Tato funkce je ve verzi Public Preview.

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_metricskde:

  • {output_schema} je katalog a schéma určené parametrem output_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 > 10col_2 <= 10a 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_colprediction_col .
  • Řezy se automaticky vytvářejí na základě jedinečných model_id_colhodnot .
  • 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 :tablehodnotu .

Pro metriky profilu se používají následující sloupce seskupení:

  • časové období
  • členitost (TimeSeries a InferenceLog 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í.
Rozlišovací schopnost 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, recalla 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_colprediction_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.
Rozlišovací schopnost 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.