Możliwość interpretacji: objaśnienie modelu w zautomatyzowanym uczeniu maszynowym (wersja zapoznawcza)
DOTYCZY: Zestaw SDK języka Python w wersji 1
Z tego artykułu dowiesz się, jak uzyskać wyjaśnienia dotyczące modeli zautomatyzowanego uczenia maszynowego (zautomatyzowanego uczenia maszynowego) w usłudze Azure Machine Learning przy użyciu zestawu SDK języka Python. Zautomatyzowane uczenie maszynowe ułatwia zrozumienie znaczenia funkcji generowanych modeli.
Wszystkie wersje zestawu SDK po ustawieniu domyślnie wersji 1.0.85 model_explainability=True
. W zestawie SDK w wersji 1.0.85 i starszych użytkownicy muszą ustawić model_explainability=True
obiekt w AutoMLConfig
celu korzystania z możliwości interpretowania modelu.
W tym artykule omówiono sposób wykonywania następujących zadań:
- Wykonywanie interpretacji podczas trenowania dla najlepszego modelu lub dowolnego modelu.
- Włącz wizualizacje, aby ułatwić wyświetlanie wzorców w danych i wyjaśnieniach.
- Implementowanie możliwości interpretacji podczas wnioskowania lub oceniania.
Wymagania wstępne
- Funkcje interpretacji. Uruchom polecenie
pip install azureml-interpret
, aby uzyskać niezbędny pakiet. - Znajomość tworzenia eksperymentów zautomatyzowanego uczenia maszynowego. Aby uzyskać więcej informacji na temat korzystania z zestawu AZURE Machine Learning SDK, ukończ ten samouczek dotyczący modelu wykrywania obiektów lub zobacz konfigurowanie eksperymentów zautomatyzowanego uczenia maszynowego.
Ważne
Ta funkcja jest obecnie w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone.
Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
Możliwość interpretacji podczas trenowania najlepszego modelu
Pobierz wyjaśnienie z elementu best_run
, który zawiera wyjaśnienia dotyczące zarówno pierwotnych, jak i zaprojektowanych funkcji.
Uwaga
Interpretacja, wyjaśnienie modelu, nie jest dostępna dla modelu TCNForecaster zalecanego przez eksperymenty prognozowania automatycznego uczenia maszynowego.
Pobierz zaprojektowane znaczenie funkcji z najlepszego przebiegu
Możesz użyć ExplanationClient
polecenia , aby pobrać objaśnienia funkcji zaprojektowanych z magazynu artefaktów obiektu best_run
.
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())
Pobieranie ważności nieprzetworzonych funkcji z najlepszego przebiegu
Możesz użyć ExplanationClient
polecenia , aby pobrać nieprzetworzone wyjaśnienia funkcji z magazynu artefaktów obiektu best_run
.
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())
Możliwość interpretowania podczas trenowania dla dowolnego modelu
Podczas obliczania wyjaśnień modelu i ich wizualizowania nie jest ograniczone do istniejącego wyjaśnienia modelu zautomatyzowanego uczenia maszynowego. Możesz również uzyskać wyjaśnienie modelu z różnymi danymi testowymi. W krokach w tej sekcji pokazano, jak obliczać i wizualizować znaczenie funkcji zaprojektowanych na podstawie danych testowych.
Pobieranie dowolnego innego modelu automatycznego uczenia maszynowego z trenowania
automl_run, fitted_model = local_run.get_output(metric='accuracy')
Konfigurowanie wyjaśnień modelu
Użyj automl_setup_model_explanations
polecenia , aby uzyskać opracowane i nieprzetworzone wyjaśnienia. Element fitted_model
może wygenerować następujące elementy:
- Polecane dane z przykładów wytrenowanych lub testowych
- Listy nazw funkcji zaprojektowanych
- Klasy z możliwością znajdowania w kolumnie oznaczonej etykietą w scenariuszach klasyfikacji
Zawiera automl_explainer_setup_obj
wszystkie struktury z powyższej listy.
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')
Inicjowanie narzędzia Wyjaśnij naśladowcę pod kątem ważności funkcji
Aby wygenerować wyjaśnienie dla zautomatyzowanych modeli uczenia maszynowego, użyj MimicWrapper
klasy . Zainicjuj program MimicWrapper przy użyciu następujących parametrów:
- Obiekt konfiguracji objaśnienia
- Obszar roboczy
- Model zastępczy wyjaśniający zautomatyzowany model uczenia maszynowego
fitted_model
Program MimicWrapper przyjmuje automl_run
również obiekt, w którym zostaną przekazane zaprojektowane wyjaśnienia.
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)
Używanie narzędzia Wyjaśnij imitację do przetwarzania i wizualizowania znaczenia cech zaprojektowanych
Metodę można wywołać w metodzie explain()
MimicWrapper z przekształconymi przykładami testowymi, aby uzyskać znaczenie funkcji dla wygenerowanych funkcji zaprojektowanych funkcji. Możesz również zalogować się do usługi Azure Machine Learning Studio , aby wyświetlić wizualizację pulpitu nawigacyjnego objaśnień dotyczących wartości ważności funkcji wygenerowanych przez zautomatyzowane funkcje cech uczenia maszynowego.
engineered_explanations = explainer.explain(['local', 'global'], eval_dataset=automl_explainer_setup_obj.X_test_transform)
print(engineered_explanations.get_feature_importance_dict())
W przypadku modeli wytrenowanych za pomocą zautomatyzowanego uczenia maszynowego można uzyskać najlepszy model przy użyciu get_output()
metody i wyjaśnień obliczeniowych lokalnie. Możesz zwizualizować wyniki ExplanationDashboard
wyjaśnienia z raiwidgets
pakietu.
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)
Używanie narzędzia Wyjaśnij na potrzeby przetwarzania i wizualizowania ważności nieprzetworzonych cech
Możesz wywołać metodę w metodzie explain()
MimicWrapper z przekształconymi przykładami testowymi, aby uzyskać znaczenie funkcji dla nieprzetworzonych funkcji. W usłudze Machine Learning Studio możesz wyświetlić wizualizację pulpitu nawigacyjnego wartości ważności funkcji pierwotnych funkcji.
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())
Możliwość interpretacji podczas wnioskowania
W tej sekcji dowiesz się, jak operacjonalizować zautomatyzowany model uczenia maszynowego za pomocą narzędzia objaśniającego, który został użyty do obliczenia wyjaśnień w poprzedniej sekcji.
Rejestrowanie modelu i objaśnienia oceniania
TreeScoringExplainer
Użyj elementu , aby utworzyć objaśnienie oceniania, w którym będą obliczane wartości znaczenia funkcji inżyniera w czasie wnioskowania. Zainicjuj objaśnienie oceniania za pomocą obliczonego feature_map
wcześniej elementu .
Zapisz objaśnienie oceniania, a następnie zarejestruj model i objaśnienie oceniania w usłudze zarządzania modelami. Uruchom następujący kod:
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')
Tworzenie zależności conda na potrzeby konfigurowania usługi
Następnie utwórz niezbędne zależności środowiska w kontenerze dla wdrożonego modelu. Należy pamiętać, że wartość azureml-defaults z wersją >= 1.0.45 musi być wymieniona jako zależność, ponieważ zawiera ona funkcje wymagane do hostowania modelu jako usługi internetowej.
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())
Tworzenie skryptu oceniania
Napisz skrypt, który ładuje model i generuje przewidywania i wyjaśnienia na podstawie nowej partii danych.
%%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}
Wdrażanie usługi
Wdróż usługę przy użyciu pliku conda i pliku oceniania z poprzednich kroków.
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)
Wnioskowanie przy użyciu danych testowych
Wnioskowanie z niektórymi danymi testowymi w celu wyświetlenia przewidywanej wartości z modelu AutoML, obecnie obsługiwanej tylko w zestawie SDK usługi Azure Machine Learning. Wyświetl znaczenie funkcji przyczyniające się do przewidywanej wartości.
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']))
Wizualizowanie w celu odnajdywania wzorców w danych i wyjaśnieniach w czasie trenowania
Możesz zwizualizować wykres ważności funkcji w obszarze roboczym w usłudze Azure Machine Learning Studio. Po zakończeniu przebiegu automatycznego uczenia maszynowego wybierz pozycję Wyświetl szczegóły modelu, aby wyświetlić określony przebieg. Wybierz kartę Wyjaśnienia , aby wyświetlić wizualizacje na pulpicie nawigacyjnym wyjaśnienia.
Aby uzyskać więcej informacji na temat wizualizacji pulpitu nawigacyjnego wyjaśnienia i określonych wykresów, zapoznaj się z dokumentacją dotyczącą możliwości interpretowania.
Następne kroki
Aby uzyskać więcej informacji na temat włączania wyjaśnień modelu i znaczenia cech w obszarach innych niż zautomatyzowane uczenie maszynowe, zobacz więcej technik interpretowania modelu.