Partager via


MimicWrapper Classe

Explicatif de wrapper qui réduit le nombre d’appels de fonction nécessaires à l’utilisation du package de modèle d’explication.

Initialisez le MimicWrapper.

« <<qui accepte un ndarray 2d :p aram explainable_model: Le modèle de substitution non initialisé utilisé pour expliquer le modèle de boîte noire.

Également connu sous le nom de modèle étudiant.

Héritage
azureml._logging.chained_identity.ChainedIdentity
MimicWrapper

Constructeur

MimicWrapper(workspace, model, explainable_model, explainer_kwargs=None, init_dataset=None, run=None, features=None, classes=None, model_task=ModelTask.Unknown, explain_subset=None, transformations=None, feature_maps=None, allow_all_transformations=None)

Paramètres

Nom Description
workspace
Obligatoire

Objet d’espace de travail dans lequel les modèles et les jeux de données sont définis.

model
Obligatoire
str ou <xref:<xref:model that implements sklearn.predict>()> ou <xref:sklearn.predict_proba>() ou <xref:<xref:pipeline function that accepts a 2d ndarray>>

ID de modèle d’un modèle inscrit auprès de MMS, ou d’un pipeline ou modèle Machine Learning classique à expliquer. Si un modèle est spécifié, il doit implémenter sklearn.predict() ou sklearn.predict_proba(). Si un pipeline est spécifié, il doit inclure une fonction qui accepte un ndarray 2D.

explainable_model
Obligatoire

Modèle de substitution non initialisé utilisé pour expliquer le modèle de boîte noire. Également connu sous le nom de modèle étudiant.

explainer_kwargs

Arguments par mots clés associés à l’explicatif choisi, et qui ne sont pas traités ici. Ils sont passés en tant que kwargs au moment de l’initialisation de l’explicatif sous-jacent.

Valeur par défaut: None
init_dataset

ID de jeu de données ou jeu de données classique utilisé pour initialiser l’explicatif (par exemple x_train).

Valeur par défaut: None
run
Run

Exécution à laquelle cette explication doit être associée.

Valeur par défaut: None
features

Liste des noms des fonctionnalités.

Valeur par défaut: None
classes

Noms de classes sous la forme d’une liste de chaînes. L’ordre des noms de classe doit correspondre à celui de la sortie du modèle. Obligatoire uniquement en cas d’explication du classifieur.

Valeur par défaut: None
model_task
str

Paramètre facultatif permettant de spécifier si le modèle est un modèle de classification ou de régression. Dans la plupart des cas, le type du modèle peut être déduit en fonction de la forme de la sortie : un classifieur a une méthode predict_proba et génère un tableau à deux dimensions, alors qu’un régresseur a une méthode predict et génère un tableau à une dimension.

Valeur par défaut: ModelTask.Unknown
explain_subset

Liste d’index de caractéristiques. Si ce paramètre est spécifié, Azure sélectionne uniquement un sous-ensemble des caractéristiques du jeu de données d’évaluation à des fins d’explication. Cela accélère le processus d’explication quand le nombre de caractéristiques est important, et que vous connaissez déjà l’ensemble des caractéristiques intéressantes. Le sous-ensemble peut correspondre au top k des caractéristiques du récapitulatif du modèle. Ce paramètre n’est pas pris en charge quand des transformations sont définies.

Valeur par défaut: None
transformations

sklearn.compose.ColumnTransformer ou liste de tuples décrivant le nom et le transformateur de colonne. Quand des transformations sont fournies, les explications correspondent aux caractéristiques avant la transformation. Le format d’une liste de transformations est le même que celui-ci : https://github.com/scikit-learn-contrib/sklearn-pandas.

Si vous utilisez une transformation qui ne figure pas dans la liste des transformations sklearn.preprocessing prises en charge par le package interpret-community, cela signifie que le paramètre ne peut pas accepter une liste de plusieurs colonnes en tant qu’entrée pour la transformation. Vous pouvez utiliser les transformations sklearn.preprocessing suivantes avec une liste de colonnes, car elles ont déjà des relations un-à-plusieurs ou un-à-un : Binarizer, KBinsDiscretizer, KernelCenterer, LabelEncoder, MaxAbsScaler, MinMaxScaler, Normalizer, OneHotEncoder, OrdinalEncoder, PowerTransformer, QuantileTransformer, RobustScaler, StandardScaler.

Exemples de transformations qui fonctionnent :


   [
       (["col1", "col2"], sklearn_one_hot_encoder),
       (["col3"], None) #col3 passes as is
   ]
   [
       (["col1"], my_own_transformer),
       (["col2"], my_own_transformer),
   ]

Exemple de transformation qui déclenche une erreur, car elle ne peut pas être interprétée comme une transformation ayant une relation un-à-plusieurs :


   [
       (["col1", "col2"], my_own_transformer)
   ]

Le dernier exemple ne fonctionne pas, car le package interpret-community ne peut pas déterminer si my_own_transformer fournit un mappage plusieurs-à-plusieurs ou un-à-plusieurs quand il accepte une séquence de colonnes.

Un seul paramètre de « transformations » ou « feature_maps » doit être spécifié pour générer des explications brutes. La spécification des deux entraîne une exception de configuration.

Valeur par défaut: None
feature_maps

Liste de mappages de fonctionnalités des fonctionnalités brutes à générées. Ce paramètre peut correspondre à une liste de tableaux numpy ou de matrices éparses, où chaque entrée de tableau (raw_index, generated_index) représente la pondération de chaque paire de caractéristiques brutes/générées. Les autres entrées sont définies sur zéro. Pour une séquence de transformations [t1, t2,..., tn] générant des fonctionnalités générées à partir de fonctionnalités brutes, la liste des mappages de fonctionnalités correspond aux mappages bruts à générés dans le même ordre que t1, t2, etc. Si le mappage de fonctionnalités brutes à générées global de t1 à tn est disponible, il est possible de transmettre uniquement cette carte de fonctionnalités dans une liste d’éléments unique.

Un seul paramètre de « transformations » ou « feature_maps » doit être spécifié pour générer des explications brutes. La spécification des deux entraîne une exception de configuration.

Valeur par défaut: None
allow_all_transformations

Indique s’il est nécessaire d’autoriser un grand nombre de transformations ayant une relation plusieurs-à-plusieurs.

Valeur par défaut: None
workspace
Obligatoire

Objet d’espace de travail dans lequel les modèles et les jeux de données sont définis.

model
Obligatoire
str ou <xref:<xref:model that implements sklearn.predict>()> ou <xref:sklearn.predict_proba>() ou <xref:<xref:pipeline function>>

ID de modèle d’un modèle inscrit auprès de MMS, ou d’un pipeline ou modèle Machine Learning classique à expliquer. Si un modèle est spécifié, il doit implémenter sklearn.predict() ou sklearn.predict_proba(). Si un pipeline est spécifié, il doit inclure une fonction qui accepte un ndarray 2D.

explainer_kwargs
Obligatoire

Arguments par mots clés associés à l’explicatif choisi, et qui ne sont pas traités ici. Ils sont passés en tant que kwargs au moment de l’initialisation de l’explicatif sous-jacent.

init_dataset
Obligatoire

ID de jeu de données ou jeu de données standard utilisé pour initialiser l’explicatif (par exemple, x_train).

run
Obligatoire
Run

Exécution à laquelle cette explication doit être associée.

features
Obligatoire

Liste des noms des fonctionnalités.

classes
Obligatoire

Noms de classes sous la forme d’une liste de chaînes. L’ordre des noms de classe doit correspondre à celui de la sortie du modèle. Obligatoire uniquement en cas d’explication du classifieur.

model_task
Obligatoire
str

Paramètre facultatif permettant de spécifier si le modèle est un modèle de classification ou de régression. Dans la plupart des cas, le type du modèle peut être déduit en fonction de la forme de la sortie : un classifieur a une méthode predict_proba et génère un tableau à deux dimensions, alors qu’un régresseur a une méthode predict et génère un tableau à une dimension.

explain_subset
Obligatoire

Liste des index de caractéristiques. Si cette option est spécifiée, sélectionne uniquement un sous-ensemble de fonctionnalités dans le jeu de données d’évaluation pour l’explication, ce qui accélérera le processus d’explication lorsque le nombre de fonctionnalités est important et que l’utilisateur connaît déjà l’ensemble des fonctionnalités intéressées. Le sous-ensemble peut correspondre au top k des caractéristiques du récapitulatif du modèle. Cet argument n’est pas pris en charge lorsque les transformations sont définies.

transformations
Obligatoire

sklearn.compose.ColumnTransformer ou liste de tuples décrivant le nom et le transformateur de colonne. Quand des transformations sont fournies, les explications correspondent aux caractéristiques avant la transformation. Le format d’une liste de transformations est le même que celui-ci : https://github.com/scikit-learn-contrib/sklearn-pandas.

Si vous utilisez une transformation qui ne figure pas dans la liste des transformations sklearn.preprocessing prises en charge par le package interpret-community, cela signifie que le paramètre ne peut pas accepter une liste de plusieurs colonnes en tant qu’entrée pour la transformation. Vous pouvez utiliser les transformations sklearn.preprocessing suivantes avec une liste de colonnes, car elles ont déjà des relations un-à-plusieurs ou un-à-un : Binarizer, KBinsDiscretizer, KernelCenterer, LabelEncoder, MaxAbsScaler, MinMaxScaler, Normalizer, OneHotEncoder, OrdinalEncoder, PowerTransformer, QuantileTransformer, RobustScaler, StandardScaler.

Exemples de transformations qui fonctionnent :


   [
       (["col1", "col2"], sklearn_one_hot_encoder),
       (["col3"], None) #col3 passes as is
   ]
   [
       (["col1"], my_own_transformer),
       (["col2"], my_own_transformer),
   ]

Exemple de transformation qui déclenche une erreur, car elle ne peut pas être interprétée comme une transformation ayant une relation un-à-plusieurs :


   [
       (["col1", "col2"], my_own_transformer)
   ]

Le dernier exemple ne fonctionne pas, car le package interpret-community ne peut pas déterminer si my_own_transformer fournit un mappage plusieurs-à-plusieurs ou un-à-plusieurs quand il accepte une séquence de colonnes.

Un seul paramètre de « transformations » ou « feature_maps » doit être spécifié pour générer des explications brutes. La spécification des deux entraîne une exception de configuration.

feature_maps
Obligatoire
list[array] ou list[csr_matrix] <xref::param allow_all_transformations: Whether to allow many to many and many to one transformations.>

Liste de mappages de fonctionnalités des fonctionnalités brutes à générées. Ce paramètre peut correspondre à une liste de tableaux numpy ou de matrices éparses, où chaque entrée de tableau (raw_index, generated_index) représente la pondération de chaque paire de caractéristiques brutes/générées. Les autres entrées sont définies sur zéro. Pour une séquence de transformations [t1, t2,..., tn] générant des fonctionnalités générées à partir de fonctionnalités brutes, la liste des mappages de fonctionnalités correspond aux mappages bruts à générés dans le même ordre que t1, t2, etc. Si le mappage de fonctionnalités brutes à générées global de t1 à tn est disponible, il est possible de transmettre uniquement cette carte de fonctionnalités dans une liste d’éléments unique.

Un seul paramètre de « transformations » ou « feature_maps » doit être spécifié pour générer des explications brutes. La spécification des deux entraîne une exception de configuration.

Remarques

La classe MimicWrapper peut être utilisée pour expliquer les modèles Machine Learning. Elle est particulièrement efficace quand elle est utilisée conjointement avec AutoML. Par exemple, à l’aide de la fonction automl_setup_model_explanations dans le module <xref:azureml.train.automl.runtime.automl_explain_utilities>, vous pouvez utiliser MimicWrapper pour calculer et visualiser l’importance des caractéristiques. Pour plus d’informations, consultez Interprétabilité : explications des modèles dans le Machine Learning automatisé.

Dans l’exemple suivant, MimicWrapper est utilisé pour un problème de classification.


   from azureml.interpret.mimic_wrapper import MimicWrapper
   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)

Pour plus d’informations sur cet exemple, consultez ce notebook.

Méthodes

explain

Explique le comportement d’un modèle et charge éventuellement cette explication à des fins de stockage et de visualisation.

explain

Explique le comportement d’un modèle et charge éventuellement cette explication à des fins de stockage et de visualisation.

explain(explanation_types, eval_dataset=None, top_k=None, upload=True, upload_datasets=False, tag='', get_raw=False, raw_feature_names=None, experiment_name='explain_model', raw_eval_dataset=None, true_ys=None)

Paramètres

Nom Description
explanation_types
Obligatoire

Liste de chaînes représentant les types d’explication souhaités. Pour le moment, « global » et « local » sont pris en charge. Vous pouvez passer les deux en même temps. Une seule explication est retournée.

eval_dataset

ID de jeu de données ou jeu de données classique utilisé pour générer l’explication.

Valeur par défaut: None
top_k
int

Limite la quantité de données retournées et stockées dans l’historique des exécutions au top k des caractéristiques, quand cela est possible.

Valeur par défaut: None
upload

Si la valeur est True, l’explication est automatiquement chargée dans l’historique des exécutions à des fins de stockage et de visualisation. Si aucune exécution n’a été passée au moment de l’initialisation, celle-ci est créée.

Valeur par défaut: True
upload_datasets

Si la valeur est True et si aucun ID de jeu de données n’est passé, le jeu de données d’évaluation est chargé vers le stockage Azure. Cela permet d’améliorer la visualisation disponible dans la vue web.

Valeur par défaut: False
tag
Obligatoire
str

Chaîne à attacher à l’explication pour la distinguer des autres après son chargement.

get_raw

Si la valeur est True et si le paramètre feature_maps est passé durant l’initialisation, l’explication retournée concerne les caractéristiques brutes. Si la valeur False ou non spécifiée, l’explication concerne les données telles qu’elles ont été passées.

Valeur par défaut: False
raw_feature_names

Liste des noms de caractéristiques brutes. Remplace les noms de caractéristiques d’ingénierie du constructeur.

Valeur par défaut: None
experiment_name
str

Nom souhaité pour fournir une explication si upload a la valeur true, mais qu'aucune exécution n’a été passée pendant l’initialisation

Valeur par défaut: explain_model
raw_eval_dataset

Données d’évaluation brutes à télécharger pour des explications brutes.

Valeur par défaut: None
true_ys
list | <xref:pandas.Dataframe> | ndarray

Les étiquettes true des exemples d’évaluation.

Valeur par défaut: None

Retours

Type Description

Objet d’explication.

Attributs

explainer

Obtient l’explicatif utilisé de manière interne par le wrapper.

Retours

Type Description

Explicatif utilisé de manière interne par le wrapper.