0 / 0
Torna alla versione inglese della documentazione
Metriche di deviazione
Ultimo aggiornamento: 25 ott 2024
Metriche di deviazione

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 freccia di navigazione 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, countsparse 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, maxe 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

        {
            "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.

Nota:

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

Ricerca e risposta AI generativa
Queste risposte sono generate da un modello di lingua di grandi dimensioni in watsonx.ai basato sul contenuto della documentazione del prodotto. Ulteriori informazioni