Interpretierbarkeit: Modellerklärbarkeit beim automatisierten maschinellen Lernen (Vorschau)
GILT FÜR: Python SDK azureml v1
In diesem Artikel erfahren Sie, wie Sie in Azure Machine Learning Erklärungen für automatisierte Machine Learning-Modelle (automatisiertes ML) unter Verwendung des Python SDK erhalten können. Automatisiertes maschinelles Lernen hilft Ihnen dabei, die Featurerelevanz der generierten Modelle zu verstehen.
Alle SDK-Versionen nach 1.0.85 sind standardmäßig auf model_explainability=True
festgelegt. In SDK Version 1.0.85 und in früheren Versionen müssen die Benutzer model_explainability=True
im AutoMLConfig
-Objekt festlegen, um die Interpretierbarkeit des Modells zu nutzen.
In diesem Artikel werden folgende Vorgehensweisen behandelt:
- Ausführen von Interpretierbarkeit während des Trainings für das beste oder ein beliebiges Modell.
- Aktivieren von Visualisierungen, um Muster in Daten und Erläuterungen zu erkennen.
- Implementieren von Interpretierbarkeit beim Ziehen von Rückschlüssen oder bei der Bewertung.
Voraussetzungen
- Interpretierbarkeitsfeatures. Führen Sie
pip install azureml-interpret
aus, um das erforderliche Paket abzurufen. - Vorkenntnisse in Bezug auf die Erstellung von Experimenten für automatisiertes ML. Weitere Informationen zur Verwendung des Azure Machine Learning SDK finden Sie in diesem Objekterkennungsmodell-Tutorial oder unter Konfigurieren automatisierter ML-Experimente.
Wichtig
Dieses Feature ist zurzeit als öffentliche Preview verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar.
Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.
Interpretierbarkeit während des Trainings nach dem besten Modell
Rufen Sie die Erklärung aus best_run
ab, darin sind Erklärungen für unbearbeitete und entwickelte Features enthalten.
Hinweis
Interpretierbarkeit, Modellerklärung, ist nicht für das TCNForecaster-Modell verfügbar, das von Experimenten zur Vorhersage mit automatischem maschinellem Lernen empfohlen wird.
Herunterladen der Relevanzen der entwickelten Features aus dem besten Lauf
Sie können mithilfe von ExplanationClient
Erklärungen zu entwickelten Features aus dem Artefaktspeicher von best_run
herunterladen.
from azureml.interpret import ExplanationClient
client = ExplanationClient.from_run(best_run)
engineered_explanations = client.download_model_explanation(raw=False)
print(engineered_explanations.get_feature_importance_dict())
Herunterladen der Relevanzen der Rohfeatures aus dem besten Lauf
Sie können mithilfe von ExplanationClient
Erklärungen zu den Rohfeatures aus dem Artefaktspeicher von best_run
herunterladen.
from azureml.interpret import ExplanationClient
client = ExplanationClient.from_run(best_run)
raw_explanations = client.download_model_explanation(raw=True)
print(raw_explanations.get_feature_importance_dict())
Interpretierbarkeit während des Trainings nach einem beliebigen Modell
Wenn Sie Modellerklärungen berechnen und visualisieren, sind Sie nicht auf eine vorhandene Modellerklärung für ein Modell zum automatisierten maschinellen Lernen beschränkt. Sie können auch eine Erläuterung für das Modell mit anderen Testdaten erhalten. Die Schritte in diesem Abschnitt zeigen, wie die Relevanz von entwickelten Features basierend auf Ihren Testdaten berechnet und visualisiert wird.
Abrufen eines anderen AutoML-Modells aus dem Training
automl_run, fitted_model = local_run.get_output(metric='accuracy')
Einrichten der Modellerklärungen
Verwenden Sie automl_setup_model_explanations
, um Erläuterungen zu den entwickelten und Rohfeatures abzurufen. fitted_model
kann die folgenden Elemente generieren:
- Empfohlene Daten aus trainierten oder Testbeispielen
- Listen der entwickelten Featurenamen
- Auffindbare Klassen in Ihrer bezeichneten Spalte in Klassifizierungsszenarien
automl_explainer_setup_obj
enthält alle Strukturen aus der oben aufgeführten Liste.
from azureml.train.automl.runtime.automl_explain_utilities import automl_setup_model_explanations
automl_explainer_setup_obj = automl_setup_model_explanations(fitted_model, X=X_train,
X_test=X_test, y=y_train,
task='classification')
Initialisieren von MimicExplainer für Featurerelevanz
Verwenden Sie die MimicWrapper
-Klasse, um eine Erläuterung für automatisierte ML-Modelle zu generieren. Sie können die MimicWrapper-Klasse mit den folgenden Parametern initialisieren:
- Dem Erklärmoduleinrichtungsobjekt
- Ihrem Arbeitsbereich
- Ein Surrogatmodell zur Erklärung des automatisierten ML-Modells
fitted_model
Die MimicWrapper-Klasse verwendet außerdem das automl_run
-Objekt, in das die Erklärungen für entwickelte Features hochgeladen werden.
from azureml.interpret import MimicWrapper
# Initialize the Mimic Explainer
explainer = MimicWrapper(ws, automl_explainer_setup_obj.automl_estimator,
explainable_model=automl_explainer_setup_obj.surrogate_model,
init_dataset=automl_explainer_setup_obj.X_transform, run=automl_run,
features=automl_explainer_setup_obj.engineered_feature_names,
feature_maps=[automl_explainer_setup_obj.feature_map],
classes=automl_explainer_setup_obj.classes,
explainer_kwargs=automl_explainer_setup_obj.surrogate_model_params)
Verwenden von MimicExplainer zum Berechnen und Visualisieren der Relevanz entwickelter Features
Sie können die explain()
-Methode in MimicWrapper mit den transformierten Testbeispielen aufrufen, um die Featurerelevanz für die generierten entwickelten Features abzurufen. Sie können sich auch bei Azure Machine Learning anmelden, um die Erklärungen zur Dashboardvisualisierung der Featurerelevanzwerte der Featurizer für automatisiertes maschinelles Lernen generierten entwickelten Features anzuzeigen.
engineered_explanations = explainer.explain(['local', 'global'], eval_dataset=automl_explainer_setup_obj.X_test_transform)
print(engineered_explanations.get_feature_importance_dict())
Für Modelle, die mit automatisiertem ML trainiert werden, können Sie das beste Modell mithilfe der get_output()
-Methode und der COMPUTE-Erläuterungen lokal erhalten. Sie können die Erklärungsergebnisse mit ExplanationDashboard
aus dem Paket raiwidgets
visualisieren.
best_run, fitted_model = remote_run.get_output()
from azureml.train.automl.runtime.automl_explain_utilities import AutoMLExplainerSetupClass, automl_setup_model_explanations
automl_explainer_setup_obj = automl_setup_model_explanations(fitted_model, X=X_train,
X_test=X_test, y=y_train,
task='regression')
from interpret.ext.glassbox import LGBMExplainableModel
from azureml.interpret.mimic_wrapper import MimicWrapper
explainer = MimicWrapper(ws, automl_explainer_setup_obj.automl_estimator, LGBMExplainableModel,
init_dataset=automl_explainer_setup_obj.X_transform, run=best_run,
features=automl_explainer_setup_obj.engineered_feature_names,
feature_maps=[automl_explainer_setup_obj.feature_map],
classes=automl_explainer_setup_obj.classes)
pip install interpret-community[visualization]
engineered_explanations = explainer.explain(['local', 'global'], eval_dataset=automl_explainer_setup_obj.X_test_transform)
print(engineered_explanations.get_feature_importance_dict()),
from raiwidgets import ExplanationDashboard
ExplanationDashboard(engineered_explanations, automl_explainer_setup_obj.automl_estimator, datasetX=automl_explainer_setup_obj.X_test_transform)
raw_explanations = explainer.explain(['local', 'global'], get_raw=True,
raw_feature_names=automl_explainer_setup_obj.raw_feature_names,
eval_dataset=automl_explainer_setup_obj.X_test_transform)
print(raw_explanations.get_feature_importance_dict()),
from raiwidgets import ExplanationDashboard
ExplanationDashboard(raw_explanations, automl_explainer_setup_obj.automl_pipeline, datasetX=automl_explainer_setup_obj.X_test_raw)
Verwenden von MimicExplainer zum Berechnen und Visualisieren der Relevanz von Rohfeatures
Sie können die explain()
-Methode in MimicWrapper mit den transformierten Testbeispielen aufrufen, um die Featurerelevanz für die Rohfeatures abzurufen. Darüber hinaus können Sie im Machine Learning Studio eine Dashboardvisualisierung der Relevanzwerte der Rohfeatures anzeigen.
raw_explanations = explainer.explain(['local', 'global'], get_raw=True,
raw_feature_names=automl_explainer_setup_obj.raw_feature_names,
eval_dataset=automl_explainer_setup_obj.X_test_transform,
raw_eval_dataset=automl_explainer_setup_obj.X_test_raw)
print(raw_explanations.get_feature_importance_dict())
Interpretierbarkeit beim Ziehen von Rückschlüssen
In diesem Abschnitt erfahren Sie, wie ein Modell für automatisiertes ML mit dem Erklärmodul operationalisiert wird, das im vorherigen Abschnitt zum Berechnen der Erklärungen verwendet wurde.
Registrieren des Modells und des Erklärmoduls für die Bewertung
Verwenden Sie TreeScoringExplainer
, um das Erklärmodul für die Bewertung zu erstellen. Mit diesem werden beim Ziehen von Rückschlüssen die Relevanzwerte für die entwickelten Features berechnet. Sie initialisieren das Erklärmodul für die Bewertung mit dem zuvor berechneten feature_map
-Element.
Speichern Sie das Erklärmodul für die Bewertung, und registrieren das Modell und das Erklärmodul für die Bewertung dann mit dem Modellverwaltungsdienst. Führen Sie den folgenden Code aus:
from azureml.interpret.scoring.scoring_explainer import TreeScoringExplainer, save
# Initialize the ScoringExplainer
scoring_explainer = TreeScoringExplainer(explainer.explainer, feature_maps=[automl_explainer_setup_obj.feature_map])
# Pickle scoring explainer locally
save(scoring_explainer, exist_ok=True)
# Register trained automl model present in the 'outputs' folder in the artifacts
original_model = automl_run.register_model(model_name='automl_model',
model_path='outputs/model.pkl')
# Register scoring explainer
automl_run.upload_file('scoring_explainer.pkl', 'scoring_explainer.pkl')
scoring_explainer_model = automl_run.register_model(model_name='scoring_explainer', model_path='scoring_explainer.pkl')
Erstellen der conda-Abhängigkeiten zum Einrichten des Diensts
Erstellen Sie dann die erforderlichen Umgebungsabhängigkeiten im Container für das bereitgestellte Modell. Beachten Sie, dass azureml-defaults mit Version >= 1.0.45 als PIP-Abhängigkeit gelistet sein muss, da sie die Funktionalität enthält, die zum Hosten des Modells als Webdienst erforderlich ist.
from azureml.core.conda_dependencies import CondaDependencies
azureml_pip_packages = [
'azureml-interpret', 'azureml-train-automl', 'azureml-defaults'
]
myenv = CondaDependencies.create(conda_packages=['scikit-learn', 'pandas', 'numpy', 'py-xgboost<=0.80'],
pip_packages=azureml_pip_packages,
pin_sdk_version=True)
with open("myenv.yml","w") as f:
f.write(myenv.serialize_to_string())
with open("myenv.yml","r") as f:
print(f.read())
Erstellen des Bewertungsskripts
Schreiben Sie ein Skript, das Ihr Modell lädt und Vorhersagen und Erklärungen auf Basis eines neuen Datenbatches erstellt.
%%writefile score.py
import joblib
import pandas as pd
from azureml.core.model import Model
from azureml.train.automl.runtime.automl_explain_utilities import automl_setup_model_explanations
def init():
global automl_model
global scoring_explainer
# Retrieve the path to the model file using the model name
# Assume original model is named automl_model
automl_model_path = Model.get_model_path('automl_model')
scoring_explainer_path = Model.get_model_path('scoring_explainer')
automl_model = joblib.load(automl_model_path)
scoring_explainer = joblib.load(scoring_explainer_path)
def run(raw_data):
data = pd.read_json(raw_data, orient='records')
# Make prediction
predictions = automl_model.predict(data)
# Setup for inferencing explanations
automl_explainer_setup_obj = automl_setup_model_explanations(automl_model,
X_test=data, task='classification')
# Retrieve model explanations for engineered explanations
engineered_local_importance_values = scoring_explainer.explain(automl_explainer_setup_obj.X_test_transform)
# Retrieve model explanations for raw explanations
raw_local_importance_values = scoring_explainer.explain(automl_explainer_setup_obj.X_test_transform, get_raw=True)
# You can return any data type as long as it is JSON-serializable
return {'predictions': predictions.tolist(),
'engineered_local_importance_values': engineered_local_importance_values,
'raw_local_importance_values': raw_local_importance_values}
Bereitstellen des Diensts
Stellen Sie den Dienst unter Verwendung der conda-Datei und der Bewertungsdatei aus den vorherigen Schritten bereit.
from azureml.core.webservice import Webservice
from azureml.core.webservice import AciWebservice
from azureml.core.model import Model, InferenceConfig
from azureml.core.environment import Environment
aciconfig = AciWebservice.deploy_configuration(cpu_cores=1,
memory_gb=1,
tags={"data": "Bank Marketing",
"method" : "local_explanation"},
description='Get local explanations for Bank marketing test data')
myenv = Environment.from_conda_specification(name="myenv", file_path="myenv.yml")
inference_config = InferenceConfig(entry_script="score_local_explain.py", environment=myenv)
# Use configs and models generated above
service = Model.deploy(ws,
'model-scoring',
[scoring_explainer_model, original_model],
inference_config,
aciconfig)
service.wait_for_deployment(show_output=True)
Rückschluss mit Testdaten
Führen Sie mit einigen Testdaten einen Rückschluss aus, um den vorhergesagten Wert aus dem Modell für automatisiertes maschinelles Lernen anzuzeigen. Dies wird derzeit nur über das Azure Machine Learning SDK unterstützt. Zeigen Sie die Featurerelevanzen an, die zu einem vorhergesagten Wert beitragen.
if service.state == 'Healthy':
# Serialize the first row of the test data into json
X_test_json = X_test[:1].to_json(orient='records')
print(X_test_json)
# Call the service to get the predictions and the engineered explanations
output = service.run(X_test_json)
# Print the predicted value
print(output['predictions'])
# Print the engineered feature importances for the predicted value
print(output['engineered_local_importance_values'])
# Print the raw feature importances for the predicted value
print('raw_local_importance_values:\n{}\n'.format(output['raw_local_importance_values']))
Visualisieren, um Muster in Daten und Erläuterungen zur Trainingszeit zu ermitteln
Sie können das Diagramm zur Featurerelevanz in Ihrem Arbeitsbereich in Azure Machine Learning Studio anzeigen. Wählen Sie nach Abschluss der Ausführung des automatisierten maschinellen Lernens Modelldetails anzeigen aus, um eine bestimmte Ausführung anzuzeigen. Klicken Sie auf die Registerkarte Erklärungen, um die Visualisierungen im Erklärungsdashboard anzuzeigen.
Weitere Informationen zur Visualisierung von Erläuterungsdashboards und bestimmten Plots finden Sie im Leitfaden zur Interpretierbarkeit.
Nächste Schritte
Weitere Informationen dazu, wie Sie Modellerklärungen und Featurerelevanz in anderen Bereichen als dem automatisierten maschinellen Lernen aktivieren können, finden Sie unter Weitere Techniken für die Interpretierbarkeit von Modellen.