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.ChainedIdentityMimicWrapper
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
|
ID del set di dati o set di dati normale usato per inizializzare lo explainer (ad esempio, x_train). Valore predefinito: None
|
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
|
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:
Esempio di trasformazione che genera un errore perché non può essere interpretato come uno a molti:
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
|
ID del set di dati o set di dati normale usato per inizializzare lo explainer (ad esempio, x_train). |
run
Necessario
|
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
|
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:
Esempio di trasformazione che genera un errore perché non può essere interpretato come uno a molti:
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
|
ID set di dati o set di dati normale usato per generare la spiegazione. Valore predefinito: None
|
top_k
|
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
|
Stringa da collegare alla spiegazione per distinguerla da altre persone dopo il caricamento. |
get_raw
|
Se True e il parametro 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
|
Nome desiderato per fornire una spiegazione se Valore predefinito: explain_model
|
raw_eval_dataset
|
Dati di eval non elaborati da caricare per spiegazioni non elaborate. Valore predefinito: None
|
true_ys
|
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. |