Quando si configurano le valutazioni delle derive, è possibile generare metriche che aiutano a determinare l'efficacia del modello nel prevedere i risultati nel tempo.
È possibile visualizzare i risultati delle valutazioni delle derive nella dashboard Insights. Per visualizzare i risultati, puoi selezionare un tile di distribuzione del modello e fare clic sulla freccia nella sezione di valutazione Deviazione per visualizzare un riepilogo delle metriche di deviazione dall'ultima valutazione. Per ulteriori informazioni, consultare Revisione dei risultati della deviazione.
Le metriche di deriva vengono calcolate analizzando il comportamento del modello e costruendo il proprio modello per prevedere se il modello genera previsioni accurate per i punti dati. Questo modello di rilevamento della deviazione elabora i dati del payload per individuare il numero di record per cui il proprio modello effettua previsioni non accurate e genera la precisione prevista del proprio modello.
La deviazione è supportata solo per i dati strutturati e non supporta funzioni Python .
Metriche di deriva supportate
Per le valutazioni della deriva sono supportate le seguenti metriche di deriva:
Calo di accuratezza
Le valutazioni della deriva stimano il calo di accuratezza del modello in fase di esecuzione rispetto ai dati di addestramento. L'accuratezza del modello diminuisce se si verifica un incremento delle transazioni simile a quelle che il modello non ha valutato correttamente nei dati di addestramento.
Come funziona
Il monitor di deviazione funziona in modo diverso negli ambienti di pre e produzione.
Negli ambienti di preproduzione, quando si caricano i dati di test etichettati, i dati vengono aggiunti alle tabelle di feedback e payload. I dati etichettati vengono aggiunti come un'annotazione nella tabella payload. La precisione viene calcolata con la colonna di dati con etichetta e la colonna di previsione dalla tabella payload.
Negli ambienti di produzione, un modello di rilevamento delle derive viene creato esaminando i dati utilizzati per addestrare e testare il modello. Ad esempio, se il modello ha un'accuratezza del 90% sui dati di test, significa che fornisce previsioni errate sul 10% dei dati di test. Viene costruito un modello di classificazione binaria che accetta un punto di dati e predice se quel punto di dati è simile ai dati che il modello ha previsto in modo errato (10%) o accurato (90%).
Dopo la creazione del modello di rilevamento della deriva, in fase di esecuzione, questo modello viene valutato utilizzando tutti i dati ricevuti dal modello client. Ad esempio, se il modello client ha ricevuto 1000 record nelle ultime 3 ore, il modello di rilevamento della deriva viene eseguito su quegli stessi 1000 punti di dati. Calcola quanti dei record sono simili ai 10% dei record su cui il modello ha fatto un errore durante il training. Se 200 di questi record sono simili al 10%, significa che la precisione del modello è probabilmente dell ' 80%. Poiché l'accuratezza del modello al momento dell'addestramento era del 90%, significa che c'è una deviazione di precisione del 10% nel modello.
Per ridurre la deriva dopo che è stata rilevata, è necessario creare una nuova versione del modello che corregga il problema. Un buon posto per iniziare è con i punti di dati evidenziati come causa della deviazione. Introdurre i nuovi dati nel modello predittivo dopo aver etichettato manualmente le transazioni deviate e utilizzarli per riaddestrare il modello.
Calcolo matematico
La riduzione della metrica di precisione viene calcolata solo per i modelli di classificazione strutturati binari e multi - classe. Ogni transazione viene analizzata per valutare se la previsione del modello è accurata. Se la previsione del modello non è accurata, la transazione è contrassegnata come deviata. La precisione stimata viene quindi calcolata come frazione delle transazioni non deviate rispetto al numero totale di transazioni analizzate. L'accuratezza di base è l'accuratezza del modello sui dati di test. L'entità della deriva nell'accuratezza viene calcolata come differenza tra l'accuratezza di base e l'accuratezza stimata. Inoltre, vengono calcolate tutte le transazioni che hanno subito una deriva e quindi vengono raggruppate le transazioni in base alla somiglianza del contributo di ciascuna caratteristica alla deriva dell'accuratezza. In ogni cluster, vengono stimate le caratteristiche importanti che hanno contribuito alla deriva dell'accuratezza e viene classificato il loro impatto sulle caratteristiche come grande, alcuni e piccolo.
Calo di congruenza dei dati
Come funziona
Ogni transazione viene analizzata per verificare l'incoerenza dei dati, confrontando le transazioni eseguite con i modelli delle transazioni nei dati di addestramento. Se una transazione viola uno o più modelli di dati di addestramento, la transazione viene identificata come incongruente. Per calcolare il calo di coerenza dei dati, il numero totale di transazioni viene diviso per il numero di transazioni identificate come non coerenti. Ad esempio, se 10 transazioni sono identificate come incongruenti da una serie di 100 transazioni, il calo della coerenza dei dati è del 10%.
Calcolo matematico
Per identificare l'incoerenza dei dati, quando si configura il rilevamento della deriva viene generato uno schema, creando un file constraints.json
per specificare le regole che i dati di input devono seguire. Lo schema viene utilizzato per valutare la deriva dei dati, identificando i valori anomali che non rientrano nei vincoli specificati. Lo schema viene specificato come un oggetto JSON con array columns
e constraints
che descrivono i dati di addestramento come mostrato nel seguente esempio:
{
"columns": [
{
"name": "CheckingStatus",
"dtype": "categorical",
"count": 5000,
"sparse": false,
"skip_learning": false
},
"constraints": [
{
"name": "categorical_distribution_constraint",
"id": "f0476d40-d7df-4095-9be5-82564511432c",
"kind": "single_column",
"columns": [
"CheckingStatus"
],
"content": {
"frequency_distribution": {
"0_to_200": 1304,
"greater_200": 305,
"less_0": 1398,
"no_checking": 1993
}
}
}
Colonne
I valori sono specificati per le chiavi name
, dtype
, count
sparse
e skip_learning
per descrivere una colonna.
Le chiavi name
e dtype
descrivono l'etichetta e il tipo di dati per una colonna. I seguenti valori specificati con la chiave dtype
descrivono il tipo di dati:
categorical
numeric_discrete
numeric_continuous
Il tipo di dati specificato determina se ulteriori proprietà statistiche vengono descritte con le chiavi, ad esempio min
, max
e mean
. Ad esempio, quando si specifica il tipo di dati numeric_discrete
o numeric_continuous
, le proprietà vengono descritte come mostrato nel seguente esempio:
{
"name": "LoanDuration",
"dtype": "numeric_discrete",
"count": 5000,
"sparse": false,
"skip_learning": false,
"min": 4,
"max": 53,
"mean": 21.28820697954272,
"std": 10.999096037050032,
"percentiles": [
13.0,
21.0,
29.0
],
"count_actual": 4986
}
La chiave count
specifica il numero di righe per una colonna. I valori booleani sono specificati per descrivere le chiavi sparse
e skip_learning
di una colonna. La chiave sparse
specifica se una colonna è sparsa e la chiave skip_learning
specifica se una colonna ignora l'apprendimento delle regole descritte nello schema. Una colonna è rada se il 25th e il 75th percentile hanno lo stesso valore.
Vincoli
Il tasto name
specifica il tipo di vincolo. I seguenti valori vengono specificati per descrivere il tipo di vincolo:
categorical_distribution_constraint
numeric_range_constraint
numeric_distribution_constraint
catnum_range_constraint
catnum_distribution_constraint
catcat_distribution_constraint
La chiave id
identifica i vincoli con un UUID (universally unique identifier). Il tasto kind
specifica se il vincolo è un vincolo single_column
o two-column
.
La chiave columns
specifica un array di nomi colonna. Quando viene specificato un single_column
vincolo con la kind
chiave, l'array contiene un valore correlato alla colonna che si desidera descrivere. Quando viene specificato un two-column
vincolo con la kind
chiave, l'array contiene valori correlati alle colonne che contengono dati correlati.
La chiave content
specifica gli attributi che descrivono le caratteristiche statistiche dei dati. Il tipo di vincolo specificato con la chiave name
determina quale attributo viene specificato nella chiave content
come mostrato nella tabella seguente:
Attributo | Vincoli |
---|---|
distribuzione_frequenza | vincolo_distribuzione_categoriale |
intervalli | numeric_range_constraint, catnum_range_constraint |
distribution | numeric_distribution_constraint, catnum_distribution_constraint |
Combinazioni rare_ | vincolo_distribuzione_catcat |
colonna_origine | catcat_distribution_constraint, catnum_range_constraint, catnum_distribution_constraint |
colonna_destinazione | catcat_distribution_constraint, catnum_range_constraint, catnum_distribution_constraint |
Le seguenti sezioni forniscono esempi di come viene specificato ciascun tipo di vincolo:
- Vincolo di distribuzione categoriale
- Vincolo intervallo numerico
- Vincolo di distribuzione numerico
- Vincolo di distribuzione categoriale
- Vincolo intervallo categoriale - numerico
- Vincolo di distribuzione categoriale - numerica
Vincolo di distribuzione categoriale
{
"name": "categorical_distribution_constraint",
"id": "f0476d40-d7df-4095-9be5-82564511432c",
"kind": "single_column",
"columns": [
"CheckingStatus"
],
"content": {
"frequency_distribution": {
"0_to_200": 1304,
"greater_200": 305,
"less_0": 1398,
"no_checking": 1993
}
}
}
Nei dati di addestramento, la colonna CheckingStatus
contiene quattro valori specificati con l'attributo frequency_distribution
. L'attributo frequency_distribution
specifica i conteggi della frequenza con i valori per le categorie, ad esempio 0_to_200
. Se nei dati del payload vengono trovati record che specificano valori diversi da quelli frequency_distribution
degli attributi, i record vengono identificati come deriva.
Vincolo intervallo numerico
{
"name": "numeric_range_constraint",
"id": "79f3a1f5-30a1-4c7f-91a0-1613013ee802",
"kind": "single_column",
"columns": [
"LoanAmount"
],
"content": {
"ranges": [
{
"min": 250,
"max": 11676,
"count": 5000
}
]
}
}
La colonna LoanAmount
contiene i valori minimo e massimo specificati con l'attributo ranges
per impostare un intervallo per i dati di addestramento. L'attributo ranges
specifica le regioni ad alta densità della colonna. Gli intervalli che raramente si verificano nei dati di addestramento non sono inclusi. Se nei dati del payload vengono trovati record che non rientrano nell'intervallo e in un buffer predefinito, i record vengono identificati come deriva.
Vincolo distribuzione numerica
{
"name": "numeric_distribution_constraint",
"id": "3a97494b-0cd7-483e-a1c6-adb7755c1cb0",
"kind": "single_column",
"columns": [
"LoanAmount"
],
"content": {
"distribution": {
"name": "norm",
"parameters": {
"loc": 3799.62,
"scale": 1920.0640064678398
},
"p-value": 0.22617155797563282
}
}
}
La colonna LoanAmount
contiene valori specificati con l'attributo distribution
per impostare una distribuzione normale per i dati di addestramento. Se nei dati del carico utile si trovano record che non rientrano nella distribuzione normale, i record vengono identificati come deriva. Le distribuzioni che vengono adattate sono quelle uniformi, esponenziali o normali. Se non si trovano record che rientrano in queste distribuzioni, il vincolo non viene appreso.
Vincolo di distribuzione categoriale
{
"name": "catcat_distribution_constraint",
"id": "99468600-1924-44d9-852c-1727c9c414ee",
"kind": "two_column",
"columns": [
"CheckingStatus",
"CreditHistory"
],
"content": {
"source_column": "CheckingStatus",
"target_column": "CreditHistory",
"rare_combinations": [
{
"source_value": "no_checking",
"target_values": [
"no_credits"
]
}
]
}
}
Per le colonne CheckingStatus
e CreditHistory
, l'attributo rare_combinations
specifica una combinazione di valori che raramente si verificano nei dati di addestramento. Se nei dati del payload si trovano record che contengono la combinazione, i record vengono identificati come deriva.
Vincolo intervallo categoriale - numerico
{
"name": "catnum_range_constraint",
"id": "f252033c-1635-4974-8976-3f7904d0c37d",
"kind": "two_column",
"columns": [
"CheckingStatus",
"LoanAmount"
],
"content": {
"source_column": "CheckingStatus",
"target_column": "LoanAmount",
"ranges": {
"no_checking": [
{
"min": 250,
"max": 11676,
"count": 1993
}
],
"less_0": [
{
"min": 250,
"max": 7200,
"count": 1398
}
],
"0_to_200": [
{
"min": 250,
"max": 9076,
"count": 1304
}
],
"greater_200": [
{
"min": 250,
"max": 9772,
"count": 305
}
]
}
}
}
L'attributo ranges
specifica i valori minimo e massimo per le colonne CheckingStatus
e LoanAmount
che impostano un intervallo per i dati di formazione. Se nei dati del payload vengono trovati record che non contengono LoanAmount
e CheckingStatus
valori di colonna che rientrano nell'intervallo e in un buffer predefinito, i record vengono identificati come deriva.
Vincolo di distribuzione categoriale - numerica
{
"name": "catnum_distribution_constraint",
"id": "3a97494b-0cd7-483e-a1c6-adb7755c1cb0",
"kind": "two_column",
"columns": [
"CheckingStatus",
"LoanAmount"
],
"content": {
"source_column": "CheckingStatus",
"target_column": "LoanAmount",
"distribution": {
"greater_200": {
"name": "norm",
"parameters": {
"loc": 3799.62,
"scale": 1920.0640064678398
},
"p-value": 0.22617155797563282
}
}
}
}
Le colonne LoanAmount
e CheckingStatus
contengono valori specificati con l'attributo distribution
per impostare una distribuzione normale per i dati di addestramento. Se nei dati del payload si trovano record che non contengono LoanAmount
e CheckingStatus
valori di colonna che rientrano nella distribuzione normale, i record vengono identificati come deriva.
Per ridurre la deriva dopo che è stata rilevata, è necessario creare una nuova versione del modello che corregga il problema. Un buon posto per iniziare è con i punti di dati evidenziati come causa della deviazione. Introdurre i nuovi dati nel modello predittivo dopo aver etichettato manualmente le transazioni deviate e utilizzarli per riaddestrare il modello.
Ulteriori informazioni
Analisi delle informazioni sul modello
Argomento principale Metriche di deviazione