MimicWrapper Classe

Um explicador wrapper que reduz o número de chamadas de função necessárias para usar o pacote de modelo de explicação.

Inicialize o MimicWrapper.

"<<que aceita um ndarray 2d :p aram explainable_model: o modelo alternativo não inicializado usado para explicar o modelo de caixa preta.

Também conhecido como o modelo de aluno.

Herança
azureml._logging.chained_identity.ChainedIdentity
MimicWrapper

Construtor

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)

Parâmetros

Nome Description
workspace
Obrigatório

O objeto de espaço de trabalho em que os modelos e conjuntos de dados são definidos.

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

A ID de um modelo registrado no MMS ou em um pipeline ou modelo de aprendizado de máquina regular a ser explicado. Se um modelo for especificado, ele deverá implementar sklearn.predict() ou sklearn.predict_proba(). Se um pipeline for especificado, ele deverá incluir uma função que aceite uma segunda matriz.

explainable_model
Obrigatório

O modelo substituto não reinicializado usado para explicar o modelo de caixa preta. Também conhecido como o modelo de aluno.

explainer_kwargs

Os argumentos de palavra-chave juntos ao explicador escolhido não são abordados aqui. Eles serão passados como kwargs quando o explicador subjacente for inicializado.

Valor padrão: None
init_dataset

A ID do conjuntos de dados ou o conjuntos de dados regulares usados para inicializar o explicador (por exemplo, x_train).

Valor padrão: None
run
Run

A execução nessa explicação deve ser associada.

Valor padrão: None
features

Uma lista de nomes de recursos.

Valor padrão: None
classes

Nomes de classe como uma lista de cadeias de caracteres. A ordem dos nomes de classe deve corresponder à da saída do modelo. Necessário somente se estiver explicando o classificador.

Valor padrão: None
model_task
str

Parâmetro opcional para especificar se o modelo é um modelo de classificação ou regressão. Na maioria dos casos, o tipo do modelo pode ser inferido com base na forma da saída, em que um classificador tem um método predict_proba e saída de uma matriz bidimensional, enquanto um regressor tem um método de previsão e saída de uma matriz dimensional 1.

Valor padrão: ModelTask.Unknown
explain_subset

Uma lista de índices de recursos. Se especificado, o Azure seleciona somente um subconjunto dos recursos no conjunto de dados de avaliação para explicação, o que acelerará o processo de explicação quando o número de recursos for grande e você já conhecer o conjunto de recursos interessantes. O subconjunto pode ser os principais recursos do resumo do modelo. Não há suporte para esse parâmetro quando as transformações estão definidas.

Valor padrão: None
transformations

Um sklearn.compose.ColumnTransformer ou uma lista de tuplas que descrevem o nome da coluna e o transformador. Quando as transformações são fornecidas, as explicações são dos recursos antes da transformação. O formato de uma lista de transformações é o mesmo que o encontrado aqui: https://github.com/scikit-learn-contrib/sklearn-pandas.

Se você estiver usando uma transformação que não está na lista de transformações sklearn.preprocessing com suporte pelo pacote interpret-community, esse parâmetro não poderá obter uma lista de mais de uma coluna como entrada para a transformação. Você pode usar as seguintes transformações sklearn.preprocessing com uma lista de colunas, pois elas já são uma para muitas ou uma para uma: Binarizer, KBinsDiscretizer, KernelCenterer, LabelEncoder, MaxAbsScaler, MinMaxScaler, Normalizer, OneHotEncoder, OrdinalEncoder, PowerTransformer, QuantileTransformer, RobustScaler, StandardScaler.

Exemplos de transformações que funcionam:


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

Um exemplo de uma transformação que gera um erro, pois ele não pode ser interpretado como um para muitos:


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

O último exemplo não funcionaria, pois o pacote interpret-community não pode determinar se my_own_transformer fornece um mapeamento muitos para muitos ou um para muitos ao fazer uma sequência de colunas.

Apenas um parâmetro de 'transformações' ou 'feature_maps' deve ser especificado para gerar explicações brutas. Especificar ambos resultará em exceção de configuração.

Valor padrão: None
feature_maps

Uma lista de mapas de recursos do recurso bruto para o gerado. Este parâmetro pode ser uma lista de matrizes numpy ou matrizes esparsas em que cada entrada de matriz (raw_index, generate_index) é o peso de cada par de recursos bruto e gerado. As outras entradas são definidas como zero. Para uma sequência de transformações [t1, t2,..., tn] gerando recursos gerados de recursos brutos, a lista de mapas de recursos corresponde aos mapas brutos para mapas gerados na mesma ordem que t1, t2 etc. Se o mapa de recursos bruto para gerado geral de t1 a tn estiver disponível, apenas esse mapa de recursos em uma lista de elemento único poderá ser passado.

Apenas um parâmetro de 'transformações' ou 'feature_maps' deve ser especificado para gerar explicações brutas. Especificar ambos resultará em exceção de configuração.

Valor padrão: None
allow_all_transformations

Se deve permitir muitas transformações para muitos e muitas para um.

Valor padrão: None
workspace
Obrigatório

O objeto de espaço de trabalho em que os modelos e conjuntos de dados são definidos.

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

A ID de um modelo registrado no MMS ou em um pipeline ou modelo de aprendizado de máquina regular a ser explicado. Se um modelo for especificado, ele deverá implementar sklearn.predict() ou sklearn.predict_proba(). Se um pipeline for especificado, ele deverá incluir uma função que aceite uma segunda matriz.

explainer_kwargs
Obrigatório

Os argumentos de palavra-chave juntos ao explicador escolhido não são abordados aqui. Eles serão passados como kwargs quando o explicador subjacente for inicializado.

init_dataset
Obrigatório

A ID do conjunto de dados ou o conjunto de dados regular usado para inicializar o explicador (por exemplo, x_train).

run
Obrigatório
Run

A execução nessa explicação deve ser associada.

features
Obrigatório

Uma lista de nomes de recursos.

classes
Obrigatório

Nomes de classe como uma lista de cadeias de caracteres. A ordem dos nomes de classe deve corresponder à da saída do modelo. Necessário somente se estiver explicando o classificador.

model_task
Obrigatório
str

Parâmetro opcional para especificar se o modelo é um modelo de classificação ou regressão. Na maioria dos casos, o tipo do modelo pode ser inferido com base na forma da saída, em que um classificador tem um método predict_proba e saída de uma matriz bidimensional, enquanto um regressor tem um método de previsão e saída de uma matriz dimensional 1.

explain_subset
Obrigatório

Lista de índices de recursos. Se especificado, seleciona apenas um subconjunto dos recursos no conjunto de dados de avaliação para explicação, o que acelerará o processo de explicação quando o número de recursos for grande e o usuário já conhecer o conjunto de recursos interessados. O subconjunto pode ser os principais recursos do resumo do modelo. Não há suporte para esse argumento quando as transformações são definidas.

transformations
Obrigatório

Um sklearn.compose.ColumnTransformer ou uma lista de tuplas que descrevem o nome da coluna e o transformador. Quando as transformações são fornecidas, as explicações são dos recursos antes da transformação. O formato de uma lista de transformações é o mesmo que o encontrado aqui: https://github.com/scikit-learn-contrib/sklearn-pandas.

Se você estiver usando uma transformação que não está na lista de transformações sklearn.preprocessing com suporte pelo pacote interpret-community, esse parâmetro não poderá obter uma lista de mais de uma coluna como entrada para a transformação. Você pode usar as seguintes transformações sklearn.preprocessing com uma lista de colunas, pois elas já são uma para muitas ou uma para uma: Binarizer, KBinsDiscretizer, KernelCenterer, LabelEncoder, MaxAbsScaler, MinMaxScaler, Normalizer, OneHotEncoder, OrdinalEncoder, PowerTransformer, QuantileTransformer, RobustScaler, StandardScaler.

Exemplos de transformações que funcionam:


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

Um exemplo de uma transformação que gera um erro, pois ele não pode ser interpretado como um para muitos:


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

O último exemplo não funcionaria, pois o pacote interpret-community não pode determinar se my_own_transformer fornece um mapeamento muitos para muitos ou um para muitos ao fazer uma sequência de colunas.

Apenas um parâmetro de 'transformações' ou 'feature_maps' deve ser especificado para gerar explicações brutas. Especificar ambos resultará em exceção de configuração.

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

Uma lista de mapas de recursos do recurso bruto para o gerado. Este parâmetro pode ser uma lista de matrizes numpy ou matrizes esparsas em que cada entrada de matriz (raw_index, generate_index) é o peso de cada par de recursos bruto e gerado. As outras entradas são definidas como zero. Para uma sequência de transformações [t1, t2,..., tn] gerando recursos gerados de recursos brutos, a lista de mapas de recursos corresponde aos mapas brutos para mapas gerados na mesma ordem que t1, t2 etc. Se o mapa de recursos bruto para gerado geral de t1 a tn estiver disponível, apenas esse mapa de recursos em uma lista de elemento único poderá ser passado.

Apenas um parâmetro de 'transformações' ou 'feature_maps' deve ser especificado para gerar explicações brutas. Especificar ambos resultará em exceção de configuração.

Comentários

O MimicWrapper pode ser usado para explicar modelos de aprendizado de máquina e é particularmente eficaz com o AutoML. Por exemplo, usando a função automl_setup_model_explanations no módulo <xref:azureml.train.automl.runtime.automl_explain_utilities>, você pode usar o MimicWrapper para calcular e visualizar a importância do recurso. Para saber mais, confira Interpretabilidade: explicações de modelo no machine learning automatizado.

No exemplo a seguir, o MimicWrapper é usado em um problema de classificação.


   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)

Para saber mais sobre esse exemplo, confira este notebook.

Métodos

explain

Explicar o comportamento de um modelo e, opcionalmente, carregar essa explicação para armazenamento e visualização.

explain

Explicar o comportamento de um modelo e, opcionalmente, carregar essa explicação para armazenamento e visualização.

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)

Parâmetros

Nome Description
explanation_types
Obrigatório

Uma lista de cadeias de caracteres que representam tipos de explicações desejadas. Atualmente, há suporte para 'global' e 'local'. Ambos podem ser passados de uma vez, somente uma explicação será retornada.

eval_dataset

A ID do conjuntos de dados ou o conjuntos de dados regulares usados para gerar a explicação.

Valor padrão: None
top_k
int

Limite a quantidade de dados retornados e armazenados no Histórico de execuções para os k principais recursos, quando possível.

Valor padrão: None
upload

Se True, a explicação será carregada automaticamente no Histórico de execuções para armazenamento e visualização. Se uma execução não tiver sido passada na inicialização, uma será criada.

Valor padrão: True
upload_datasets

Se True e nenhuma ID de conjunto de dados for transmitida, o conjunto de dados de avaliação será carregado no Armazenamento do Azure. Isso melhorará a visualização disponível na exibição da Web.

Valor padrão: False
tag
Obrigatório
str

Uma cadeia de caracteres a ser anexada à explicação para diferenciá-la das outras após o upload.

get_raw

Se True e o parâmetro feature_maps tiver sido passado durante a inicialização, a explicação retornada será para os recursos brutos. Se False ou não especificado, a explicação será para os dados exatamente como eles são passados.

Valor padrão: False
raw_feature_names

A lista de nomes de recursos brutos, substituindo nomes de recursos de engenharia do construtor.

Valor padrão: None
experiment_name
str

O nome desejado para dar uma explicação se upload for True, mas nenhuma operação tiver sido passada durante a inicialização

Valor padrão: explain_model
raw_eval_dataset

Dados brutos de avaliação a serem carregados para explicações brutas.

Valor padrão: None
true_ys
list | <xref:pandas.Dataframe> | ndarray

Os rótulos verdadeiros para os exemplos de avaliação.

Valor padrão: None

Retornos

Tipo Description

Um objeto de explicação.

Atributos

explainer

Obter o explicador que está sendo usado internamente pelo wrapper.

Retornos

Tipo Description

O explicador que está sendo usado internamente pelo wrapper.