MimicWrapper Classe
Um explicador de wrapper que reduz o número de chamadas de função necessárias para utilizar o pacote de modelo de explicação.
Inicialize o MimicWrapper.
"<<que aceita um ndarray 2d :p aram explainable_model: O modelo de substituição não inicializado usado para explicar o modelo de caixa preta.
Também conhecido como modelo de estudante.
- Herança
-
azureml._logging.chained_identity.ChainedIdentityMimicWrapper
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
Name | Description |
---|---|
workspace
Necessário
|
O objeto da área de trabalho onde os Modelos e Conjuntos de Dados são definidos. |
model
Necessá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>>
O ID de modelo de um modelo registado no MMS ou um modelo ou pipeline de machine learning normal para explicar. Se for especificado um modelo, tem de implementar sklearn.predict() ou sklearn.predict_proba(). Se for especificado um pipeline, tem de incluir uma função que aceite um ndarray 2d. |
explainable_model
Necessário
|
O modelo de substituição não inicializado utilizado para explicar o modelo de caixa preta. Também conhecido como modelo de estudante. |
explainer_kwargs
|
Quaisquer argumentos de palavra-chave que vão com o explicador escolhido não são abordados aqui. Serão transmitidos como kwargs quando o explicador subjacente for inicializado. Default value: None
|
init_dataset
|
O ID do conjunto de dados ou o conjunto de dados normal utilizado para inicializar o explicador (por exemplo, x_train). Default value: None
|
run
|
A execução desta explicação deve estar associada. Default value: None
|
features
|
Uma lista de nomes de funcionalidades. Default value: None
|
classes
|
Nomes de classes como uma lista de cadeias. A ordem dos nomes das classes deve corresponder à saída do modelo. Só é necessário se explicar o classificador. Default value: None
|
model_task
|
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 do resultado, em que um classificador tem um método predict_proba e produz uma matriz bidimensional, enquanto um regressor tem um método de previsão e produz uma matriz dimensional. Default value: ModelTask.Unknown
|
explain_subset
|
Uma lista de índices de funcionalidades. Se for especificado, o Azure seleciona apenas um subconjunto das funcionalidades no conjunto de dados de avaliação para obter explicações, o que acelerará o processo de explicação quando o número de funcionalidades for grande e já souber o conjunto de funcionalidades interessantes. O subconjunto pode ser as principais funcionalidades do resumo do modelo. Este parâmetro não é suportado quando as transformações são definidas. Default value: None
|
transformations
|
Um sklearn.compose.ColumnTransformer ou uma lista de cadeias de identificação que descrevem o nome da coluna e o transformador. Quando são fornecidas transformações, as explicações são das funcionalidades antes da transformação. O formato de uma lista de transformações é igual ao aqui: https://github.com/scikit-learn-contrib/sklearn-pandas. Se estiver a utilizar uma transformação que não esteja na lista de transformações sklearn.preprocessing suportadas pelo pacote interpret-community , este parâmetro não pode utilizar uma lista de mais do que uma coluna como entrada para a transformação. Pode utilizar as seguintes transformações sklearn.preprocessing com uma lista de colunas, uma vez que estas 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:
Um exemplo de uma transformação que geraria um erro, uma vez que não pode ser interpretado como um para muitos:
O último exemplo não funcionaria, uma vez que o pacote interpret-community não consegue determinar se my_own_transformer dá um mapeamento muitos a muitos ou um para muitos ao executar uma sequência de colunas. Apenas deve ser especificado um parâmetro de "transformações" ou "feature_maps" para gerar explicações não processadas. Especificar ambos resultará numa exceção de configuração. Default value: None
|
feature_maps
|
Uma lista de mapas de funcionalidades de funcionalidades não processadas para geradas. Este parâmetro pode ser uma lista de matrizes numpy ou matrizes dispersas em que cada entrada de matriz (raw_index, generated_index) é o peso para cada par de funcionalidades geradas não processadas. As outras entradas estão definidas como zero. Para uma sequência de transformações [t1, t2, ..., tn] que geram funcionalidades geradas a partir de funcionalidades não processadas, a lista de mapas de funcionalidades corresponde aos mapas não processados a gerados pela mesma ordem que t1, t2, etc. Se o mapa de funcionalidades não processado para gerado globalmente de t1 para tn estiver disponível, apenas esse mapa de funcionalidades numa única lista de elementos pode ser transmitido. Apenas deve ser especificado um parâmetro de "transformações" ou "feature_maps" para gerar explicações não processadas. Especificar ambos resultará numa exceção de configuração. Default value: None
|
allow_all_transformations
|
Se pretende permitir transformações muitos para muitos e muitos para um. Default value: None
|
workspace
Necessário
|
O objeto da área de trabalho onde os Modelos e Conjuntos de Dados são definidos. |
model
Necessário
|
str ou
<xref:<xref:model that implements sklearn.predict>()> ou
<xref:sklearn.predict_proba>() ou
<xref:<xref:pipeline function>>
O ID de modelo de um modelo registado no MMS ou um modelo ou pipeline de machine learning normal para explicar. Se for especificado um modelo, tem de implementar sklearn.predict() ou sklearn.predict_proba(). Se for especificado um pipeline, tem de incluir uma função que aceite um ndarray 2d. |
explainer_kwargs
Necessário
|
Quaisquer argumentos de palavra-chave que vão com o explicador escolhido não são abordados aqui. Serão transmitidos como kwargs quando o explicador subjacente for inicializado. |
init_dataset
Necessário
|
O ID do conjunto de dados ou o conjunto de dados normal utilizado para inicializar o explicador (por exemplo, x_train). |
run
Necessário
|
A execução desta explicação deve estar associada. |
features
Necessário
|
Uma lista de nomes de funcionalidades. |
classes
Necessário
|
Nomes de classes como uma lista de cadeias. A ordem dos nomes das classes deve corresponder à saída do modelo. Só é necessário se explicar o classificador. |
model_task
Necessário
|
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 do resultado, em que um classificador tem um método predict_proba e produz uma matriz bidimensional, enquanto um regressor tem um método de previsão e produz uma matriz dimensional. |
explain_subset
Necessário
|
Lista de índices de funcionalidades. Se especificado, apenas seleciona um subconjunto das funcionalidades no conjunto de dados de avaliação para obter explicações, o que acelerará o processo de explicação quando o número de funcionalidades for grande e o utilizador já souber o conjunto de funcionalidades interessadas. O subconjunto pode ser as principais funcionalidades do resumo do modelo. Este argumento não é suportado quando as transformações são definidas. |
transformations
Necessário
|
Um sklearn.compose.ColumnTransformer ou uma lista de cadeias de identificação que descrevem o nome da coluna e o transformador. Quando são fornecidas transformações, as explicações são das funcionalidades antes da transformação. O formato de uma lista de transformações é igual ao aqui: https://github.com/scikit-learn-contrib/sklearn-pandas. Se estiver a utilizar uma transformação que não esteja na lista de transformações sklearn.preprocessing suportadas pelo pacote interpret-community , este parâmetro não pode utilizar uma lista de mais do que uma coluna como entrada para a transformação. Pode utilizar as seguintes transformações sklearn.preprocessing com uma lista de colunas, uma vez que estas 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:
Um exemplo de uma transformação que geraria um erro, uma vez que não pode ser interpretado como um para muitos:
O último exemplo não funcionaria, uma vez que o pacote interpret-community não consegue determinar se my_own_transformer dá um mapeamento muitos a muitos ou um para muitos ao executar uma sequência de colunas. Apenas deve ser especificado um parâmetro de "transformações" ou "feature_maps" para gerar explicações não processadas. Especificar ambos resultará numa exceção de configuração. |
feature_maps
Necessá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 funcionalidades de funcionalidades não processadas para geradas. Este parâmetro pode ser uma lista de matrizes numpy ou matrizes dispersas em que cada entrada de matriz (raw_index, generated_index) é o peso para cada par de funcionalidades geradas não processadas. As outras entradas estão definidas como zero. Para uma sequência de transformações [t1, t2, ..., tn] que geram funcionalidades geradas a partir de funcionalidades não processadas, a lista de mapas de funcionalidades corresponde aos mapas não processados a gerados pela mesma ordem que t1, t2, etc. Se o mapa de funcionalidades não processado para gerado globalmente de t1 para tn estiver disponível, apenas esse mapa de funcionalidades numa única lista de elementos pode ser transmitido. Apenas deve ser especificado um parâmetro de "transformações" ou "feature_maps" para gerar explicações não processadas. Especificar ambos resultará numa exceção de configuração. |
Observações
O MimicWrapper pode ser utilizado para explicar modelos de machine learning e é particularmente eficaz em conjunto com o AutoML. Por exemplo, ao utilizar a automl_setup_model_explanations
função no <xref:azureml.train.automl.runtime.automl_explain_utilities> módulo, pode utilizar o MimicWrapper para calcular e visualizar a importância das funcionalidades. Para obter mais informações, veja Interpretability: model explanations in automated machine learning (Interpretabilidade: explicações de modelos no machine learning automatizado).
No exemplo seguinte, o MimicWrapper é utilizado num 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 obter mais informações sobre este exemplo, veja este bloco de notas.
Métodos
explain |
Explique o comportamento de um modelo e, opcionalmente, carregue essa explicação para armazenamento e visualização. |
explain
Explique o comportamento de um modelo e, opcionalmente, carregue 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
Name | Description |
---|---|
explanation_types
Necessário
|
Uma lista de cadeias que representam tipos de explicações pretendidas. Atualmente, são suportados "global" e "local". Ambos podem ser transmitidos de uma só vez; apenas será devolvida uma explicação. |
eval_dataset
|
O ID do conjunto de dados ou o conjunto de dados normal utilizado para gerar a explicação. Default value: None
|
top_k
|
Limite a quantidade de dados devolvidos e armazenados no Histórico de Execuções para as principais funcionalidades k, sempre que possível. Default value: None
|
upload
|
Se For Verdadeiro, a explicação é carregada automaticamente para o Histórico de Execuções para armazenamento e visualização. Se uma execução não tiver sido transmitida na inicialização, é criada uma. Default value: True
|
upload_datasets
|
Se estiver definido como Verdadeiro e não forem transmitidos IDs de conjuntos de dados, o conjunto de dados de avaliação será carregado para o armazenamento do Azure. Isto irá melhorar a visualização disponível na vista Web. Default value: False
|
tag
Necessário
|
Uma cadeia para anexar à explicação para a distinguir de outras pessoas após o carregamento. |
get_raw
|
Se Verdadeiro e o parâmetro Default value: False
|
raw_feature_names
|
A lista de nomes de funcionalidades não processados, substituindo os nomes das funcionalidades concebidas do construtor. Default value: None
|
experiment_name
|
O nome pretendido para dar uma explicação se Default value: explain_model
|
raw_eval_dataset
|
Dados de avaliação não processados a carregar para obter explicações não processadas. Default value: None
|
true_ys
|
As etiquetas verdadeiras para os exemplos de avaliação. Default value: None
|
Devoluções
Tipo | Description |
---|---|
Um objeto de explicação. |
Atributos
explainer
Obtenha o explicador que está a ser utilizado internamente pelo wrapper.
Devoluções
Tipo | Description |
---|---|
O explicador que está a ser utilizado internamente pelo wrapper. |