Delen via


Metrische tabellen voor gegevensprofilering

Op deze pagina worden de metrische tabellen beschreven die zijn gemaakt door gegevensprofilering. Zie het dashboard voor gegevensprofilering voor informatie over het dashboard dat door een profiel is gemaakt.

Wanneer een profiel 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 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 geprofileerd.

Hoe profielstatistieken 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 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 referentiedocumentatie voor gegevensprofilerings-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 Typ Beschrijving
Kolommen groeperen
venster Structuur Zie [1] hieronder. Tijdvenster.
Granulariteit touw Duur van het venster, ingesteld op granularities parameter. [2]
model_id_col touw Optioneel. Alleen gebruikt voor InferenceLog het analysetype.
log_type touw Tabel die wordt gebruikt om metrische gegevens te berekenen. BASISLIJN OF INVOER.
slice_key touw Slice-expressie. NULL voor standaardwaarde, dit zijn alle gegevens.
schijfswaarde touw De waarde van de segmenteringsexpressie.
kolomnaam touw Naam van kolom in primaire tabel. :table is een speciale naam voor metrische gegevens die van toepassing zijn op de hele tabel, zoals modelnauwkeurigheid.
gegevenstype touw Spark-gegevenstype van column_name.
logboek_tabel_commit_versie int Negeren.
monitorversie bigint Versie van de profielconfiguratie 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.
aantal_nullen bigint Aantal null-waarden in column_name.
avg dubbel Rekenkundig gemiddelde van de kolom, waarbij null-waarden worden genegeerd.
kwantielen array<double> Matrix van 1000 kwantielen. Zie [4] hieronder.
aantal_unieke bigint Bij benadering van het aantal afzonderlijke waarden in column_name. Hierbij wordt de approx_count_distinct functie gebruikt, zodat het resultaat mogelijk niet exact is.
min dubbel Minimumwaarde in column_name.
max dubbel Maximumwaarde in column_name.
stddev dubbel Standaarddeviatie van column_name.
aantal_nullen bigint Aantal nullen in column_name.
num_nan bigint Aantal NaN-waarden in column_name.
minimale grootte dubbel Minimale grootte van matrices of structuren in column_name.
maximale_grootte dubbel Maximale grootte van matrices of structuren in column_name.
gemiddelde_grootte dubbel Gemiddelde grootte van matrices of structuren in column_name.
minimale_lengte 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.
frequente_objecten Structuur Zie [1] hieronder. Top 100 meest voorkomende items.
niet-nul-kolommen 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.
percentage_nullen dubbel Percentage waarden dat nul is.column_name
percentage_uniek 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:
Nauwkeurigheidsvergelijking.
Null-waarden worden genegeerd.
log-verlies dubbel Logboekverlies voor classificatieproblemen, berekend als:
Vergelijking van logboekverlies.
Vereist prediction_proba_col. Voorspellingen of labels die NULL zijn, worden genegeerd.
roc_auc_score Structuur Zie [1] hieronder. ROC AUC-score voor binaire en multiklasseclassificatie. Vereist prediction_proba_col. Geeft als resultaat een-versus-één gewogen en macrogemiddelde scores. Labels of voorspellingen die NULL zijn, worden genegeerd.
confusion_matrix Structuur Zie [1] hieronder.
precisie Structuur Zie [1] hieronder.
relevante overeenkomsten Structuur Zie [1] hieronder.
F1-score Structuur Zie [1] hieronder.
Kolommen met metrische gegevens - nauwkeurigheid van regressiemodel [5]
gemiddelde kwadratische fout dubbel Gemiddelde kwadratische fout tussen prediction_col en label_col.
wortel-gemiddelde-kwadratische-fout dubbel Wortel gemiddelde kwadratische fout tussen prediction_col en label_col.
gemiddelde fout dubbel Gemiddelde fout tussen prediction_col en label_col.
gemiddelde absolute percentagefout dubbel Gemiddelde absolute percentagefout tussen prediction_col en label_col.
r2_score (coëfficiënt van determinatie) dubbel R-kwadraatscore tussen prediction_col en label_col.
Kolommen met metrische gegevens - redelijkheid en vooroordelen [6]
voorspellingsgelijkheid dubbel Meet of de twee groepen gelijke precisie hebben voor alle voorspelde klassen. label_col is vereist.
voorspellende gelijkheid dubbel Metingen of de twee groepen een gelijk aantal fout-positieven hebben voor alle voorspelde klassen. label_col is vereist.
gelijke kansen dubbel Metingen of de twee groepen gelijke overeenkomsten hebben voor alle voorspelde klassen. label_col is vereist.
statistische pariteit 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, recall, f1_score en roc_auc_score:

Kolomnaam Typ
venster struct<start: timestamp, end: timestamp>
frequente_objecten 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>
roc_auc_score struct<one_vs_one: struct<weighted: double, macro: double>>

[2] Voor tijdreeks- of deductieprofielen kijkt het profiel 30 dagen terug vanaf het moment dat het profiel 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 het profiel. Telkens wanneer u de metrische gegevens vernieuwt, probeert het profiel eerder berekende metrische gegevens opnieuw te compileren met behulp van de huidige profielconfiguratie. De huidige profielversie wordt weergegeven in de profielgegevens die worden geretourneerd door de API en 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 het profiel een analysetype heeft InferenceLog en beide label_col en prediction_col zijn opgegeven.

[6] Alleen weergegeven als het profiel een InferenceLog analysetype heeft en problem_typeclassification is.

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. Als een metrische waarde niet van toepassing is op een rij, is de bijbehorende cel null.

Kolomnaam Typ Beschrijving
Kolommen groeperen
venster struct<start: timestamp, end: timestamp> Tijdvenster.
window_cmp struct<start: timestamp, end: timestamp> Vergelijkingsvenster voor drift_type CONSECUTIVE.
drift_type touw BASISLIJN OF OPEENVOLGEND. Of de metrische driftgegevens vergelijken met het vorige tijdvenster of met de basislijntabel.
Granulariteit touw Duur van het venster, ingesteld op granularities parameter. [7]
model_id_col touw Optioneel. Alleen gebruikt voor InferenceLog het analysetype.
slice_key touw Slice-expressie. NULL voor standaardwaarde, dit zijn alle gegevens.
schijfswaarde touw De waarde van de segmenteringsexpressie.
kolomnaam touw Naam van kolom in primaire tabel. :table is een speciale naam voor metrische gegevens die van toepassing zijn op de hele tabel, zoals modelnauwkeurigheid.
gegevenstype touw Spark-gegevenstype van column_name.
monitorversie 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_nul_delta dubbel Verschil in percent_zeros.
procent_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. Alleen berekend voor categorische kolommen. null voor numerieke kolommen.
ks_test struct<statistic: double, pvalue: double> KS-test voor drift in distributie. Alleen berekend voor numerieke kolommen. null voor categorische kolommen.
tv-afstand dubbel Totale variatieafstand voor afwijking in verdeling. Alleen berekend voor categorische kolommen. null voor numerieke kolommen.
l-infinity afstand dubbel L-oneindige afstand voor drift in verdeling. Alleen berekend voor categorische kolommen. null voor numerieke kolommen.
js_distance dubbel Jensen-Shannon afstand voor drift in distributie. Alleen berekend voor categorische kolommen. null voor numerieke kolommen.
wasserstein_distance dubbel Drift tussen twee numerieke verdelingen met behulp van de metrische afstand van Wasserstein. Alleen berekend voor numerieke kolommen. null voor categorische kolommen.
populatie stabiliteitsindex 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. Alleen berekend voor numerieke kolommen. null voor categorische kolommen.

[7] Voor tijdreeks- of deductieprofielen kijkt het profiel 30 dagen terug vanaf het moment dat het profiel 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 om de statistieken in de rij te berekenen en is mogelijk niet de huidige versie van het profiel. Telkens wanneer u de metrische gegevens vernieuwt, probeert het profiel eerder berekende metrische gegevens opnieuw te compileren met behulp van de huidige profielconfiguratie. De huidige profielversie wordt weergegeven in de profielgegevens die worden geretourneerd door de API en 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.