Condividi tramite


MimicWrapper Classe

Un wrapper spiegante che riduce il numero di chiamate di funzione necessarie per usare il pacchetto del modello di spiegazione.

Inizializzare il MimicWrapper.

'<<che accetta un modello di surrogato 2d :p aram explainable_model: il modello surrogato non inizializzato usato per spiegare il modello di scatola nera.

Noto anche come modello studente.

Ereditarietà
azureml._logging.chained_identity.ChainedIdentity
MimicWrapper

Costruttore

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)

Parametri

Nome Descrizione
workspace
Necessario

Oggetto area di lavoro in cui sono definiti i modelli e i set di dati.

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

ID modello di un modello registrato in MMS o in un normale modello o pipeline di Machine Learning da spiegare. Se viene specificato un modello, deve implementare sklearn.predict() o sklearn.predict_proba(). Se viene specificata una pipeline, deve includere una funzione che accetta un ndarray 2d.

explainable_model
Necessario

Modello surrogato non inizializzato usato per spiegare il modello black box. Noto anche come modello studente.

explainer_kwargs

Eventuali argomenti di parola chiave che vanno con lo explainer scelto non sono descritti in altro modo qui. Verranno passati come kwarg quando viene inizializzato lo explainer sottostante.

Valore predefinito: None
init_dataset
str oppure array oppure DataFrame oppure csr_matrix

ID del set di dati o set di dati normale usato per inizializzare lo explainer (ad esempio, x_train).

Valore predefinito: None
run
Run

L'esecuzione di questa spiegazione deve essere associata.

Valore predefinito: None
features

Elenco di nomi di funzionalità.

Valore predefinito: None
classes

Nomi di classe come elenco di stringhe. L'ordine dei nomi delle classi deve corrispondere a quello dell'output del modello. Obbligatorio solo se viene spiegato il classificatore.

Valore predefinito: None
model_task
str

Parametro facoltativo per specificare se il modello è un modello di classificazione o regressione. Nella maggior parte dei casi, il tipo del modello può essere dedotto in base alla forma dell'output, in cui un classificatore ha un metodo predict_proba e restituisce una matrice bidimensionale, mentre un regressore ha un metodo predict e restituisce una matrice dimensionale 1.

Valore predefinito: ModelTask.Unknown
explain_subset

Elenco di indici di funzionalità. Se specificato, Azure seleziona solo un subset delle funzionalità nel set di dati di valutazione per la spiegazione, che velocizzerà il processo di spiegazione quando il numero di funzionalità è elevato e si conosce già il set di funzionalità interessanti. Il sottoinsieme può essere rappresentato dalle caratteristiche principali del riepilogo del modello. Questo parametro non è supportato quando vengono impostate le trasformazioni.

Valore predefinito: None
transformations

Sklearn.compose.ColumnTransformer o un elenco di tuple che descrivono il nome e il trasformatore della colonna. Quando vengono fornite trasformazioni, le spiegazioni sono delle funzionalità prima della trasformazione. Il formato per un elenco di trasformazioni è uguale a quello riportato di seguito: https://github.com/scikit-learn-contrib/sklearn-pandas.

Se si usa una trasformazione non presente nell'elenco delle trasformazioni sklearn.preprocessing supportate dal pacchetto interpret-community , questo parametro non può accettare un elenco di più colonne come input per la trasformazione. È possibile usare le trasformazioni sklearn.pre-elaborazione seguenti con un elenco di colonne poiché sono già uno o più: Binarizer, KBinsDiscretizer, KernelCenterer, LabelEncoder, MaxAbsScaler, MinMaxScaler, Normalizer, OneHotEncoder, OrdinalEncoder, PowerTransformer, QuantileTransformer, RobustScaler, StandardScaler.

Esempi di trasformazioni che funzionano:


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

Esempio di trasformazione che genera un errore perché non può essere interpretato come uno a molti:


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

L'ultimo esempio non funziona perché il pacchetto interpret-community non è in grado di determinare se my_own_transformer fornisce un mapping molti-a-molti o uno a molti durante l'acquisizione di una sequenza di colonne.

Per generare spiegazioni non elaborate, è necessario specificare un solo parametro di 'transformations' o 'feature_maps'. Se si specificano entrambe, si verifica un'eccezione di configurazione.

Valore predefinito: None
feature_maps

Elenco delle mappe delle funzionalità dalla funzionalità non elaborata alla funzionalità generata. Questo parametro può essere un elenco di matrici numpy o matrici sparse in cui ogni voce di matrice (raw_index, generated_index) è il peso per ogni coppia di funzionalità non elaborata e generata. Le altre voci sono impostate su zero. Per una sequenza di trasformazioni [t1, t2, ..., tn] che genera funzionalità generate da caratteristiche non elaborate, l'elenco delle mappe delle caratteristiche corrisponde alle mappe non elaborate per le mappe generate nello stesso ordine di t1, t2 e così via. Se è disponibile la mappa delle funzionalità non elaborata complessiva da t1 a tn, è possibile passare solo la mappa delle caratteristiche in un singolo elenco di elementi.

Per generare spiegazioni non elaborate, è necessario specificare un solo parametro di 'transformations' o 'feature_maps'. Se si specificano entrambe, si verifica un'eccezione di configurazione.

Valore predefinito: None
allow_all_transformations

Indica se consentire molti a molti e molti a una trasformazione.

Valore predefinito: None
workspace
Necessario

Oggetto area di lavoro in cui sono definiti i modelli e i set di dati.

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

ID modello di un modello registrato in MMS o in un normale modello o pipeline di Machine Learning da spiegare. Se viene specificato un modello, deve implementare sklearn.predict() o sklearn.predict_proba(). Se viene specificata una pipeline, deve includere una funzione che accetta un ndarray 2d.

explainer_kwargs
Necessario

Eventuali argomenti di parola chiave che vanno con lo explainer scelto non sono descritti in altro modo qui. Verranno passati come kwarg quando viene inizializzato lo explainer sottostante.

init_dataset
Necessario
str oppure array oppure DataFrame oppure csr_matrix

ID del set di dati o set di dati normale usato per inizializzare lo explainer (ad esempio, x_train).

run
Necessario
Run

L'esecuzione di questa spiegazione deve essere associata.

features
Necessario

Elenco di nomi di funzionalità.

classes
Necessario

Nomi di classe come elenco di stringhe. L'ordine dei nomi delle classi deve corrispondere a quello dell'output del modello. Obbligatorio solo se viene spiegato il classificatore.

model_task
Necessario
str

Parametro facoltativo per specificare se il modello è un modello di classificazione o regressione. Nella maggior parte dei casi, il tipo del modello può essere dedotto in base alla forma dell'output, in cui un classificatore ha un metodo predict_proba e restituisce una matrice bidimensionale, mentre un regressore ha un metodo predict e restituisce una matrice dimensionale 1.

explain_subset
Necessario

Elenco di indici di funzionalità. Se specificato, seleziona solo un subset delle funzionalità nel set di dati di valutazione per la spiegazione, che velocizzerà il processo di spiegazione quando il numero di funzionalità è elevato e l'utente conosce già il set di funzionalità interessate. Il sottoinsieme può essere rappresentato dalle caratteristiche principali del riepilogo del modello. Questo argomento non è supportato quando vengono impostate le trasformazioni.

transformations
Necessario

Sklearn.compose.ColumnTransformer o un elenco di tuple che descrivono il nome e il trasformatore della colonna. Quando vengono fornite trasformazioni, le spiegazioni sono delle funzionalità prima della trasformazione. Il formato per un elenco di trasformazioni è uguale a quello riportato di seguito: https://github.com/scikit-learn-contrib/sklearn-pandas.

Se si usa una trasformazione non presente nell'elenco delle trasformazioni sklearn.preprocessing supportate dal pacchetto interpret-community , questo parametro non può accettare un elenco di più colonne come input per la trasformazione. È possibile usare le trasformazioni sklearn.pre-elaborazione seguenti con un elenco di colonne poiché sono già uno o più: Binarizer, KBinsDiscretizer, KernelCenterer, LabelEncoder, MaxAbsScaler, MinMaxScaler, Normalizer, OneHotEncoder, OrdinalEncoder, PowerTransformer, QuantileTransformer, RobustScaler, StandardScaler.

Esempi di trasformazioni che funzionano:


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

Esempio di trasformazione che genera un errore perché non può essere interpretato come uno a molti:


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

L'ultimo esempio non funziona perché il pacchetto interpret-community non è in grado di determinare se my_own_transformer fornisce un mapping molti-a-molti o uno a molti durante l'acquisizione di una sequenza di colonne.

Per generare spiegazioni non elaborate, è necessario specificare un solo parametro di 'transformations' o 'feature_maps'. Se si specificano entrambe, si verifica un'eccezione di configurazione.

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

Elenco delle mappe delle funzionalità dalla funzionalità non elaborata alla funzionalità generata. Questo parametro può essere un elenco di matrici numpy o matrici sparse in cui ogni voce di matrice (raw_index, generated_index) è il peso per ogni coppia di funzionalità non elaborata e generata. Le altre voci sono impostate su zero. Per una sequenza di trasformazioni [t1, t2, ..., tn] che genera funzionalità generate da caratteristiche non elaborate, l'elenco delle mappe delle caratteristiche corrisponde alle mappe non elaborate per le mappe generate nello stesso ordine di t1, t2 e così via. Se è disponibile la mappa delle funzionalità non elaborata complessiva da t1 a tn, è possibile passare solo la mappa delle caratteristiche in un singolo elenco di elementi.

Per generare spiegazioni non elaborate, è necessario specificare un solo parametro di 'transformations' o 'feature_maps'. Se si specificano entrambe, si verifica un'eccezione di configurazione.

Commenti

Il mimicWrapper può essere usato per spiegare i modelli di Machine Learning ed è particolarmente efficace in combinazione con AutoML. Ad esempio, usando la funzione nel <xref:azureml.train.automl.runtime.automl_explain_utilities> modulo, è possibile usare MimicWrapper per calcolare e visualizzare l'importanza automl_setup_model_explanations delle funzionalità. Per altre informazioni, vedere Interpretazione: spiegazioni dei modelli in Machine Learning automatizzato.

Nell'esempio seguente viene usato mimicWrapper in un problema di classificazione.


   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)

Per altre informazioni su questo esempio, vedere questo notebook.

Metodi

explain

Spiegare il comportamento di un modello e caricare facoltativamente tale spiegazione per l'archiviazione e la visualizzazione.

explain

Spiegare il comportamento di un modello e caricare facoltativamente tale spiegazione per l'archiviazione e la visualizzazione.

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)

Parametri

Nome Descrizione
explanation_types
Necessario

Elenco di stringhe che rappresentano i tipi di spiegazioni desiderati. Attualmente sono supportati "global" e "local". Entrambi possono essere passati contemporaneamente; verrà restituita una sola spiegazione.

eval_dataset
str oppure array oppure DataFrame oppure csr_matrix

ID set di dati o set di dati normale usato per generare la spiegazione.

Valore predefinito: None
top_k
int

Limitare la quantità di dati restituiti e archiviati nella cronologia di esecuzione per le prime k funzionalità, quando possibile.

Valore predefinito: None
upload

Se True, la spiegazione viene caricata automaticamente in Cronologia di esecuzione per l'archiviazione e la visualizzazione. Se un'esecuzione non è stata passata durante l'inizializzazione, ne viene creata una.

Valore predefinito: True
upload_datasets

Se impostato su True e non vengono passati ID set di dati, il set di dati di valutazione verrà caricato nell'archiviazione di Azure. Ciò migliorerà la visualizzazione disponibile nella visualizzazione Web.

Valore predefinito: False
tag
Necessario
str

Stringa da collegare alla spiegazione per distinguerla da altre persone dopo il caricamento.

get_raw

Se True e il parametro feature_maps è stato passato durante l'inizializzazione, la spiegazione restituita sarà per le funzionalità non elaborate. Se False o non è specificato, la spiegazione sarà per i dati esattamente come vengono passati.

Valore predefinito: False
raw_feature_names

Elenco dei nomi delle funzionalità non elaborati, sostituendo nomi di funzionalità progettati dal costruttore.

Valore predefinito: None
experiment_name
str

Nome desiderato per fornire una spiegazione se upload è True, ma nessuna esecuzione è stata passata durante l'inizializzazione

Valore predefinito: explain_model
raw_eval_dataset
str oppure array oppure DataFrame oppure csr_matrix

Dati di eval non elaborati da caricare per spiegazioni non elaborate.

Valore predefinito: None
true_ys
list | <xref:pandas.Dataframe> | ndarray

Etichette vere per gli esempi di valutazione.

Valore predefinito: None

Restituisce

Tipo Descrizione

Oggetto spiegazione.

Attributi

explainer

Ottenere il spiegazione usato internamente dal wrapper.

Restituisce

Tipo Descrizione

Spiegazione usata internamente dal wrapper.