

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Desviación en la atribución de características de los modelos en producción
<a name="clarify-model-monitor-feature-attribution-drift"></a>

Una desviación en la distribución de los datos en tiempo real para los modelos en producción puede provocar una desviación correspondiente en los valores de atribución de las características, del mismo modo que podría provocar una desviación en el sesgo al supervisar las métricas de sesgo. La supervisión de la atribución de funciones de Amazon SageMaker Clarify ayuda a los científicos de datos y a los ingenieros de aprendizaje automático a supervisar las predicciones sobre la desviación de la atribución de funciones de forma regular. A medida que se monitorea el modelo, los clientes pueden ver informes y gráficos exportables que detallan las atribuciones de funciones en SageMaker Studio y configurar alertas en Amazon CloudWatch para recibir notificaciones si se detecta que los valores de atribución sobrepasan un umbral determinado. 

Para ilustrar esto con una situación específica, considere un escenario hipotético de admisión a la universidad. Suponga que observa los siguientes valores de atribución de características (agregados) en los datos de entrenamiento y en los datos en tiempo real:

Escenario hipotético de admisión a la universidad


| Característica | Atribución en los datos de entrenamiento | Atribución en datos en tiempo real | 
| --- | --- | --- | 
| Puntuación del SAT | 0.70 | 0.10 | 
| GPA | 0.50 | 0.20 | 
| Clasificación de clase | 0,05 | 0,70 | 

El cambio de los datos de entrenamiento a los datos en tiempo real parece significativo. La clasificación de características se ha invertido por completo. Al igual que ocurre con la desviación de sesgo, las desviaciones en la atribución de las características pueden deberse a un cambio en la distribución de los datos en tiempo real y justifican un análisis más detallado del comportamiento del modelo con los datos en tiempo real. Una vez más, el primer paso en estos escenarios es dar la alarma de que se ha producido una desviación.

Podemos detectar la desviación al comparar la forma en que la clasificación de las características individuales cambió de los datos de entrenamiento a los datos en tiempo real. Además de ser sensibles a los cambios en el orden de clasificación, también hay que tener en cuenta la puntuación bruta de atribución de las características. Por ejemplo, dado que dos características se sitúan en la clasificación en el mismo número de posiciones, pasando del entrenamiento a los datos en tiempo real, queremos ser más sensibles a la característica que tenga una puntuación de atribución más alta en los datos de entrenamiento. Teniendo en cuenta estas propiedades, se utiliza la puntuación de ganancia acumulada descontada normalizada (NDCG) para comparar las clasificaciones de las atribuciones de las características de los datos de entrenamiento y en tiempo real.

En concreto, suponga que tenemos lo siguiente:
+ *F=[f1​,…,fm​] * es la lista de características ordenadas según sus puntuaciones de atribución en los datos de entrenamiento, donde *m* es el número total de características. Por ejemplo, en nuestro caso *F*=[puntuación SAT, GPA, clasificación de clase].
+ *a(f)* es una función que devuelve la puntuación de atribución de la característica en los datos de entrenamiento de una característica *f*. Por ejemplo, *a*(puntuación SAT) = 0,70.
+ *F′=[f′​1​, …, f′​m​] *es la lista de características ordenadas según sus puntuaciones de atribución en los datos en tiempo real. Por ejemplo, *F*′= [clasificación de clase, GPA, puntuación SAT].

Luego, se puede calcular la NDCG de la siguiente manera:

        NDCG=DCG/iDCG​

por 
+ DCG = ∑1m*a*(*f'i*)/log2​(*i*\$11)
+ iDCG = ∑1m*a*(*fi*)/log2​(*i*\$11)

La DCG cuantitativa mide si las características con una alta atribución en los datos de entrenamiento también ocupan un lugar más alto en la atribución de características calculada a partir de los datos en tiempo real. La cantidad iDCG mide la *puntuación ideal* y es solo un factor de normalización para garantizar que la cantidad final se encuentre dentro del rango [0, 1], siendo 1 el mejor valor posible. Un valor NDCG igual a 1 significa que la clasificación de atribución de características en los datos en tiempo real es la misma que en los datos de entrenamiento. En este ejemplo concreto, dado que la clasificación ha cambiado bastante, el valor de NDCG es 0,69.

En SageMaker Clarify, si el valor del NDCG es inferior a 0,90, emitimos automáticamente una alerta.

## Cuaderno de ejemplo del monitor de modelos
<a name="clarify-model-monitor-sample-notebooks-feature-drift"></a>

SageMaker Clarify proporciona el siguiente cuaderno de ejemplo que muestra cómo capturar datos de inferencia para un punto final en tiempo real, crear una línea base para monitorear la evolución del sesgo e inspeccionar los resultados: 
+ [Supervisión de la desviación de sesgo y la desviación de la atribución de características Amazon SageMaker Clarify](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker_model_monitor/fairness_and_explainability/SageMaker-Model-Monitor-Fairness-and-Explainability.html): utilice Amazon SageMaker Model Monitor para supervisar la desviación de sesgo y la desviación de la atribución de características a lo largo del tiempo.

Se ha comprobado que este portátil solo funciona en SageMaker Studio. Si necesita instrucciones sobre cómo abrir un bloc de notas en SageMaker Studio, consulte[Crear o abrir un bloc de notas Amazon SageMaker Studio Classic](notebooks-create-open.md). Si se le pide que elija un kernel, elija **Python 3 (ciencia de datos)**. Los siguientes temas contienen los aspectos más destacados de los dos últimos pasos y contienen ejemplos de código del cuaderno de ejemplos. 

**Topics**
+ [Cuaderno de ejemplo del monitor de modelos](#clarify-model-monitor-sample-notebooks-feature-drift)
+ [Creación de una referencia SHAP para los modelos en producción](clarify-model-monitor-shap-baseline.md)
+ [Infracciones de desviación de atribución de características del modelo](clarify-model-monitor-model-attribution-drift-violations.md)
+ [Parámetros para supervisar la desviación de atribución](clarify-config-json-monitor-model-explainability-parameters.md)
+ [Programe trabajos de supervisión de desviación de atributos de características](clarify-model-monitor-feature-attribute-drift-schedule.md)
+ [Inspección de informes de supervisión de la desviación en la atribución de características de los modelos en producción](clarify-feature-attribute-drift-report.md)
+ [CloudWatch Métricas para el análisis de la desviación de características](clarify-feature-attribute-drift-cw.md)

# Creación de una referencia SHAP para los modelos en producción
<a name="clarify-model-monitor-shap-baseline"></a>

Las explicaciones suelen ser de contraste, es decir, tienen en cuenta las desviaciones con respecto a una referencia. Para obtener información sobre las referencias de explicabilidad, consulte [Referencias SHAP para la explicabilidad](clarify-feature-attribute-shap-baselines.md).

Además de proporcionar explicaciones para las inferencias por instancia, SageMaker Clarify también ofrece una explicación global de los modelos de aprendizaje automático, lo que ayuda a comprender el comportamiento de un modelo en su conjunto en términos de sus características. SageMaker Clarify genera una explicación global de un modelo de aprendizaje automático al agregar los valores de Shapley en varias instancias. SageMaker Clarify admite las siguientes formas diferentes de agregación, que puede usar para definir líneas de base:
+ `mean_abs`: media de los valores SHAP absolutos para todas las instancias.
+ `median`: mediana de los valores SHAP para todas las instancias.
+ `mean_sq`: media de los valores SHAP cuadrados para todas las instancias.

Una vez que haya configurado la aplicación para capturar datos de inferencia de transformación por lotes o en tiempo real, la primera tarea para supervisar la desviación en la atribución de características es crear una referencia que sirva para comparar. Esto implica configurar las entradas de datos, qué grupos son sensibles, cómo se capturan las predicciones y el modelo y sus métricas de sesgo posteriores al entrenamiento. Luego hay que empezar con el trabajo de referencia. El monitor de explicabilidad de modelos puede explicar las predicciones de un modelo implementado, ya que produce inferencias y detecta desviaciones en la atribución de características de forma regular.

```
model_explainability_monitor = ModelExplainabilityMonitor(
    role=role,
    sagemaker_session=sagemaker_session,
    max_runtime_in_seconds=1800,
)
```

En este ejemplo, el trabajo de referencia de explicabilidad comparte el conjunto de datos de prueba con el trabajo de referencia de sesgo, por lo que utiliza la misma `DataConfig` y la única diferencia es el URI de salida del trabajo.

```
model_explainability_baselining_job_result_uri = f"{baseline_results_uri}/model_explainability"
model_explainability_data_config = DataConfig(
    s3_data_input_path=validation_dataset,
    s3_output_path=model_explainability_baselining_job_result_uri,
    label=label_header,
    headers=all_headers,
    dataset_type=dataset_type,
)
```

Actualmente, la SageMaker explicación de Clarify ofrece una implementación escalable y eficiente de SHAP, por lo que la configuración de explicabilidad incluye lo siguiente: SHAPConfig
+ `baseline`: una lista de filas (al menos una) o el URI del objeto S3 que se utilizará como conjunto de datos de referencia en el algoritmo Kernel SHAP. El formato debe ser el mismo que el del conjunto de datos. Cada fila debe contener solo la función columns/values y omitir la columna o los valores de la etiqueta.
+ `num_samples`: número de muestras que se utilizarán en el algoritmo Kernel SHAP. Este número determina el tamaño del conjunto de datos sintéticos generado para calcular los valores SHAP.
+ agg\$1method: método de agregación para valores SHAP globales. Los siguientes valores son válidos:
  + `mean_abs`: media de los valores SHAP absolutos para todas las instancias.
  + `median`: mediana de los valores SHAP para todas las instancias.
  + `mean_sq`: media de los valores SHAP cuadrados para todas las instancias.
+ `use_logit`: Indicador de si la función logit se debe aplicar a las predicciones del modelo. El valor predeterminado es `False`. Si `use_logit` es `True`, los valores SHAP tendrán unidades logarítmicas de probabilidades.
+ `save_local_shap_values` (bool): indicador de si se deben guardar los valores SHAP locales en la ubicación de salida. El valor predeterminado es `False`.

```
# Here use the mean value of test dataset as SHAP baseline
test_dataframe = pd.read_csv(test_dataset, header=None)
shap_baseline = [list(test_dataframe.mean())]

shap_config = SHAPConfig(
    baseline=shap_baseline,
    num_samples=100,
    agg_method="mean_abs",
    save_local_shap_values=False,
)
```

Inicie un trabajo de referencia. Se requiere la misma `model_config` porque el trabajo de referencia básico de la explicabilidad necesita crear un punto de conexión de sombra para obtener predicciones para el conjunto de datos sintéticos generado.

```
model_explainability_monitor.suggest_baseline(
    data_config=model_explainability_data_config,
    model_config=model_config,
    explainability_config=shap_config,
)
print(f"ModelExplainabilityMonitor baselining job: {model_explainability_monitor.latest_baselining_job_name}")
```

# Infracciones de desviación de atribución de características del modelo
<a name="clarify-model-monitor-model-attribution-drift-violations"></a>

Los trabajos de desviación de atribución de características evalúan las restricciones de referencia proporcionadas por la [configuración de referencia](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelExplainabilityJobDefinition.html#sagemaker-CreateModelExplainabilityJobDefinition-request-ModelExplainabilityBaselineConfig) en comparación con los resultados del análisis de la `MonitoringExecution` actual. Si se detectan infracciones, el trabajo las incluye en el archivo *constraint\$1violations.json* de la ubicación de salida de la ejecución y marca el estado de la ejecución como [Interpretación de los resultados](model-monitor-interpreting-results.md).

Este es el esquema del archivo de infracciones por desviación de la atribución de características.
+ `label`: el nombre de la etiqueta, la configuración del análisis del trabajo `label_headers` o un marcador de posición, por ejemplo `"label0"`.
+ `metric_name`: el nombre del método de análisis de explicabilidad. En la actualidad, solo se admite `shap`.
+ `constraint_check_type`: el tipo de infracción supervisada. En la actualidad, solo se admite `feature_attribution_drift_check`.
+ `description`: un mensaje descriptivo para explicar la infracción.

```
{
    "version": "1.0",
    "violations": [{
        "label": "string",
        "metric_name": "string",
        "constraint_check_type": "string",
        "description": "string"
    }]
}
```

Para cada etiqueta de la sección `explanations`, los trabajos de supervisión calculan la [puntuación nDCG](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.ndcg_score.html) de sus valores SHAP globales en el archivo de restricciones de referencia y en el archivo de resultados del análisis del trabajo (*analysis.json*). Si la puntuación es inferior a 0,9, se registra una infracción. Se evalúa el valor SHAP global combinado, por lo que no hay campos `“feature”` en la entrada de infracción. El siguiente resultado proporciona un ejemplo de varias infracciones registradas.

```
{
    "version": "1.0",
    "violations": [{
        "label": "label0",
        "metric_name": "shap",
        "constraint_check_type": "feature_attribution_drift_check",
        "description": "Feature attribution drift 0.7639720923277322 exceeds threshold 0.9"
    }, {
        "label": "label1",
        "metric_name": "shap",
        "constraint_check_type": "feature_attribution_drift_check",
        "description": "Feature attribution drift 0.7323763972092327 exceeds threshold 0.9"
    }]
}
```

# Parámetros para supervisar la desviación de atribución
<a name="clarify-config-json-monitor-model-explainability-parameters"></a>

El monitor SageMaker de explicabilidad de Amazon Clarify reutiliza un subconjunto de los parámetros utilizados en la configuración de análisis de. [Archivos de configuración del análisis](clarify-processing-job-configure-analysis.md) Los siguientes parámetros deben proporcionarse en un archivo JSON y la ruta debe proporcionarse en el parámetro `ConfigUri` de [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelExplainabilityAppSpecification](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelExplainabilityAppSpecification).
+ `"version"`: versión esquemática (opcional) del archivo de configuración. Si no se proporciona, se utiliza la versión más reciente compatible.
+ `"headers"`: una lista de nombres de características del conjunto de datos (opcional). El análisis de explicabilidad no requiere etiquetas. 
+ `"methods"`: una lista de métodos y sus parámetros para los análisis e informes. Si se omite alguna sección, no se computará.
  + `"shap"`: sección sobre la computación de los valores SHAP (opcional).
    + `"baseline"`: (opcional) una lista de filas (al menos una) o un URI de objeto de Amazon Simple Storage Service (Amazon S3). Se utilizará como conjunto de datos de referencia (también conocido como conjunto de datos de fondo) en el algoritmo Kernel SHAP. El formato debe ser el mismo que el del conjunto de datos. Cada fila debe contener solo las columnas de características (o valores). Antes de enviar cada fila al modelo, omita cualquier columna que deba excluirse.
    + `"num_samples"`: número de muestras que se utilizarán en el algoritmo Kernel SHAP. Este número determina el tamaño del conjunto de datos sintéticos generado para calcular los valores SHAP. Si no se proporciona, un trabajo de SageMaker Clarify elige el valor en función del número de características.
    + `"agg_method"`: método de agregación para valores SHAP globales. Los valores válidos son los siguientes:
      + `"mean_abs"`: media de los valores SHAP absolutos para todas las instancias.
      + `"median"`: mediana de los valores SHAP para todas las instancias.
      + `"mean_sq"`: media de los valores SHAP cuadrados para todas las instancias.
    + `"use_logit"`: (opcional) valor booleano para indicar si la función logit se va a aplicar a las predicciones del modelo. Si `"use_logit"` es `true`, los valores SHAP tienen unidades logarítmicas de probabilidades. El valor predeterminado es `false`. 
    + `"save_local_shap_values"`: (opcional) valor booleano para indicar si los valores SHAP locales deben guardarse en la ubicación de salida. Use `true` para guardarlos. Use `false` para no guardarlos. El valor predeterminado es `false`.
+ `"predictor"`: (opcional para el punto de conexión en tiempo real, necesario para la transformación por lotes). Sección sobre los parámetros del modelo, obligatoria si las secciones `"shap"` y `"post_training_bias"` están presentes.
  + `"model_name"`: nombre del modelo creado por la API `CreateModel`, con el modo contenedor como `SingleModel`.
  + `"instance_type"`: tipo de instancia para el punto de conexión de sombra.
  + `"initial_instance_count"`: recuento de instancia para el punto de conexión de sombra.
  + `"content_type"`: (opcional) El formato de entrada del modelo que se utilizará para obtener inferencias con el punto de conexión de sombra. Los valores válidos son `"text/csv"` para CSV, `"application/jsonlines"` para JSON Lines, `application/x-parquet` para Apache Parquet y `application/x-image` para habilitar la explicabilidad mediante visión artificial. El valor predeterminado es el mismo que el formato `dataset_type`.
  + `"accept_type"`: (opcional) El formato de *salida* del modelo que se utilizará para obtener inferencias con el punto de conexión de sombra. Los valores válidos son `"text/csv"` para CSV y `"application/jsonlines"` para JSON Lines. Si se omite, SageMaker Clarify utiliza el tipo de datos de respuesta de los datos capturados.
  + `"content_template"`: (opcional) una cadena de plantilla utilizada para construir la entrada del modelo a partir de instancias del conjunto de datos. Se utiliza solo cuando `"content_type"` es `"application/jsonlines"`. La plantilla debe tener solo un marcador de posición, `$features`, que se sustituye por la lista de características en tiempo de ejecución. Por ejemplo. dado `"content_template":"{\"myfeatures\":$features}"`, si una instancia (sin etiqueta) es`1,2,3`, la entrada del modelo se convierte en JSON Lines `'{"myfeatures":[1,2,3]}'`.
  + `"label_headers"`: (opcional) Una lista de valores que la `"label"` incluye en el conjunto de datos. Asocia las puntuaciones devueltas por el punto de conexión del modelo o el trabajo de transformación por lotes a sus valores de etiqueta correspondientes. Si se proporciona, el informe de análisis utiliza los encabezados en lugar de marcadores de posición, por ejemplo `“label0”`.

Los demás parámetros deben proporcionarse en `EndpointInput` (para los puntos de conexión en tiempo real) o `BatchTransformInput` (para los trabajos de transformación por lotes) de la API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelExplainabilityJobInput](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelExplainabilityJobInput).
+ `FeaturesAttribute`: este parámetro es obligatorio si el formato de los datos de entrada del trabajo por lotes o punto de conexión es `"application/jsonlines"`. Se JMESPath utiliza para localizar las columnas de entidades si el formato del conjunto de datos es JSON Lines.
+ `ProbabilityAttribute`— Índice o JMESPath ubicación en la salida del modelo para las probabilidades. Si la salida del modelo son JSON Lines con una lista de etiquetas y probabilidades, por ejemplo, se selecciona la etiqueta que corresponde a la probabilidad máxima para los cálculos de sesgo.

## Ejemplo de archivos de configuración JSON para conjuntos de datos de CSV y JSON Lines
<a name="clarify-config-json-monitor-model-explainability-parameters-examples"></a>

A continuación, se muestran ejemplos de los archivos JSON que se utilizan para configurar el conjuntos de datos de CSV y JSON Lines con el fin de supervisar la desviación de la atribución de características.

**Topics**
+ [Conjuntos de datos CSV](#clarify-config-json-monitor-model-explainability-parameters-example-csv)
+ [Conjuntos de datos JSON Lines](#clarify-config-json-monitor-model-explainability-parameters-example-jsonlines)

### Conjuntos de datos CSV
<a name="clarify-config-json-monitor-model-explainability-parameters-example-csv"></a>

Considere un conjunto de datos que tenga tres columnas de características numéricas, como en el siguiente ejemplo.

```
0.5814568701544718, 0.6651538910132964, 0.3138080342665499
0.6711642728531724, 0.7466687034026017, 0.1215477472819713
0.0453256543003371, 0.6377430803264152, 0.3558625219713576
0.4785191813363956, 0.0265841045263860, 0.0376935084990697
```

Suponga que la salida del modelo tiene dos columnas, donde la primera es la etiqueta predicha y la segunda es la probabilidad, como en el siguiente ejemplo.

```
1, 0.5385257417814224
```

El siguiente archivo de configuración JSON muestra cómo se puede configurar este conjunto de datos CSV.

```
{
                    
    "headers": [
        "feature_1",
        "feature_2",
        "feature_3"
    ],
    "methods": {
        "shap": {
            "baseline": [
                [0.4441164946610942, 0.5190374448171748, 0.20722795300473712]
            ],
            "num_samples": 100,
            "agg_method": "mean_abs"
        }
    },
    "predictor": {
        "model_name": "my_model",
        "instance_type": "ml.m5.xlarge",
        "initial_instance_count": 1
    }
}
```

La etiqueta predicha se selecciona mediante el parámetro `"ProbabilityAttribute"`. Se utiliza una numeración basada en cero, por lo que 1 indica la segunda columna de la salida del modelo.

```
"EndpointInput": {
    ...
    "ProbabilityAttribute": 1
    ...
}
```

### Conjuntos de datos JSON Lines
<a name="clarify-config-json-monitor-model-explainability-parameters-example-jsonlines"></a>

Considere un conjunto de datos que tiene cuatro columnas de características y una columna de etiquetas, donde la primera característica y etiqueta son binarias, como en el siguiente ejemplo.

```
{"features":[0, 0.5814568701544718, 0.6651538910132964, 0.3138080342665499], "label":0}
{"features":[1, 0.6711642728531724, 0.7466687034026017, 0.1215477472819713], "label":1}
{"features":[0, 0.0453256543003371, 0.6377430803264152, 0.3558625219713576], "label":1}
{"features":[1, 0.4785191813363956, 0.0265841045263860, 0.0376935084990697], "label":1}
```

La entrada del modelo es la misma que el formato del conjunto de datos y la salida del modelo son JSON Lines, como en el siguiente ejemplo.

```
{"predicted_label":1, "probability":0.5385257417814224}
```

En el siguiente archivo, el archivo de configuración JSON muestra cómo se puede configurar este conjunto de datos JSON Lines.

```
{
    "headers": [
        "feature_1",
        "feature_2",
        "feature_3"
    ],
    "methods": {
        "shap": {
            "baseline": [
                {"features":[0.4441164946610942, 0.5190374448171748, 0.20722795300473712]}
            ],
            "num_samples": 100,
            "agg_method": "mean_abs"
        }
    },
    "predictor": {
        "model_name": "my_model",
        "instance_type": "ml.m5.xlarge",
        "initial_instance_count": 1,
        "content_template":"{\"features\":$features}"
    }
}
```

A continuación, el valor del parámetro `"features"` en `EndpointInput` (para los puntos de conexión en tiempo real) o `BatchTransformInput` (para los trabajos de transformación por lotes) se utiliza para localizar las características en el conjunto de datos, y el valor del parámetro `"probability"` selecciona el valor de probabilidad de la salida del modelo.

```
"EndpointInput": {
    ...
    "FeaturesAttribute": "features",
    "ProbabilityAttribute": "probability",
    ...
}
```

# Programe trabajos de supervisión de desviación de atributos de características
<a name="clarify-model-monitor-feature-attribute-drift-schedule"></a>

Una vez que haya creado su referencia SHAP, puede llamar al método `create_monitoring_schedule()` de la instancia de clase `ModelExplainabilityMonitor` para programar una supervisión de la explicabilidad del modelo cada hora. En las siguientes secciones, se muestra cómo crear un monitor de explicabilidad del modelo para un modelo implementado en un punto de conexión en tiempo real, así como para un trabajo de transformación por lotes.

**importante**  
Puede especificar una entrada de transformación por lotes o una entrada de punto de conexión, pero no ambas, al crear su programa de supervisión.

Si se ha enviado un trabajo de referencia, el monitor recoge automáticamente la configuración de análisis del trabajo de referencia. Sin embargo, si omite el paso de referencia o si el conjunto de datos de captura tiene una naturaleza diferente a la del conjunto de datos de entrenamiento, debe proporcionar la configuración del análisis. `ExplainabilityAnalysisConfig` requiere `ModelConfig` por la misma razón por la que se requiere para el trabajo de referencia. Tenga en cuenta que solo se requieren características para calcular la atribución de características, por lo que debe excluir el etiquetado Ground Truth.

## Supervisión de la desviación de atribución de características para los modelos implementados en puntos de conexión en tiempo real
<a name="model-monitor-explain-quality-rt"></a>

Para programar un monitor de explicabilidad del modelo para un punto de conexión en tiempo real, pase la instancia `EndpointInput` al argumento `endpoint_input` de la instancia `ModelExplainabilityMonitor`, como se muestra en el siguiente ejemplo de código:

```
from sagemaker.model_monitor import CronExpressionGenerator

model_exp_model_monitor = ModelExplainabilityMonitor(
   role=sagemaker.get_execution_role(),
   ... 
)

schedule = model_exp_model_monitor.create_monitoring_schedule(
   monitor_schedule_name=schedule_name,
   post_analytics_processor_script=s3_code_postprocessor_uri,
   output_s3_uri=s3_report_path,
   statistics=model_exp_model_monitor.baseline_statistics(),
   constraints=model_exp_model_monitor.suggested_constraints(),
   schedule_cron_expression=CronExpressionGenerator.hourly(),
   enable_cloudwatch_metrics=True,
   endpoint_input=EndpointInput(
        endpoint_name=endpoint_name,
        destination="/opt/ml/processing/input/endpoint",
    )
)
```

## Supervisión de la desviación de atribución de características para trabajos de transformación por lotes
<a name="model-monitor-explain-quality-bt"></a>

Para programar un monitor de explicabilidad del modelo para un trabajo de transformación por lotes, pase la instancia `BatchTransformInput` al argumento `batch_transform_input` de la instancia `ModelExplainabilityMonitor`, como se muestra en el siguiente ejemplo de código:

```
from sagemaker.model_monitor import CronExpressionGenerator

model_exp_model_monitor = ModelExplainabilityMonitor(
   role=sagemaker.get_execution_role(),
   ... 
)

schedule = model_exp_model_monitor.create_monitoring_schedule(
   monitor_schedule_name=schedule_name,
   post_analytics_processor_script=s3_code_postprocessor_uri,
   output_s3_uri=s3_report_path,
   statistics=model_exp_model_monitor.baseline_statistics(),
   constraints=model_exp_model_monitor.suggested_constraints(),
   schedule_cron_expression=CronExpressionGenerator.hourly(),
   enable_cloudwatch_metrics=True,
   batch_transform_input=BatchTransformInput(
        destination="opt/ml/processing/data",
        model_name="batch-fraud-detection-model",
        input_manifests_s3_uri="s3://amzn-s3-demo-bucket/batch-fraud-detection/on-schedule-monitoring/in/",
        excludeFeatures="0",
   )
)
```

# Inspección de informes de supervisión de la desviación en la atribución de características de los modelos en producción
<a name="clarify-feature-attribute-drift-report"></a>

Una vez iniciada la programación que configuró de forma predeterminada, tendrá que esperar a que comience su primera ejecución y, a continuación, detener la programación para evitar incurrir en cargos.

Para inspeccionar los informes, use el siguiente código:

```
schedule_desc = model_explainability_monitor.describe_schedule()
execution_summary = schedule_desc.get("LastMonitoringExecutionSummary")
if execution_summary and execution_summary["MonitoringExecutionStatus"] in ["Completed", "CompletedWithViolations"]:
    last_model_explainability_monitor_execution = model_explainability_monitor.list_executions()[-1]
    last_model_explainability_monitor_execution_report_uri = last_model_explainability_monitor_execution.output.destination
    print(f'Report URI: {last_model_explainability_monitor_execution_report_uri}')
    last_model_explainability_monitor_execution_report_files = sorted(S3Downloader.list(last_model_explainability_monitor_execution_report_uri))
    print("Found Report Files:")
    print("\n ".join(last_model_explainability_monitor_execution_report_files))
else:
    last_model_explainability_monitor_execution = None
    print("====STOP==== \n No completed executions to inspect further. Please wait till an execution completes or investigate previously reported failures.")
```

 Si hay alguna infracción en comparación con la referencia, se muestra aquí:

```
if last_model_explainability_monitor_execution:
    model_explainability_violations = last_model_explainability_monitor_execution.constraint_violations()
    if model_explainability_violations:
        print(model_explainability_violations.body_dict)
```

Si su modelo se implementa en un punto final en tiempo real, puede ver las visualizaciones en SageMaker Studio de los resultados y las CloudWatch métricas del análisis seleccionando la pestaña **Puntos de enlace y, a continuación, haciendo doble clic en el punto final**.

# CloudWatch Métricas para el análisis de la desviación de características
<a name="clarify-feature-attribute-drift-cw"></a>

En esta guía, se muestran CloudWatch las métricas y sus propiedades que puede utilizar para analizar la desviación de los atributos de las entidades en SageMaker Clarify. Los trabajos de supervisión de la desviación de atributos de características calculan y publican dos tipos de métricas:
+ El valor SHAP global de cada característica.
**nota**  
El nombre de esta métrica anexa el nombre de la característica proporcionado por la configuración del análisis del trabajo a `feature_`. Por ejemplo, `feature_X` es el valor SHAP global de la característica `X`.
+ El `ExpectedValue` de la métrica.

Estas métricas se publican en el siguiente espacio de CloudWatch nombres:
+ Para puntos de conexión en tiempo real: `aws/sagemaker/Endpoints/explainability-metrics`
+ Para trabajos de transformación por lotes: `aws/sagemaker/ModelMonitoring/explainability-metrics`

Cada métrica tiene las siguientes propiedades:
+ `Endpoint`: el nombre del punto de conexión supervisado, si corresponde.
+ `MonitoringSchedule`: el nombre de la programación del trabajo de supervisión. 
+ `ExplainabilityMethod`: el método utilizado para calcular los valores Shapley. Elija `KernelShap`.
+ `Label`: el nombre proporcionado por la configuración del análisis del trabajo `label_headers` o un marcador de posición similar como `label0`.
+ `ValueType`: el tipo de valor devuelto por la métrica. Elija `GlobalShapValues` o `ExpectedValue`.

Para evitar que los trabajos de supervisión publiquen métricas, establezca `publish_cloudwatch_metrics` en `Disabled` en el mapa `Environment` de definición del [trabajo de explicabilidad del modelo](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelExplainabilityJobDefinition.html).