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 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
, count
sparse
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
, max
y 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
- Restricción de rango numérico
- Restricción de distribución numérica
- Restricción de distribución categórica-categórica
- Restricción de rango categórico-numérico
- Restricción de distribución numérica categórica
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.
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