

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Feature-Attributions-Drift für Modelle in der Produktion
<a name="clarify-model-monitor-feature-attribution-drift"></a>

Eine Abweichung bei der Verteilung von Live-Daten für Modelle, die sich in der Produktion befinden, kann zu einer entsprechenden Abweichung bei den Werten für die Feature-Zuordnung führen, genauso wie sie bei der Überwachung von Messwerten zu Verzerrungen führen kann. Die Überwachung der Feature-Attribution von Amazon SageMaker Clarify hilft Datenwissenschaftlern und ML-Technikern dabei, Prognosen für Abweichungen bei der Feature-Attribution regelmäßig zu überwachen. Während das Modell überwacht wird, können Kunden exportierbare Berichte und Grafiken mit detaillierten Funktionszuweisungen in SageMaker Studio anzeigen und Benachrichtigungen in Amazon CloudWatch so konfigurieren, dass sie Benachrichtigungen erhalten, wenn festgestellt wird, dass die Zuordnungswerte einen bestimmten Schwellenwert überschreiten. 

Um dies anhand einer bestimmten Situation zu veranschaulichen, stellen Sie sich ein hypothetisches Szenario für Hochschulzulassungen vor. Gehen Sie davon aus, dass wir die folgenden (aggregierten) Featureszuordnungswerte in den Trainingsdaten und in den Live-Daten beobachten:

Hypothetisches Szenario für die Zulassung zum College


| Feature | Zuordnung in Trainingsdaten | Zuordnung in Live-Daten | 
| --- | --- | --- | 
| SAT-Score | 0,70 | 0.10 | 
| LÜCKE | 0.50 | 0.20 | 
| Klassenrang | 0,05 | 0,70 | 

Der Wechsel von Trainingsdaten zu Live-Daten scheint signifikant zu sein. Das Feature-Ranking hat sich komplett umgekehrt. Ähnlich wie bei der Verzerrungsdrift können die Abweichungen bei der Feature-Attribution durch eine Änderung der Live-Datenverteilung verursacht werden und eine genauere Untersuchung des Modellverhaltens in den Live-Daten rechtfertigen. Auch hier besteht der erste Schritt in diesen Szenarien darin, einen Alarm auszulösen, dass eine Abweichung aufgetreten ist.

Wir können die Abweichung erkennen, indem wir vergleichen, wie sich die Rangfolge der einzelnen Merkmale von Trainingsdaten zu Live-Daten verändert hat. Wir wollen nicht nur sensibel auf Änderungen in der Rangfolge reagieren, sondern auch auf den reinen Attributionswert der Features achten. Bei zwei Features, die in der Rangliste um die gleiche Anzahl von Positionen fallen, wenn es um die gleiche Anzahl von Positionen geht, die von den Trainingsdaten zu den Live-Daten gehen, wollen wir beispielsweise sensibler auf das Feature reagieren, das in den Trainingsdaten einen höheren Attributionswert hatte. Unter Berücksichtigung dieser Eigenschaften verwenden wir den NDCG-Wert (Normalized Discounted Cumulative Gain), um die Rangfolge der Featureszuordnungen von Trainings- und Live-Daten zu vergleichen.

Gehen Sie insbesondere davon aus, dass wir Folgendes haben:
+ *F= [f1,..., fm] * ist die Liste der Features, sortiert nach ihren Attributionswerten in den Trainingsdaten, wobei *m* die Gesamtzahl der Features ist. In unserem Fall ist zum Beispiel *F* = [SAT-Score, GPA, Klassenrang].
+ *a(f)* ist eine Funktion, die den Wert der Merkmalszuweisung für das Trainingsdaten bei einem bestimmten Feature *f* zurückgibt. Zum Beispiel: *a* (SAT-Score) = 0,70.
+ *F′= [f′1,..., f′m] * ist die Liste der Features, sortiert nach ihren Attributionswerten in den Live-Daten. Zum Beispiel *F* ′= [Klassenrang, Notendurchschnitt, SAT-Score].

Dann können wir den NDCG wie folgt berechnen:

        NDCG=DCG/IDCG

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

Die Menge DCG misst, ob Features mit hoher Zuordnung in den Trainingsdaten auch in der anhand der Live-Daten berechneten Featureszuweisung höher eingestuft werden. Die Größe iDCG misst den *idealen Wert* und ist lediglich ein Normalisierungsfaktor, um sicherzustellen, dass die endgültige Menge im Bereich [0, 1] liegt, wobei 1 der bestmögliche Wert ist. Ein NDCG-Wert von 1 bedeutet, dass die Rangfolge der Feature-Zuordnung in den Live-Daten mit der Rangfolge in den Trainingsdaten übereinstimmt. In diesem speziellen Beispiel beträgt der NDCG-Wert 0,69, da sich die Rangfolge erheblich geändert hat.

In SageMaker Clarify lösen wir automatisch eine Warnung aus, wenn der NDCG-Wert unter 0,90 liegt.

## Model Monitor Beispiel-Notebooks
<a name="clarify-model-monitor-sample-notebooks-feature-drift"></a>

SageMaker Clarify stellt das folgende Beispiel-Notizbuch zur Verfügung, das zeigt, wie Inferenzdaten für einen Echtzeit-Endpunkt erfasst, eine Ausgangsbasis für die Überwachung sich entwickelnder Verzerrungen erstellt und die Ergebnisse überprüft werden: 
+ [Überwachung von Verzerrungen und Abweichungen bei der Merkmalszuweisung Amazon SageMaker Clarify](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker_model_monitor/fairness_and_explainability/SageMaker-Model-Monitor-Fairness-and-Explainability.html) — Verwenden Sie Amazon SageMaker Model Monitor, um Verzerrungen und Abweichungen bei der Merkmalszuweisung im Laufe der Zeit zu überwachen.

Es wurde verifiziert, dass dieses Notizbuch nur in SageMaker Studio ausgeführt werden kann. Anweisungen zum Öffnen eines Notizbuchs in SageMaker Studio finden Sie unter[Erstellen oder öffnen Sie ein Amazon SageMaker Studio Classic-Notizbuch](notebooks-create-open.md). Wenn Sie aufgefordert werden, einen Kernel auszuwählen, wählen Sie **Python 3 (Data Science)**. Die folgenden Themen enthalten die Highlights der letzten beiden Schritte sowie Codebeispiele aus dem Beispiel-Notebook. 

**Topics**
+ [Model Monitor Beispiel-Notebooks](#clarify-model-monitor-sample-notebooks-feature-drift)
+ [Erstellen Sie eine SHAP-Baseline für Modelle in der Produktion](clarify-model-monitor-shap-baseline.md)
+ [Abweichungen bei der Zuordnung von Modellmerkmalen](clarify-model-monitor-model-attribution-drift-violations.md)
+ [Parameter zur Überwachung von Attributions-Drift](clarify-config-json-monitor-model-explainability-parameters.md)
+ [Planen Sie Aufträge zur Überwachung von Feature-Attributen](clarify-model-monitor-feature-attribute-drift-schedule.md)
+ [Untersuchen Sie Berichte auf Abweichungen von Featuresattributen in Produktionsmodellen](clarify-feature-attribute-drift-report.md)
+ [CloudWatch Metriken für die Feature-Drift-Analyse](clarify-feature-attribute-drift-cw.md)

# Erstellen Sie eine SHAP-Baseline für Modelle in der Produktion
<a name="clarify-model-monitor-shap-baseline"></a>

Die Erklärungen sind in der Regel kontrastiv, d. h. sie berücksichtigen Abweichungen von einer Ausgangsbasis. Informationen zu Ausgangswerten für die Erklärbarkeit finden Sie unter [SHAP-Baselines zur Erläuterbarkeit](clarify-feature-attribute-shap-baselines.md).

Clarify bietet nicht nur Erklärungen für Inferenzen pro Instanz, SageMaker sondern unterstützt auch globale Erklärungen für ML-Modelle, die Ihnen helfen, das Verhalten eines Modells als Ganzes in Bezug auf seine Funktionen zu verstehen. SageMaker Clarify generiert eine globale Erklärung eines ML-Modells, indem die Shapley-Werte über mehrere Instanzen hinweg aggregiert werden. SageMaker Clarify unterstützt die folgenden verschiedenen Aggregationsarten, mit denen Sie Baselines definieren können:
+ `mean_abs` – Mittelwert der absoluten SHAP-Werte für alle Instances.
+ `median` – Median der SHAP-Werte für alle Instances.
+ `mean_sq` – Mittelwert der quadrierten SHAP-Werte für alle Instances.

Nachdem Sie Ihre Anwendung für die Erfassung von Echtzeit- oder Batch-Transformationsinferenzdaten konfiguriert haben, besteht die erste Aufgabe zur Überwachung von Abweichungen bei der Featureszuweisung darin, eine Ausgangsbasis für den Vergleich zu erstellen. Dazu gehören die Konfiguration der Dateneingaben, die sensitiven Gruppen, die Art und Weise, wie die Vorhersagen erfasst werden, sowie das Modell und seine Messwerte für Verzerrungen nach dem Schulen. Dann müssen Sie den Baselining-Auftrag starten. Der Model Explainability Monitor kann die Vorhersagen eines eingesetzten Modells erklären, das Rückschlüsse zieht, und erkennt regelmäßig Abweichungen bei der Merkmalszuweisung.

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

In diesem Beispiel teilt sich der JobAuftrag für die Baselining-Erklärung den Testdatensatz mit dem Bias-Baselining-Auftrag, verwendet also denselben `DataConfig`, und der einzige Unterschied ist der Auftrag-Output-URI.

```
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,
)
```

Derzeit bietet der SageMaker Clarify Explainer eine skalierbare und effiziente Implementierung von SHAP, sodass die Konfiguration der Erklärbarkeit wie folgt aussieht: SHAPConfig
+ `baseline` – Eine Liste von Zeilen (mindestens eine) oder S3-Objekt-URI, die als Basisdatensatz im Kernel-SHAP-Algorithmus verwendet werden sollen. Das Format sollte mit dem Datensatzformat identisch sein. Jede Zeile sollte nur das Feature enthalten columns/values und die Labelspalten/Werte weglassen.
+ `num_samples` – Anzahl der Samples, die im Kernel-SHAP-Algorithmus verwendet werden sollen. Diese Zahl bestimmt die Größe des generierten synthetischen Datensatzes zur Berechnung der SHAP-Werte.
+ agg\$1method – Aggregationsmethode für globale SHAP-Werte. Die folgenden Werte sind gültig:
  + `mean_abs` – Mittelwert der absoluten SHAP-Werte für alle Instances.
  + `median` – Median der SHAP-Werte für alle Instances.
  + `mean_sq` – Mittelwert der quadrierten SHAP-Werte für alle Instances.
+ `use_logit` – Indikator dafür, ob die Logit-Funktion auf die Modellvorhersagen angewendet werden soll. Der Standardwert ist `False`. Ist `use_logit` `True`, werden die SHAP-Werte in logarithmischen Odds-Einheiten ausgedrückt.
+ `save_local_shap_values` (bool) – Indikator dafür, ob die lokalen SHAP-Werte am Ausgabespeicherort gespeichert werden sollen. Der Standardwert ist `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,
)
```

Startet einen Baselining-Auftrag. Dasselbe `model_config` ist erforderlich, da für den Auftrag mit dem Baselining der Erklärbarkeit ein Schattenendpunkt erstellt werden muss, um Vorhersagen für den generierten synthetischen Datensatz zu erhalten.

```
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}")
```

# Abweichungen bei der Zuordnung von Modellmerkmalen
<a name="clarify-model-monitor-model-attribution-drift-violations"></a>

Bei Aufträgen zur Abweichung bei der Funktionenzuweisung werden die in der [ Baseline Basiskonfiguration](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelExplainabilityJobDefinition.html#sagemaker-CreateModelExplainabilityJobDefinition-request-ModelExplainabilityBaselineConfig) mit den aktuellen `MonitoringExecution` Analyseergebnissen verglichen. Wenn Verstöße erkannt werden, listet der Job sie in der Datei *constraint\$1violations.json* im Ausgabeverzeichnis der Ausführung auf und markiert den Ausführungsstatus als [Interpretieren von Ergebnissen](model-monitor-interpreting-results.md).

Hier ist das Schema der Datei mit Verstößen gegen Abweichungen bei der Feature-Attribution.
+ `label` – Der Name der Beschriftungen, die Konfiguration der Auftragsanalyse `label_headers` oder ein Platzhalter wie `"label0"`.
+ `metric_name` – Der Name der Methode zur Erklärbarkeitsanalyse. Derzeit wird nur `shap` unterstützt.
+ `constraint_check_type` – Die Art des überwachten Verstoßes. Derzeit wird nur `feature_attribution_drift_check` unterstützt.
+ `description` – Eine beschreibende Nachricht zur Erläuterung des Verstoßes.

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

Für jede Beschriftung in `explanations` diesem Abschnitt berechnen die Monitoring-Aufträge den [NdCG-Score](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.ndcg_score.html) ihrer globalen SHAP-Werte in der Datei mit den Basiseinschränkungen und in der Ergebnisdatei der Jobanalyse (*analysis.json*). Wenn der Wert unter 0,9 liegt, wird ein Verstoß protokolliert. Der kombinierte globale SHAP-Wert wird ausgewertet, sodass der Verstoßeintrag keine `“feature”` Felder enthält. Die folgende Ausgabe enthält ein Beispiel für mehrere protokollierte Verstöße.

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

# Parameter zur Überwachung von Attributions-Drift
<a name="clarify-config-json-monitor-model-explainability-parameters"></a>

Amazon SageMaker Clarify Explainability Monitor verwendet eine Teilmenge der Parameter wieder, die in der Analysekonfiguration von verwendet wurden. [Analyse-Konfigurationsdateien](clarify-processing-job-configure-analysis.md) Die folgenden Parameter müssen in einer JSON-Datei angegeben werden, und der Pfad muss im `ConfigUri` Parameter von [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelExplainabilityAppSpecification](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelExplainabilityAppSpecification) angegeben werden.
+ `"version"` – (Optional) Schemaversion der Konfigurationsdatei. Ist dieser Parameter nicht angegeben, wird die neueste unterstützte Version verwendet.
+ `"headers"` – (Optional) Eine Liste von Feature-Namen im Datensatz. Für die Erklärbarkeitsanalyse sind keine Beschriftungen erforderlich. 
+ `"methods"` – Eine Liste der Methoden und ihrer Parameter für die Analysen und Berichte. Wenn ein Abschnitt weggelassen wird, wird er nicht berechnet.
  + `"shap"` – (Optional) Abschnitt zur Berechnung von SHAP-Werten.
    + `"baseline"` – (Optional) Eine Liste von Zeilen (mindestens eine) oder eine Amazon Simple Storage Service Amazon S3-Objekt-URI. Wird als Basisdatensatz (auch als Hintergrunddatensatz bezeichnet) im Kernel-SHAP-Algorithmus verwendet. Das Format sollte dem Datensatzformat entsprechen. Jede Zeile sollte nur die Feature-Spalten (oder Werte) enthalten. Bevor Sie jede Zeile an das Modell senden, lassen Sie alle Spalten aus, die ausgeschlossen werden müssen.
    + `"num_samples"` – Anzahl der Samples, die im Kernel-SHAP-Algorithmus verwendet werden sollen. Diese Zahl bestimmt die Größe des generierten synthetischen Datensatzes zur Berechnung der SHAP-Werte. Falls nicht angegeben, wählt ein SageMaker Clarif-Job den Wert auf der Grundlage einer Anzahl von Funktionen aus.
    + `"agg_method"` – Aggregationsmethode für globale SHAP-Werte. Gültige Werte sind:
      + `"mean_abs"` – Mittelwert der absoluten SHAP-Werte für alle Instances.
      + `"median"` – Median der SHAP-Werte für alle Instances.
      + `"mean_sq"` – Mittelwert der quadrierten SHAP-Werte für alle Instances.
    + `"use_logit"` – (Optional) Boolescher Wert, der angibt, ob die Logit-Funktion auf die Modellvorhersagen angewendet werden soll. Ist `"use_logit"` `true`, haben die SHAP-Werte Einheiten mit logarithmischen Wahrscheinlichkeiten. Der Standardwert ist `false`. 
    + `"save_local_shap_values"` – (Optional) Boolescher Wert, der angibt, ob lokale SHAP-Werte am Ausgabespeicherort gespeichert werden sollen. Verwenden Sie `true`, um sie zu speichern. Verwenden Sie `false`, um sie nicht zu speichern. Der Standardwert ist `false`.
+ `"predictor"` – (Optional für Echtzeit-Endpunkte, erforderlich für Batch-Transformation) Abschnitt über Modellparameter, erforderlich, wenn `"shap"` und `"post_training_bias"` Abschnitte vorhanden sind.
  + `"model_name"` – Von der `CreateModel` API erstellter Modellname mit dem Containermodus als `SingleModel`.
  + `"instance_type"` – Instance-Typ für den Schattenendpunkt.
  + `"initial_instance_count"` – Anzahl der Instances für den Schattenendpunkt.
  + `"content_type"` – (Optional) Das Modelleingabeformat, das verwendet werden soll, um Rückschlüsse auf den Schattenendpunkt zu ziehen. Gültige Werte sind `"text/csv"` für CSV, `"application/jsonlines"` für JSON Lines, `application/x-parquet` für Apache Parquet und `application/x-image` um die Erklärbarkeit von Computer Vision zu ermöglichen. Der Standardwert ist der gleiche wie das `dataset_type` Format.
  + `"accept_type"` – (Optional) Das *Modellausgabeformat*, das verwendet werden soll, um Rückschlüsse auf den Schattenendpunkt zu ziehen. Gültige Werte sind `"text/csv"` für CSV und `"application/jsonlines"` für JSON-Lines. Wenn nicht angegeben, verwendet SageMaker Clarify den Antwortdatentyp der erfassten Daten.
  + `"content_template"` – (Optional) Eine Vorlagenzeichenfolge, die verwendet wird, um die Modelleingabe aus Datensatz-Instances zu konstruieren. Sie wird nur verwendet, wenn `"content_type"` `"application/jsonlines"` ist. Die Vorlage sollte nur einen Platzhalter haben, `$features`, der zur Laufzeit durch die Feature-Liste ersetzt wird. Wenn zum Beispiel eine Instance (keine Beschriftung ) angegeben `"content_template":"{\"myfeatures\":$features}"` `1,2,3` ist, dann wird die Modelleingabe zu JSON Lines `'{"myfeatures":[1,2,3]}'`.
  + `"label_headers"` – (Optional) Eine Liste von Werten, die der Datensatz `"label"` aufnimmt. Ordnet die vom Modellendpunkt oder der Batch-Transformationsaufgabe zurückgegebenen Werte den entsprechenden Labelwerten zu. Wenn es angegeben ist, verwendet der Analysebericht die Überschriften anstelle von Platzhaltern wie `“label0”`.

Die anderen Parameter sollten in der `EndpointInput` (für Echtzeit-Endpunkte) oder `BatchTransformInput` (für Batch-Transformationsjobs) von [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelExplainabilityJobInput](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelExplainabilityJobInput) API bereitgestellt werden.
+ `FeaturesAttribute` – Dieser Parameter ist erforderlich, wenn das Eingabedatenformat für Endgeräte oder Batch-Aufträge `"application/jsonlines"` lautet. Es wird JMESPath verwendet, um die Feature-Spalten zu finden, wenn das Datensatzformat JSON Lines ist.
+ `ProbabilityAttribute`— Index oder JMESPath Position in der Modellausgabe für Wahrscheinlichkeiten. Handelt es sich bei der Modellausgabe beispielsweise um JSON-Linien mit einer Liste von Bezeichnungen und Wahrscheinlichkeiten, dann wird die Bezeichnung, die der maximalen Wahrscheinlichkeit entspricht, für Bias-Berechnungen ausgewählt.

## Beispiel für JSON-Konfigurationsdateien für CSV- und JSON-Lines-Datensätze
<a name="clarify-config-json-monitor-model-explainability-parameters-examples"></a>

Im Folgenden finden Sie Beispiele für JSON-Dateien, die zur Konfiguration von CSV- und JSON-Lines-Datensätzen verwendet werden, um sie auf Abweichungen bei der Feature-Zuordnung zu überwachen.

**Topics**
+ [CSV-Datensätze](#clarify-config-json-monitor-model-explainability-parameters-example-csv)
+ [JSON-Lines-Datensätze](#clarify-config-json-monitor-model-explainability-parameters-example-jsonlines)

### CSV-Datensätze
<a name="clarify-config-json-monitor-model-explainability-parameters-example-csv"></a>

Stellen Sie sich einen Datensatz mit drei numerischen Feature-Spalten vor, wie im folgenden Beispiel.

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

Gehen Sie davon aus, dass die Modellausgabe aus zwei Spalten besteht, wobei die erste Spalte das vorhergesagte Label und die zweite die Wahrscheinlichkeit darstellt, wie im folgenden Beispiel.

```
1, 0.5385257417814224
```

Die folgende Beispiel-JSON-Konfigurationsdatei zeigt, wie dieser CSV-Datensatz konfiguriert werden kann.

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

Das vorhergesagte Label wird durch den `"ProbabilityAttribute"` Parameter ausgewählt. Die Nummerierung basiert auf Null, sodass 1 für die zweite Spalte der Modellausgabe steht.

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

### JSON-Lines-Datensätze
<a name="clarify-config-json-monitor-model-explainability-parameters-example-jsonlines"></a>

Stellen Sie sich einen Datensatz mit vier Feature-Spalten und einer Beschriftung-Spalte vor, wobei das erste Feature und die Beschriftung binär sind, wie im folgenden Beispiel.

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

Die Modelleingabe entspricht dem Datensatz-Format, und die Modellausgabe sind JSON-Linien, wie im folgenden Beispiel.

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

Im folgenden Beispiel zeigt die JSON-Konfigurationsdatei, wie dieser JSON Lines-Datensatz konfiguriert werden kann.

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

Anschließend wird der `"features"` Parameterwert in `EndpointInput` (für Echtzeit-Endpunkte) oder `BatchTransformInput` (für Batch-Transformationsauftrages) verwendet, um die Features im Datensatz zu lokalisieren, und der `"probability"` Parameterwert wählt den Wahrscheinlichkeitswert aus der Modellausgabe aus.

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

# Planen Sie Aufträge zur Überwachung von Feature-Attributen
<a name="clarify-model-monitor-feature-attribute-drift-schedule"></a>

Nachdem Sie Ihre SHAP-Baseline erstellt haben, können Sie die `create_monitoring_schedule()` Methode Ihrer `ModelExplainabilityMonitor` Klasseninstance aufrufen, um eine stündliche Überwachung der Modellerklärbarkeit zu planen. In den folgenden Abschnitten erfahren Sie, wie Sie einen Monitor zur Erklärung des Modells für ein Modell erstellen, das auf einem Echtzeit-Endpunkt bereitgestellt wird, sowie für einen Batch-Transformationsauftrag.

**Wichtig**  
Sie können bei der Erstellung Ihres Überwachungsplans entweder eine Batch-Transformationseingabe oder eine Endpunkteingabe angeben, jedoch nicht beides.

Wenn ein Baselining-Auftrag übermittelt wurde, übernimmt der Monitor automatisch die Analysekonfiguration aus dem Baselining-Auftrag. Wenn Sie jedoch den Baselining-Schritt überspringen oder der Capture-Datensatz einen anderen Charakter als der Trainingsdatensatz hat, müssen Sie die Analysekonfiguration angeben. `ModelConfig` ist aus demselben Grund erforderlich, aus dem es `ExplainabilityAnalysisConfig` für den Baselining-Auftrag erforderlich ist. Beachten Sie, dass für die Berechnung der Feature-Attribution nur Features erforderlich sind. Daher sollten Sie die Ground-Truth-Etikettierung ausschließen.

## Überwachung von Abweichungen bei der Merkmalszuweisung bei Modellen, die auf Echtzeit-Endpunkten bereitgestellt werden
<a name="model-monitor-explain-quality-rt"></a>

Um einen Monitor der Modellerklärbarkeit für einen Echtzeit-Endpunkt zu planen, übergeben Sie Ihre `EndpointInput` Instance an das `endpoint_input` Argument Ihrer `ModelExplainabilityMonitor` Instance, wie im folgenden Codebeispiel gezeigt:

```
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",
    )
)
```

## Funktionen zur Überwachung von Attributionsabweichungen bei Batch-Transformationsaufträgen
<a name="model-monitor-explain-quality-bt"></a>

Um eine Überwachung der Modellerklärbarkeit für einen Batch-Transformationsjauftrag zu planen, übergeben Sie Ihre `BatchTransformInput` Instance an das `batch_transform_input` Argument Ihrer `ModelExplainabilityMonitor` Instance, wie im folgenden Codebeispiel gezeigt:

```
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",
   )
)
```

# Untersuchen Sie Berichte auf Abweichungen von Featuresattributen in Produktionsmodellen
<a name="clarify-feature-attribute-drift-report"></a>

Nachdem der Zeitplan, den Sie eingerichtet haben, standardmäßig gestartet wurde, müssen Sie warten, bis die erste Ausführung gestartet wird, und den Zeitplan dann beenden, um Gebühren zu vermeiden.

Um die Berichte einzusehen, verwenden Sie den folgenden Code:

```
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.")
```

 Falls es im Vergleich zum Ausgangswert Verstöße gibt, werden diese hier aufgelistet:

```
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)
```

Wenn Ihr Modell auf einem Echtzeit-Endpunkt bereitgestellt wird, können Sie sich in SageMaker Studio Visualisierungen der Analyseergebnisse und CloudWatch Kennzahlen anzeigen lassen, indem Sie die Registerkarte **Endpunkte auswählen und dann auf den Endpunkt** doppelklicken.

# CloudWatch Metriken für die Feature-Drift-Analyse
<a name="clarify-feature-attribute-drift-cw"></a>

Dieser Leitfaden zeigt CloudWatch Metriken und ihre Eigenschaften, die Sie für die Driftanalyse von Merkmalsattributen in SageMaker Clarify verwenden können. Aufträge zur Überwachung der Drift bei Feature-Attributen berechnen und veröffentlichen zwei Arten von Metriken:
+ Der globale SHAP-Wert jedes Features.
**Anmerkung**  
Mit dem Namen dieser Metrik wird der von der Auftraganalyse-Konfiguration `feature_` bereitgestellte Feature-Name an angehängt. `feature_X` ist beispielsweise der globale SHAP-Wert für ein Feature `X`.
+ Das `ExpectedValue` der Metrik.

Diese Metriken werden im folgenden CloudWatch Namespace veröffentlicht:
+ Für Echtzeit-Endpunkte: `aws/sagemaker/Endpoints/explainability-metrics`
+ Erstellen Sie Stapeltransformationsaufträge: `aws/sagemaker/ModelMonitoring/explainability-metrics`

Jede Metrik hat die folgenden Eigenschaften:
+ `Endpoint`: Der Name des überwachten Endpunkts, falls zutreffend.
+ `MonitoringSchedule`: Der Name des Überwachungszeitplans. 
+ `ExplainabilityMethod`: Die zur Berechnung der Shapley-Werte verwendete Methode. Wählen Sie `KernelShap`.
+ `Label`: Der Name, der in der Auftraganalyse-Konfiguration angegeben wurde `label_headers`, oder ein Platzhalter wie. `label0`.
+ `ValueType`: Der Typ des von der Metrik zurückgegebenen Werts. Wählen Sie `GlobalShapValues` oder `ExpectedValue`.

Um zu verhindern, dass die Monitoring-Aufträge Metriken veröffentlichen, setzen Sie `publish_cloudwatch_metrics` auf `Disabled` in der `Environment` Map of [Model Explainability Auftrag](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelExplainabilityJobDefinition.html) Definition auf.