Értelmezhetőség: Modellértelmezhetőség automatizált gépi tanulásban (előzetes verzió)
A KÖVETKEZŐKRE VONATKOZIK:Python SDK azureml v1
Ebből a cikkből megtudhatja, hogyan kaphat magyarázatot az automatizált gépi tanulási (automatizált GÉPI) modellekhez az Azure Machine Learningben a Python SDK használatával. Az automatizált gépi tanulás segít megérteni a létrehozott modellek funkciójának fontosságát.
Alapértelmezés szerint az 1.0.85 utáni összes SDK-verzió be van állítva model_explainability=True
. Az SDK 1.0.85-ös és korábbi verzióiban a felhasználóknak be kell állítaniuk model_explainability=True
az objektumot a AutoMLConfig
modellértelmezhetőség használatához.
Ebben a cikkben az alábbiakkal ismerkedhet meg:
- A legjobb modell vagy bármely modell betanítása során végezze el az értelmezőképességet.
- Engedélyezze a vizualizációkat, amelyek segítenek a mintáknak az adatokban és magyarázatokban való megjelenítésében.
- Az értelmezhetőség megvalósítása következtetés vagy pontozás során.
Előfeltételek
- Értelmezhetőségi funkciók. Futtassa a parancsot
pip install azureml-interpret
a szükséges csomag beszerzéséhez. - Automatizált gépi tanulási kísérletek készítésének ismerete. Az Azure Machine Learning SDK használatával kapcsolatos további információkért végezze el ezt az objektumészlelési modell oktatóanyagát , vagy tekintse meg az automatizált gépi tanulási kísérletek konfigurálásának módját.
Fontos
Ez a funkció jelenleg nyilvános előzetes verzióban érhető el. Ez az előzetes verzió szolgáltatásszint-szerződés nélkül érhető el, éles számítási feladatokhoz nem ajánljuk. Előfordulhat, hogy néhány funkció nem támogatott, vagy korlátozott képességekkel rendelkezik.
További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.
A legjobb modell értelmezése a betanítás során
Kérje le a magyarázatot a best_run
() fájlból, amely a nyers és a megtervezett funkciók magyarázatait is tartalmazza.
Megjegyzés
Az automatikus gépi tanulási előrejelzési kísérletek által javasolt TCNForecaster modellhez nem érhető el az értelmezhetőség, a modell magyarázata.
A legjobb futtatású funkciók fontosságainak letöltése
A használatával ExplanationClient
letöltheti a tervezett funkciók magyarázatait a összetevőtárolóból.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())
A nyers funkciók fontosságának letöltése a legjobb futtatásból
A nyers ExplanationClient
funkciómagyarázatokat a összetevőtárolóból töltheti le.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())
Értelmezhetőség a betanítás során bármely modellhez
A modellmagyarázatok számítása és vizualizációja nem korlátozódik az AutoML-modellek meglévő modellmagyarázatára. A modell magyarázatát különböző tesztadatokkal is lekérheti. Az ebben a szakaszban ismertetett lépések bemutatják, hogyan számíthatja ki és vizualizálhatja a felügyelt funkciók fontosságát a tesztadatok alapján.
Bármely más AutoML-modell lekérése betanításból
automl_run, fitted_model = local_run.get_output(metric='accuracy')
A modellmagyarázatok beállítása
A használatával automl_setup_model_explanations
lekérheti a megtervezett és nyers magyarázatokat. A fitted_model
következő elemeket hozhatja létre:
- Kiemelt adatok betanított vagy tesztmintákból
- A szolgáltatásnévlisták megtervezve
- Kereshető osztályok a címkézett oszlopban besorolási forgatókönyvekben
A automl_explainer_setup_obj
a fenti lista összes szerkezetét tartalmazza.
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')
A Mimikai magyarázó inicializálása a funkció fontossága érdekében
Az automatizált gépi tanulási modellek magyarázatának létrehozásához használja az osztályt MimicWrapper
. A MimicWrapper inicializálható az alábbi paraméterekkel:
- A magyarázó beállítási objektuma
- Saját munkaterület
- Helyettesítő modell az automatizált gépi
fitted_model
tanulási modell magyarázatához
A MimicWrapper azt az objektumot is felveszi, automl_run
ahol a rendszer feltölti a mérnöki magyarázatokat.
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)
A Mimic Explainer használata a mérnöki funkciók fontosságának kiszámításához és vizualizációhoz
A MimicWrapper metódusát explain()
az átalakított tesztmintákkal hívhatja meg, hogy a szolgáltatás fontos szerepet kapjon a létrehozott mérnöki funkciókban. A Azure Machine Learning stúdió is bejelentkezhet, hogy megtekintse a magyarázatok irányítópultján a létrehozott, gépi terheléseltűrők által létrehozott mérnöki funkciók funkció-fontossági értékeit.
engineered_explanations = explainer.explain(['local', 'global'], eval_dataset=automl_explainer_setup_obj.X_test_transform)
print(engineered_explanations.get_feature_importance_dict())
Az automatizált gépi tanulással betanított modellek esetében a legjobb modellt a metódus és a get_output()
számítási magyarázatok helyi használatával szerezheti be. A magyarázat eredményeit ExplanationDashboard
a csomagból raiwidgets
jelenítheti meg.
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)
A Mimic Explainer használata a nyers funkciók fontosságának kiszámításához és megjelenítéséhez
A MimicWrapper metódusát explain()
az átalakított tesztmintákkal hívhatja meg, hogy a funkció fontos legyen a nyers funkciók számára. A Machine Learning Studióban megtekintheti a nyers funkciók funkció-fontossági értékeinek irányítópult-vizualizációját.
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())
Értelmezhetőség a következtetés során
Ebben a szakaszban megtudhatja, hogyan lehet üzembe helyezést alkalmazni egy automatizált gépi tanulási modellen az előző szakaszban található magyarázat kiszámításához használt magyarázóval.
A modell és a pontozási magyarázó regisztrálása
TreeScoringExplainer
A használatával létrehozhatja azt a pontozási magyarázót, amely következtetési időben kiszámítja a megtervezett funkció fontossági értékeit. A pontozási magyarázót a korábban kiszámítotttal feature_map
inicializálja.
Mentse a pontozási magyarázót, majd regisztrálja a modellt és a pontozási magyarázót a Modellkezelési szolgáltatásban. Futtassa az alábbi kódot:
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')
A conda-függőségek létrehozása a szolgáltatás beállításához
Ezután hozza létre a szükséges környezeti függőségeket a tárolóban az üzembe helyezett modellhez. Vegye figyelembe, hogy az azureml-defaults verzió = 1.0.45-ös verziónak >pipfüggőségként kell szerepelnie, mert tartalmazza a modell webszolgáltatásként való üzemeltetéséhez szükséges funkciókat.
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())
A pontozási szkript létrehozása
Írjon egy szkriptet, amely betölti a modellt, és előrejelzéseket és magyarázatokat hoz létre egy új adatköteg alapján.
%%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}
A szolgáltatás üzembe helyezése
Telepítse a szolgáltatást a conda fájl és a pontozási fájl használatával az előző lépésekben.
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)
Következtetés tesztadatokkal
Következtetés egyes tesztadatokkal az AutoML-modell előrejelzett értékének megtekintéséhez, amely jelenleg csak az Azure Machine Learning SDK-ban támogatott. Megtekintheti az előrejelzett értékhez hozzájáruló funkciók fontosságát.
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']))
Vizualizáció az adatok és magyarázatok mintázatainak feltárásához a betanítási időpontban
A funkció fontossági diagramját a munkaterületen jelenítheti meg a Azure Machine Learning stúdió. Az AutoML-futtatás befejezése után válassza a Modell részleteinek megtekintése lehetőséget egy adott futtatás megtekintéséhez. A Magyarázatok lapon megtekintheti a vizualizációkat a magyarázat irányítópultján.
A magyarázó irányítópultok vizualizációiról és konkrét diagramjairól az értelmezhetőségről szóló útmutatóban talál további információt.
Következő lépések
Ha többet szeretne megtudni arról, hogyan engedélyezheti a modellmagyarázatokat és a funkciók fontosságát az automatizált gépi tanuláson kívül, tekintse meg a modellértelmezhetőség további technikáit ismertető cikket.