É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

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.

Machine Learning értelmezhetőségi architektúra

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.