Metrische tabellen bewaken
Op deze pagina worden de metrische tabellen beschreven die zijn gemaakt door Databricks Lakehouse Monitoring. Zie Het gegenereerde SQL-dashboard gebruiken voor informatie over het dashboard dat door een monitor is gemaakt.
Wanneer een monitor wordt uitgevoerd op een Databricks-tabel, worden er twee metrische tabellen gemaakt of bijgewerkt: een tabel met metrische gegevens van een profiel en een tabel met metrische driftgegevens.
- De tabel met metrische gegevens van het profiel bevat samenvattingsstatistieken voor elke kolom en voor elke combinatie van tijdvensters, segmenten en groeperingskolommen. Voor
InferenceLog
analyse bevat de analysetabel ook metrische gegevens over modelnauwkeurigheid. - De tabel met metrische driftgegevens bevat statistieken waarmee wijzigingen in de distributie voor een metrische waarde worden bijgehouden. Drifttabellen kunnen worden gebruikt om wijzigingen in de gegevens te visualiseren of te waarschuwen in plaats van specifieke waarden. De volgende typen drift worden berekend:
- Opeenvolgende drift vergelijkt een venster met het vorige tijdvenster. Opeenvolgende drift wordt alleen berekend als er een opeenvolgend tijdvenster bestaat na aggregatie volgens de opgegeven granulariteiten.
- Basislijndrift vergelijkt een venster met de basislijnverdeling die wordt bepaald door de basislijntabel. Basislijndrift wordt alleen berekend als er een basislijntabel wordt opgegeven.
Waar metrische tabellen zich bevinden
Metrische tabellen bewaken worden opgeslagen in {output_schema}.{table_name}_profile_metrics
en {output_schema}.{table_name}_drift_metrics
, waarbij:
{output_schema}
is de catalogus en het schema dat is opgegeven dooroutput_schema_name
.{table_name}
is de naam van de tabel die wordt bewaakt.
Hoe bewakingsstatistieken worden berekend
Elke statistiek en metrische gegevens in de metrische tabellen worden berekend voor een opgegeven tijdsinterval (een 'venster' genoemd). Voor Snapshot
analyse is het tijdvenster een enkel tijdstip dat overeenkomt met het tijdstip waarop de metrische waarde is vernieuwd. Voor TimeSeries
en InferenceLog
analyse is het tijdvenster gebaseerd op de granulariteiten die zijn opgegeven in create_monitor
en de waarden in de timestamp_col
opgegeven in het profile_type
argument.
Metrische gegevens worden altijd berekend voor de hele tabel. Als u bovendien een segmentexpressie opgeeft, worden metrische gegevens berekend voor elk gegevenssegment dat is gedefinieerd door een waarde van de expressie.
Voorbeeld:
slicing_exprs=["col_1", "col_2 > 10"]
genereert de volgende segmenten: één voor col_2 > 10
, één voor col_2 <= 10
en één voor elke unieke waarde in col1
.
Segmenten worden geïdentificeerd in de metrische tabellen door de kolomnamen slice_key
en slice_value
. In dit voorbeeld is één slicesleutel 'col_2 > 10' en zijn de bijbehorende waarden 'true' en 'false'. De hele tabel is gelijk aan slice_key
= NULL en slice_value
= NULL. Segmenten worden gedefinieerd door één slicesleutel.
Metrische gegevens worden berekend voor alle mogelijke groepen die zijn gedefinieerd door de tijdvensters en segmentsleutels en -waarden. Daarnaast InferenceLog
worden voor analyse metrische gegevens berekend voor elke model-id. Zie Kolomschema's voor gegenereerde tabellen voor meer informatie.
Aanvullende statistieken voor bewaking van modelnauwkeurigheid (InferenceLog
alleen analyse)
Aanvullende statistieken worden berekend voor InferenceLog
analyse.
- Modelkwaliteit wordt berekend als beide
label_col
enprediction_col
worden opgegeven. - Segmenten worden automatisch gemaakt op basis van de afzonderlijke waarden van
model_id_col
. - Voor classificatiemodellen worden fairness- en bias-statistieken berekend voor segmenten met een Booleaanse waarde.
Tabellen met metrische gegevens voor queryanalyse en drift
U kunt rechtstreeks een query uitvoeren op de tabellen met metrische gegevens. Het volgende voorbeeld is gebaseerd op InferenceLog
analyse:
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
Kolomschema's voor gegenereerde tabellen
Voor elke kolom in de primaire tabel bevatten de metrische tabellen één rij voor elke combinatie van groeperingskolommen. De kolom die aan elke rij is gekoppeld, wordt weergegeven in de kolom column_name
.
Voor metrische gegevens op basis van meer dan één kolom, zoals metrische gegevens voor modelnauwkeurigheid, column_name
is ingesteld op :table
.
Voor metrische profielgegevens worden de volgende groeperingskolommen gebruikt:
- tijdvenster
- granulariteit (
TimeSeries
enInferenceLog
alleen analyse) - logboektype - invoertabel of basislijntabel
- slicesleutel en -waarde
- model-id (
InferenceLog
alleen analyse)
Voor metrische driftgegevens worden de volgende extra groeperingskolommen gebruikt:
- vergelijkingstijdvenster
- drifttype (vergelijking met vorige venster of vergelijking met basislijntabel)
De schema's van de metrische tabellen worden hieronder weergegeven en worden ook weergegeven in de naslagdocumentatie voor de Databricks Lakehouse Monitoring-API.
Schema voor tabel met metrische gegevens van profiel
In de volgende tabel ziet u het schema van de tabel met metrische gegevens van het profiel. Als een metrische waarde niet van toepassing is op een rij, is de bijbehorende cel null.
Kolomnaam | Type | Description |
---|---|---|
Kolommen groeperen | ||
venster | Struct. Zie [1] hieronder. | Tijdvenster. |
Granulariteit | tekenreeks | Duur van het venster, ingesteld op granularities parameter. [2] |
model_id_col | tekenreeks | Optioneel. Alleen gebruikt voor InferenceLog het analysetype. |
log_type | tekenreeks | Tabel die wordt gebruikt om metrische gegevens te berekenen. BASISLIJN OF INVOER. |
slice_key | tekenreeks | Slice-expressie. NULL voor standaardwaarde, dit zijn alle gegevens. |
slice_value | tekenreeks | De waarde van de segmenteringsexpressie. |
column_name | tekenreeks | Naam van kolom in primaire tabel. :table is een speciale naam voor metrische gegevens die van toepassing zijn op de hele tabel, zoals modelnauwkeurigheid. |
data_type | tekenreeks | Spark-gegevenstype van column_name . |
logging_table_commit_version | int | Ignore. |
monitor_version | bigint | Versie van de monitorconfiguratie die wordt gebruikt om de metrische gegevens in de rij te berekenen. Zie [3] hieronder voor meer informatie. |
Kolommen met metrische gegevens - overzichtsstatistieken | ||
aantal | bigint | Aantal niet-null-waarden. |
num_nulls | bigint | Aantal null-waarden in column_name . |
gemiddeld | dubbel | Rekenkundig gemiddelde van de kolom, waarbij null-waarden worden gegord. |
kwantielen | array<double> |
Matrix van 1000 kwantielen. Zie [4] hieronder. |
distinct_count | bigint | Aantal afzonderlijke waarden in column_name . |
min. | dubbel | Minimumwaarde in column_name . |
max | dubbel | Maximumwaarde in column_name . |
stddev | dubbel | Standaarddeviatie van column_name . |
num_zeros | bigint | Aantal nullen in column_name . |
num_nan | bigint | Aantal NaN-waarden in column_name . |
min_size | dubbel | Minimale grootte van matrices of structuren in column_name . |
max_size | dubbel | Maximale grootte van matrices of structuren in column_name . |
avg_size | dubbel | Gemiddelde grootte van matrices of structuren in column_name . |
min_len | dubbel | Minimale lengte van tekenreeks- en binaire waarden in column_name . |
max_len | dubbel | Maximale lengte van tekenreeks- en binaire waarden in column_name . |
avg_len | dubbel | Gemiddelde lengte van tekenreeks- en binaire waarden in column_name . |
frequent_items | Struct. Zie [1] hieronder. | Top 100 meest voorkomende items. |
non_null_columns | array<string> |
Lijst met kolommen met ten minste één niet-null-waarde. |
mediaan | dubbel | Mediaanwaarde van column_name . |
percent_null | dubbel | Percentage null-waarden in column_name . |
percent_zeros | dubbel | Percentage waarden dat nul is.column_name |
percent_distinct | dubbel | Percentage waarden dat uniek is in column_name . |
Kolommen met metrische gegevens - nauwkeurigheid van classificatiemodel [5] | ||
accuracy_score | dubbel | Nauwkeurigheid van het model, berekend als (aantal juiste voorspellingen/totale aantal voorspellingen), waarbij null-waarden worden genegeerd. |
confusion_matrix | Struct. Zie [1] hieronder. | |
precisie | Struct. Zie [1] hieronder. | |
relevante overeenkomsten | Struct. Zie [1] hieronder. | |
f1_score | Struct. Zie [1] hieronder. | |
Kolommen met metrische gegevens - nauwkeurigheid van regressiemodel [5] | ||
mean_squared_error | dubbel | Gemiddelde kwadratische fout tussen prediction_col en label_col . |
root_mean_squared_error | dubbel | Wortel gemiddelde kwadratische fout tussen prediction_col en label_col . |
mean_average_error | dubbel | Gemiddelde fout tussen prediction_col en label_col . |
mean_absolute_percentage_error | dubbel | Gemiddelde absolute percentagefout tussen prediction_col en label_col . |
r2_score | dubbel | R-kwadraatscore tussen prediction_col en label_col . |
Kolommen met metrische gegevens - redelijkheid en vooroordelen [6] | ||
predictive_parity | dubbel | Meet of de twee groepen gelijke precisie hebben voor alle voorspelde klassen. label_col is vereist. |
predictive_equality | dubbel | Metingen of de twee groepen een gelijk aantal fout-positieven hebben voor alle voorspelde klassen. label_col is vereist. |
equal_opportunity | dubbel | Metingen of de twee groepen gelijke overeenkomsten hebben voor alle voorspelde klassen. label_col is vereist. |
statistical_parity | dubbel | Metingen of de twee groepen een gelijke acceptatiesnelheid hebben. Acceptatiepercentage hier wordt gedefinieerd als de empirische waarschijnlijkheid die moet worden voorspeld als een bepaalde klasse, in alle voorspelde klassen. |
[1] Indeling van struct voor confusion_matrix
, precision
en recall
f1_score
:
Kolomnaam | Type |
---|---|
venster | struct<start: timestamp, end: timestamp> |
frequent_items | array<struct<item: string, count: bigint>> |
confusion_matrix | struct<prediction: string, label: string, count: bigint> |
precisie | struct<one_vs_all: map<string,double>, macro: double, weighted: double> |
relevante overeenkomsten | 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] Voor tijdreeks- of deductieprofielen kijkt de monitor 30 dagen terug vanaf het moment dat de monitor wordt gemaakt. Vanwege deze cut-off kan de eerste analyse een gedeeltelijk venster bevatten. De limiet van 30 dagen kan bijvoorbeeld midden in een week of maand vallen, in welk geval de volledige week of maand niet is opgenomen in de berekening. Dit probleem is alleen van invloed op het eerste venster.
[3] De versie die in deze kolom wordt weergegeven, is de versie die is gebruikt om de statistieken in de rij te berekenen en is mogelijk niet de huidige versie van de monitor. Telkens wanneer u de metrische gegevens vernieuwt, probeert de monitor eerder berekende metrische gegevens opnieuw te compileren met behulp van de huidige monitorconfiguratie. De huidige monitorversie wordt weergegeven in de monitorgegevens die worden geretourneerd door de API en De Python-client.
[4] Voorbeeldcode voor het ophalen van het 50e percentiel: SELECT element_at(quantiles, int((size(quantiles)+1)/2)) AS p50 ...
of SELECT quantiles[500] ...
.
[5] Alleen weergegeven als de monitor een analysetype heeft InferenceLog
en beide label_col
en prediction_col
zijn opgegeven.
[6] Alleen weergegeven als de monitor een analysetype heeft InferenceLog
en problem_type
is classification
.
Schema voor tabel met metrische gegevens voor drift
In de volgende tabel ziet u het schema van de tabel met metrische driftgegevens. De drifttabel wordt alleen gegenereerd als er een basislijntabel wordt opgegeven of als er een opeenvolgend tijdvenster bestaat na aggregatie volgens de opgegeven granulariteiten.
Kolomnaam | Type | Description |
---|---|---|
Kolommen groeperen | ||
venster | struct<start: timestamp, end: timestamp> |
Tijdvenster. |
window_cmp | struct<start: timestamp, end: timestamp> |
Vergelijkingsvenster voor drift_type CONSECUTIVE . |
drift_type | tekenreeks | BASISLIJN OF OPEENVOLGEND. Of de metrische driftgegevens vergelijken met het vorige tijdvenster of met de basislijntabel. |
Granulariteit | tekenreeks | Duur van het venster, ingesteld op granularities parameter. [7] |
model_id_col | tekenreeks | Optioneel. Alleen gebruikt voor InferenceLog het analysetype. |
slice_key | tekenreeks | Slice-expressie. NULL voor standaardwaarde, dit zijn alle gegevens. |
slice_value | tekenreeks | De waarde van de segmenteringsexpressie. |
column_name | tekenreeks | Naam van kolom in primaire tabel. :table is een speciale naam voor metrische gegevens die van toepassing zijn op de hele tabel, zoals modelnauwkeurigheid. |
data_type | tekenreeks | Spark-gegevenstype van column_name . |
monitor_version | bigint | Versie van de monitorconfiguratie die wordt gebruikt om de metrische gegevens in de rij te berekenen. Zie [8] hieronder voor meer informatie. |
Kolommen met metrische gegevens - drift | Verschillen worden berekend als huidig venster - vergelijkingsvenster. | |
count_delta | dubbel | Verschil in count . |
avg_delta | dubbel | Verschil in avg . |
percent_null_delta | dubbel | Verschil in percent_null . |
percent_zeros_delta | dubbel | Verschil in percent_zeros . |
percent_distinct_delta | dubbel | Verschil in percent_distinct . |
non_null_columns_delta | struct<added: int, missing: int> |
Aantal kolommen met een toename of afname van niet-null-waarden. |
chi_squared_test | struct<statistic: double, pvalue: double> |
Chi-kwadraatstest voor drift in verdeling. |
ks_test | struct<statistic: double, pvalue: double> |
KS-test voor drift in distributie. Alleen berekend voor numerieke kolommen. |
tv_distance | dubbel | Totale variatieafstand voor afwijking in verdeling. |
l_infinity_distance | dubbel | L-oneindige afstand voor drift in verdeling. |
js_distance | dubbel | Jensen-Shannon afstand voor drift in distributie. Alleen berekend voor categorische kolommen. |
wasserstein_distance | dubbel | Drift tussen twee numerieke verdelingen met behulp van de metrische afstand van Wasserstein. |
population_stability_index | dubbel | Metrische waarde voor het vergelijken van de afwijking tussen twee numerieke distributies met behulp van de metrische waarde voor de stabiliteitsindex van de populatie. Zie [9] hieronder voor meer informatie. |
[7] Voor tijdreeks- of deductieprofielen kijkt de monitor 30 dagen terug vanaf het moment dat de monitor wordt gemaakt. Vanwege deze cut-off kan de eerste analyse een gedeeltelijk venster bevatten. De limiet van 30 dagen kan bijvoorbeeld midden in een week of maand vallen, in welk geval de volledige week of maand niet is opgenomen in de berekening. Dit probleem is alleen van invloed op het eerste venster.
[8] De versie die in deze kolom wordt weergegeven, is de versie die is gebruikt voor het berekenen van de statistieken in de rij en is mogelijk niet de huidige versie van de monitor. Telkens wanneer u de metrische gegevens vernieuwt, probeert de monitor eerder berekende metrische gegevens opnieuw te compileren met behulp van de huidige monitorconfiguratie. De huidige monitorversie wordt weergegeven in de monitorgegevens die worden geretourneerd door de API en De Python-client.
[9] De uitvoer van de index voor de stabiliteit van de populatie is een numerieke waarde die aangeeft hoe verschillende twee verdelingen zijn. Het bereik is [0, inf). PSI < 0.1 betekent geen significante bevolkingswijziging. PSI < 0.2 duidt op gemiddelde bevolkingsverandering. PSI >= 0,2 geeft een significante bevolkingswijziging aan.