Sdílet prostřednictvím


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_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 Struktura. Viz [1] níže. Časové období.
zrnitost řetězec Doba trvání okna nastavená podle parametru granularities . [2]
model_id_col řetězec Nepovinné. Používá se pouze pro InferenceLog typ analýzy.
typ záznamu řetězec Tabulka použitá k výpočtu metrik SMĚRNÝ PLÁN nebo VSTUP.
klíč řezu řetězec Výraz řezu Hodnota NULL pro výchozí nastavení, což jsou všechna data.
slice_value řetězec Hodnota výrazu řezu
název sloupce řetězec 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.
typ dat řetězec Datový typ Sparku column_name.
verze potvrzení protokolovací tabulky int (integer) Ignorujte.
verze monitoru 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
počítat bigint Počet hodnot, které nejsou null.
num_nulls bigint Počet hodnot null v column_name.
prům. dvojitý Aritmetický průměr sloupce, který zařadí hodnoty null.
kvantily array<double> Pole 1000 kvantových hodnot. Viz [4] níže.
jedinečný_počet bigint Přibližný počet jedinečných hodnot v column_name. Tato funkce používá approx_count_distinct funkci, takže výsledek nemusí být přesný.
minuta dvojitý Minimální hodnota v column_name.
maximálně dvojitý Maximální hodnota v column_name.
Verze STDDEV dvojitý Směrodatná odchylka column_name.
num_zeros bigint Počet nul v column_name.
num_nan bigint Počet hodnot NaN v column_name.
minimální velikost dvojitý Minimální velikost polí nebo struktur v column_name.
maximální_velikost dvojitý Maximální velikost polí nebo struktur v column_name.
průměrná velikost dvojitý Průměrná velikost polí nebo struktur v column_name.
min_len dvojitý Minimální délka řetězce a binárních hodnot v column_name.
max_length dvojitý Maximální délka řetězcových a binárních hodnot v column_name.
avg_len dvojitý Průměrná délka řetězce a binárních hodnot v column_name.
časté položky Struktura. 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 dvojitý Medián hodnoty column_name.
procento_null dvojitý Procento hodnot null v column_name.
procenta nul dvojitý Procento hodnot, které jsou nula v column_name.
procento_rozlišeno dvojitý Procento hodnot, které jsou odlišné v column_name.
Sloupce metrik – přesnost klasifikačního modelu [5]
skóre přesnosti dvojitý Přesnost modelu vypočítaná jako (počet správných předpovědí / celkový počet předpovědí), ignorování hodnot null
matice záměn Struktura. Viz [1] níže.
přesnost Struktura. Viz [1] níže.
úplnost Struktura. Viz [1] níže.
f1 skóre Struktura. Viz [1] níže.
Sloupce metrik – přesnost regresního modelu [5]
střední kvadratická chyba dvojitý Střední kvadratická chyba mezi prediction_col a label_col.
Chyba odmocniny střední kvadratické hodnoty dvojitý Odmocnina střední kvadratická chyba mezi prediction_col a label_col.
průměrná střední chyba dvojitý Střední průměrná chyba mezi prediction_col a label_col.
průměrná absolutní procentuální chyba dvojitý Střední absolutní procentuální chyba mezi prediction_col a label_col.
r2_score dvojitý R-čtvercové skóre mezi prediction_col a label_col.
Sloupce metrik – nestrannost a předsudky [6]
prediktivní parita dvojitý Určuje, zda mají obě skupiny stejnou přesnost ve všech predikovaných třídách. label_col je povinné.
předpovědní rovnost dvojitý Určuje, zda mají obě skupiny stejnou falešně pozitivní míru napříč všemi predikovanými třídami. label_col je povinné.
rovné příležitosti dvojitý Určuje, zda mají obě skupiny stejnou úplnost napříč všemi predikovanými třídami. label_col je povinné.
statistická parita dvojitý 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>
časté položky array<struct<item: string, count: bigint>>
matice záměn 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 skóre 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.
typ driftu řetězec 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 řetězec Doba trvání okna nastavená podle parametru granularities . [7]
model_id_col řetězec Nepovinné. Používá se pouze pro InferenceLog typ analýzy.
klíč řezu řetězec Výraz řezu Hodnota NULL pro výchozí nastavení, což jsou všechna data.
hodnota_řezu řetězec Hodnota výrazu řezu
název sloupce řetězec 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.
typ dat řetězec Datový typ Sparku column_name.
verze monitoru 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 dvojitý Rozdíl v count.
avg_delta dvojitý Rozdíl v avg.
percent_null_delta dvojitý Rozdíl v percent_null.
delta_procent_nul dvojitý Rozdíl v percent_zeros.
procent_distinkt_delta dvojitý 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.
vzdálenost od televize dvojitý Celková variační vzdálenost pro posun v rozdělení.
vzdálenost l_nekonečno dvojitý L-nekonečno vzdálenost pro posun v rozdělení.
js_distance dvojitý Jensen–Shannon vzdálenost pro posun v distribuci. Vypočítáno pouze pro sloupce kategorií.
Wassersteinova vzdálenost dvojitý Posun mezi dvěma číselnými rozděleními pomocí metriky vzdálenosti Wasserstein.
population_stability_index dvojitý 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.