Delen via


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 door output_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 <= 10en éé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 en prediction_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 en InferenceLog 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, precisionen recallf1_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.