0 / 0
Volver a la versión inglesa de la documentación
Métricas de desviación
Última actualización: 25 oct 2024
Métricas de desviación

Al configurar las evaluaciones de deriva, puede generar métricas que le ayuden a determinar lo bien que su modelo predice los resultados a lo largo del tiempo.

Puede ver los resultados de sus evaluaciones de derivas en el panel Insights. Para ver los resultados, puede seleccionar un mosaico de despliegue de modelo y pulsar la flecha flecha de navegación en la sección de evaluación Desviación para visualizar un resumen de las métricas de desviación de la última evaluación. Para obtener más información, consulte Revisión de los resultados de la desviación.

Las métricas de deriva se calculan analizando el comportamiento de su modelo y construyendo su propio modelo para predecir si su modelo genera predicciones precisas para los puntos de datos. Este modelo de detección de desviación procesa los datos de carga útil para identificar el número de registros para los que el modelo realiza predicciones inexactas y genera la precisión prevista del modelo.

La desviación solo está soportada para datos estructurados y no da soporte a las funciones de Python .

Métricas de desviación soportadas

Se admiten las siguientes métricas de deriva para las evaluaciones de deriva:

Disminución de la precisión

Las evaluaciones de deriva estiman la caída en la precisión de su modelo en tiempo de ejecución cuando se compara con los datos de entrenamiento. La precisión del modelo disminuye si hay un aumento en las transacciones similares a las que el modelo no ha evaluado correctamente en los datos de entrenamiento.

Cómo funciona

El supervisor de desviación funciona de forma diferente en entornos de preproducción y de producción.

En los entornos de preproducción, al cargar datos de prueba etiquetados, los datos se añaden a las tablas de comentarios y de carga útil. Los datos etiquetados se añaden como una anotación en la tabla de carga útil. La precisión se calcula con la columna de datos etiquetada y la columna de predicción de la tabla de carga útil.

En entornos de producción, un modelo de detección de desviaciones se crea observando los datos que se utilizaron para entrenar y probar el modelo. Por ejemplo, si el modelo tiene una precisión del 90% en los datos de prueba, significa que proporciona predicciones incorrectas en el 10% de los datos de prueba. Se construye un modelo de clasificación binaria que acepta un punto de datos y predice si ese punto de datos es similar a los datos que el modelo predijo de forma incorrecta (10%) o precisa (90%).

Una vez creado el modelo de detección de desviaciones, en tiempo de ejecución, este modelo se puntúa utilizando todos los datos que recibe el modelo cliente. Por ejemplo, si el modelo cliente recibió 1000 registros en las últimas 3 horas, el modelo de detección de desviaciones se ejecuta sobre esos mismos 1000 puntos de datos. Calcula cuántos de los registros son similares al 10% de los registros en los que el modelo cometió un error durante el entrenamiento. Si 200 de estos registros son similares al 10%, significa que la precisión del modelo es probable que sea del 80%. Dado que la precisión del modelo en el momento del entrenamiento era del 90%, significa que hay una desviación de precisión del 10% en el modelo.

Para mitigar la deriva una vez detectada, debe crear una nueva versión del modelo que corrija el problema. Un buen lugar por donde empezar es con los puntos de datos resaltados como motivos de la desviación. Introduzca los nuevos datos en el modelo predictivo después de etiquetar manualmente las transacciones desviadas y utilícelas para volver a entrenar el modelo.

Cómo se calcula

La disminución de la métrica de precisión se calcula solo para modelos binarios estructurados y de clasificación de múltiples clases. Cada transacción se analiza para estimar si la predicción del modelo es exacta. Si la predicción del modelo es inexacta, la transacción se marca como desviada. La exactitud estimada se calcula entonces como la fracción de transacciones no desviadas al número total de transacciones analizadas. La precisión base es la precisión del modelo en los datos de prueba. El grado de desviación de la precisión se calcula como la diferencia entre la precisión de base y la precisión estimada. Además, se calculan todas las transacciones desviadas y, a continuación, se agrupan las transacciones en función de la similitud de la contribución de cada característica a la desviación de la precisión. En cada conglomerado, se estiman las características importantes que contribuyeron a la desviación en la precisión y se clasifica su impacto de características como grande, algo y pequeño.

Disminución de la coherencia de datos

Cómo funciona

Cada transacción se analiza en busca de incoherencias en los datos comparando las transacciones en tiempo de ejecución con los patrones de las transacciones en los datos de entrenamiento. Si una transacción infringe uno o más de los patrones de datos de entrenamiento, la transacción se identifica como incoherente. Para calcular la caída de la coherencia de los datos, se divide el número total de transacciones por el número de transacciones identificadas como incoherentes. Por ejemplo, si 10 transacciones se identifican como incoherentes de un conjunto de 100 transacciones, el descenso en la coherencia de datos es del 10%.

Cómo se calcula

Para identificar la incoherencia de los datos, se genera un esquema al configurar la detección de desviaciones mediante la creación de un archivo constraints.json para especificar las reglas que deben seguir los datos de entrada. El esquema se utiliza para evaluar la desviación de los datos mediante la identificación de valores atípicos que no se ajustan a las restricciones especificadas. El esquema se especifica como un objeto JSON con matrices columns y constraints que describen los datos de entrenamiento tal como se muestra en el ejemplo siguiente:

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

Columnas

Se especifican valores para las claves name, dtype, countsparse y skip_learning para describir una columna.

Las claves name y dtype describen la etiqueta y el tipo de datos para una columna. Los valores siguientes que se especifican con la clave dtype describen el tipo de datos:

  • categorical
  • numeric_discrete
  • numeric_continuous

El tipo de datos que se especifica determina si se describen más propiedades estadísticas con claves como, por ejemplo, min, maxy mean. Por ejemplo, cuando se especifica el tipo de datos numeric_discrete o numeric_continuous , las propiedades se describen tal como se muestra en el ejemplo siguiente:

{
            "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 clave count especifica el número de filas para una columna. Se especifican valores booleanos para describir las sparse y skip_learning claves de una columna. La clave sparse especifica si una columna es dispersa y la clave skip_learning especifica si una columna omite el aprendizaje de alguna de las reglas que se describen en el esquema. Una columna es dispersa si los percentiles 25th y 75th tienen el mismo valor.

Restricciones

La clave name especifica el tipo de restricción. Se especifican los valores siguientes para describir el tipo de restricción:

  • categorical_distribution_constraint
  • numeric_range_constraint
  • numeric_distribution_constraint
  • catnum_range_constraint
  • catnum_distribution_constraint
  • catcat_distribution_constraint

La clave id identifica las restricciones con un identificador exclusivo universal (UUID). La clave kind especifica si la restricción es una restricción single_column o two-column .

La clave columns especifica una matriz de nombres de columna. Cuando se especifica una single_column restricción con la kind clave, el array contiene un valor que se correlaciona con la columna que se quiere describir. Cuando se especifica una two-column restricción con la kind clave, la matriz contiene valores que se correlacionan con columnas que contienen datos relacionados.

La clave content especifica atributos que describen las características estadísticas de los datos. El tipo de restricción que se especifica con la clave name determina qué atributo se especifica en la clave content tal como se muestra en la tabla siguiente:

Atributo Restricciones
distribución_frecuencia restricción_distribución_categórica
rangos numeric_range_constraint, restricción_rango_catum
distribución restricción_distribución_numérica, restricción_distribución_numérica
combinaciones de rare_ restricción_distribución_catcatcat_
columpo_origen catcat_distribution_constraint, catnum_range_constraint, catnum_distribution_constraint
columno_destino catcat_distribution_constraint, catnum_range_constraint, catnum_distribution_constraint

Las secciones siguientes proporcionan ejemplos de cómo se especifica cada tipo de restricción:

Restricción de distribución categórica

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

En los datos de entrenamiento, la columna CheckingStatus contiene cuatro valores que se especifican con el atributo frequency_distribution . El atributo frequency_distribution especifica los recuentos de frecuencia con valores para categorías, como 0_to_200. Si se encuentran registros en los datos de la carga útil que especifiquen valores diferentes de los frequency_distribution valores de los atributos, los registros se identifican como desviados.

Restricción de rango numérico

   {
            "name": "numeric_range_constraint",
            "id": "79f3a1f5-30a1-4c7f-91a0-1613013ee802",
            "kind": "single_column",
            "columns": [
                "LoanAmount"
            ],
            "content": {
                "ranges": [
                    {
                        "min": 250,
                        "max": 11676,
                        "count": 5000
                    }
                ]
            }
        }

La columna LoanAmount contiene valores mínimos y máximos que se especifican con el atributo ranges para establecer un rango para los datos de entrenamiento. El atributo ranges especifica las regiones de alta densidad de la columna. No se incluyen los rangos que raramente se producen en los datos de entrenamiento. Si se encuentran registros en los datos de la carga útil que no se ajustan al intervalo y a un búfer predefinido, los registros se identifican como desviación.

Restricción de distribución numérica

{
            "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 columna LoanAmount contiene valores que se especifican con el atributo distribution para establecer una distribución normal para los datos de entrenamiento. Si se encuentran registros en los datos de carga útil que no se ajustan a la distribución normal, los registros se identifican como desviación. Las distribuciones a las que se ajusta son la uniforme, la exponencial o la normal. Si no se encuentran registros que se ajusten a estas distribuciones, esta restricción no se aprende.

Restricción de distribución categórica-categórica

    {
            "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"
                        ]
                    }
                ]
            }
        }

Para las columnas CheckingStatus y CreditHistory , los atributos rare_combinations especifican una combinación de valores que raramente se producen en los datos de entrenamiento. Si se encuentran registros en los datos de la carga útil que contengan la combinación, los registros se identifican como deriva.

Restricción de rango categórica-numérica

        {
            "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
                        }
                    ]
                }
            }
        }

El atributo ranges especifica los valores mínimo y máximo para las columnas CheckingStatus y LoanAmount que establecen un rango para los datos de entrenamiento. Si se encuentran registros en los datos de carga útil que no contengan LoanAmount y CheckingStatus valores de columna que se ajusten al intervalo y a un búfer predefinido, los registros se identifican como desviados.

Restricción de distribución numérica categórica

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

Las columnas LoanAmount y CheckingStatus contienen valores que se especifican con el atributo distribution para establecer una distribución normal para los datos de entrenamiento. Si se encuentran registros en los datos de carga útil que no contienen LoanAmount y CheckingStatus valores de columna que se ajusten a la distribución normal, los registros se identifican como desviación.

Nota:

Para mitigar la deriva una vez detectada, debe crear una nueva versión del modelo que corrija el problema. Un buen lugar por donde empezar es con los puntos de datos resaltados como motivos de la desviación. Introduzca los nuevos datos en el modelo predictivo después de etiquetar manualmente las transacciones desviadas y utilícelas para volver a entrenar el modelo.

Más información

Revisión de los conocimientos del modelo

Tema padre: Métricas de desviación

Búsqueda y respuesta de IA generativa
Estas respuestas las genera un modelo de lenguaje grande en watsonx.ai que se basa en el contenido de la documentación del producto. Más información