MimicWrapper Clase
Explicador de contenedor que reduce el número de llamadas de función necesarias para usar el paquete del modelo de explicación.
Inicialice mimicWrapper.
"<<que acepta un ndarray 2d :p aram explainable_model: el modelo suplente sin inicializar usado para explicar el modelo de caja negra.
También se conoce como modelo de alumno.
- Herencia
-
azureml._logging.chained_identity.ChainedIdentityMimicWrapper
Constructor
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
Nombre | Description |
---|---|
workspace
Requerido
|
Objeto de área de trabajo donde se definen los modelos y conjuntos de datos. |
model
Requerido
|
str o
<xref:<xref:model that implements sklearn.predict>()> o
<xref:sklearn.predict_proba>() o
<xref:<xref:pipeline function that accepts a 2d ndarray>>
Identificador de modelo de un modelo registrado en MMS o una canalización o modelo de Machine Learning normal que se va a explicar. Si se especifica un modelo, debe implementar sklearn.predict() o sklearn.predict_proba(). Si se especifica una canalización, debe incluir una función que acepte un elemento ndarray de dos dimensiones. |
explainable_model
Requerido
|
Modelo suplente no inicializado que se usa para explicar el modelo de caja negra. También se conoce como modelo de alumno. |
explainer_kwargs
|
Los argumentos de palabra clave que van con el explicador elegido no se tratan aquí. Se pasarán como kwargs cuando se inicialice el explicador subyacente. Valor predeterminado: None
|
init_dataset
|
Identificador del conjunto de datos o del conjunto de datos regular que se usa para inicializar el explicador (por ejemplo, x_train). Valor predeterminado: None
|
run
|
Ejecución a la que se debe asociar esta explicación. Valor predeterminado: None
|
features
|
Lista de nombres de características. Valor predeterminado: None
|
classes
|
Nombres de clase como una lista de cadenas. El orden de los nombres de clase debe coincidir con el de la salida del modelo. Solo es necesario si se explica un clasificador. Valor predeterminado: None
|
model_task
|
Parámetro opcional para especificar si el modelo es un modelo de clasificación o de regresión. En la mayoría de los casos, el tipo del modelo se puede inferir en función de la forma de la salida, donde un clasificador tiene un método predict_proba y genera una matriz de dos dimensiones, mientras que un regresor tiene un método predict y genera una matriz de una dimensión. Valor predeterminado: ModelTask.Unknown
|
explain_subset
|
Lista de índices de características. Si se especifica, Azure solo selecciona un subconjunto de las características del conjunto de datos de evaluación para su explicación, lo que acelerará el proceso de explicación cuando el número de características sea grande y ya se conozca el conjunto de características interesantes. El subconjunto pueden ser las características K principales del resumen del modelo. Este parámetro no se admite cuando se establecen transformaciones. Valor predeterminado: None
|
transformations
|
Elemento Sklearn.compose.ColumnTransformer o una lista de tuplas que describen el nombre de columna y el transformador. Cuando se proporcionan transformaciones, las explicaciones son de las características anteriores a la transformación. El formato de una lista de transformaciones es el mismo que el que se muestra aquí: https://github.com/scikit-learn-contrib/sklearn-pandas. Si usa una transformación que no está en la lista de transformaciones sklearn.preprocessing compatibles con el paquete interpret-community, este parámetro no puede tomar una lista de más de una columna como entrada para la transformación. Puede usar las siguientes transformaciones sklearn.preprocessing con una lista de columnas, puesto que ya son de uno a varios o de uno a uno: Binarizer, KBinsDiscretizer, KernelCenterer, LabelEncoder, MaxAbsScaler, MinMaxScaler, Normalizer, OneHotEncoder, OrdinalEncoder, PowerTransformer, QuantileTransformer, RobustScaler y StandardScaler. Ejemplos de transformaciones que funcionan:
Ejemplo de una transformación que generaría un error, ya que no se puede interpretar como de uno a varios:
El último ejemplo no funcionaría, ya que el paquete interpret-community no puede determinar si my_own_transformer proporciona una asignación de varios a varios o de uno a varios al tomar una secuencia de columnas. Solo se debe especificar un parámetro de "transformaciones" o "feature_maps" para generar explicaciones sin procesar. Si se especifican ambos, se producirá una excepción de configuración. Valor predeterminado: None
|
feature_maps
|
Lista de asignaciones de características sin procesar a características generadas. Este parámetro puede ser una lista de matrices numpy o matrices dispersas donde cada entrada de matriz (raw_index, generated_index) es la ponderación de cada par de características sin procesar y generada. Las demás entradas se establecen en cero. Para una secuencia de transformaciones [t1, t2, ..., tn] que generan características generadas a partir de características sin procesar, la lista de asignaciones de características corresponde a las asignaciones de sin procesar a generadas en el mismo orden que t1, t2, etc. Si la asignación general de características de sin procesar a generada de t1 a tn está disponible, solo se puede pasar esa asignación de características en una lista de elementos únicos. Solo se debe especificar un parámetro de "transformaciones" o "feature_maps" para generar explicaciones sin procesar. Si se especifican ambos, se producirá una excepción de configuración. Valor predeterminado: None
|
allow_all_transformations
|
Indica si se permiten transformaciones de varios a varios y de varios a uno. Valor predeterminado: None
|
workspace
Requerido
|
Objeto de área de trabajo donde se definen los modelos y conjuntos de datos. |
model
Requerido
|
str o
<xref:<xref:model that implements sklearn.predict>()> o
<xref:sklearn.predict_proba>() o
<xref:<xref:pipeline function>>
Identificador de modelo de un modelo registrado en MMS o una canalización o modelo de Machine Learning normal que se va a explicar. Si se especifica un modelo, debe implementar sklearn.predict() o sklearn.predict_proba(). Si se especifica una canalización, debe incluir una función que acepte un elemento ndarray de dos dimensiones. |
explainer_kwargs
Requerido
|
Los argumentos de palabra clave que van con el explicador elegido no se tratan aquí. Se pasarán como kwargs cuando se inicialice el explicador subyacente. |
init_dataset
Requerido
|
Identificador del conjunto de datos o conjunto de datos normal usado para inicializar el explicador (por ejemplo, x_train). |
run
Requerido
|
Ejecución a la que se debe asociar esta explicación. |
features
Requerido
|
Lista de nombres de características. |
classes
Requerido
|
Nombres de clase como una lista de cadenas. El orden de los nombres de clase debe coincidir con el de la salida del modelo. Solo es necesario si se explica un clasificador. |
model_task
Requerido
|
Parámetro opcional para especificar si el modelo es un modelo de clasificación o de regresión. En la mayoría de los casos, el tipo del modelo se puede inferir en función de la forma de la salida, donde un clasificador tiene un método predict_proba y genera una matriz de dos dimensiones, mientras que un regresor tiene un método predict y genera una matriz de una dimensión. |
explain_subset
Requerido
|
Lista de índices de características. Si se especifica, solo selecciona un subconjunto de las características del conjunto de datos de evaluación para obtener una explicación, lo que acelerará el proceso de explicación cuando el número de características sea grande y el usuario ya conoce el conjunto de características interesadas. El subconjunto pueden ser las características K principales del resumen del modelo. Este argumento no se admite cuando se establecen transformaciones. |
transformations
Requerido
|
Elemento Sklearn.compose.ColumnTransformer o una lista de tuplas que describen el nombre de columna y el transformador. Cuando se proporcionan transformaciones, las explicaciones son de las características anteriores a la transformación. El formato de una lista de transformaciones es el mismo que el que se muestra aquí: https://github.com/scikit-learn-contrib/sklearn-pandas. Si usa una transformación que no está en la lista de transformaciones sklearn.preprocessing compatibles con el paquete interpret-community, este parámetro no puede tomar una lista de más de una columna como entrada para la transformación. Puede usar las siguientes transformaciones sklearn.preprocessing con una lista de columnas, puesto que ya son de uno a varios o de uno a uno: Binarizer, KBinsDiscretizer, KernelCenterer, LabelEncoder, MaxAbsScaler, MinMaxScaler, Normalizer, OneHotEncoder, OrdinalEncoder, PowerTransformer, QuantileTransformer, RobustScaler y StandardScaler. Ejemplos de transformaciones que funcionan:
Ejemplo de una transformación que generaría un error, ya que no se puede interpretar como de uno a varios:
El último ejemplo no funcionaría, ya que el paquete interpret-community no puede determinar si my_own_transformer proporciona una asignación de varios a varios o de uno a varios al tomar una secuencia de columnas. Solo se debe especificar un parámetro de "transformaciones" o "feature_maps" para generar explicaciones sin procesar. Si se especifican ambos, se producirá una excepción de configuración. |
feature_maps
Requerido
|
list[array] o
list[csr_matrix] <xref::param allow_all_transformations: Whether to allow many to many and many to one transformations.>
Lista de asignaciones de características sin procesar a características generadas. Este parámetro puede ser una lista de matrices numpy o matrices dispersas donde cada entrada de matriz (raw_index, generated_index) es la ponderación de cada par de características sin procesar y generada. Las demás entradas se establecen en cero. Para una secuencia de transformaciones [t1, t2, ..., tn] que generan características generadas a partir de características sin procesar, la lista de asignaciones de características corresponde a las asignaciones de sin procesar a generadas en el mismo orden que t1, t2, etc. Si la asignación general de características de sin procesar a generada de t1 a tn está disponible, solo se puede pasar esa asignación de características en una lista de elementos únicos. Solo se debe especificar un parámetro de "transformaciones" o "feature_maps" para generar explicaciones sin procesar. Si se especifican ambos, se producirá una excepción de configuración. |
Comentarios
MimicWrapper se puede usar para explicar modelos de Machine Learning y es especialmente eficaz junto con AutoML. Por ejemplo, mediante la función automl_setup_model_explanations
del módulo <xref:azureml.train.automl.runtime.automl_explain_utilities>, puede usar MimicWrapper para calcular y visualizar la importancia de las características. Para más información, consulte Interpretación: capacidad de explicación de modelos de aprendizaje automático automatizado (versión preliminar).
En el ejemplo siguiente, se usa MimicWrapper en un problema de clasificación.
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 más información sobre este ejemplo, consulte este cuaderno.
Métodos
explain |
Explica el comportamiento de un modelo y, opcionalmente, carga esa explicación para su almacenamiento y visualización. |
explain
Explica el comportamiento de un modelo y, opcionalmente, carga esa explicación para su almacenamiento y visualización.
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
Nombre | Description |
---|---|
explanation_types
Requerido
|
Lista de cadenas que representan los tipos de explicaciones deseados. Actualmente, se admiten "global" y "local". Ambos se pueden pasar a la vez; solo se devolverá una explicación. |
eval_dataset
|
Identificador del conjunto de datos o el conjunto de datos regular que se usa para generar la explicación. Valor predeterminado: None
|
top_k
|
Limita la cantidad de datos devueltos y almacenados en el historial de ejecución a las características K principales, cuando sea posible. Valor predeterminado: None
|
upload
|
Si es True, la explicación se carga automáticamente en el historial de ejecución para su almacenamiento y visualización. Si no se ha pasado una ejecución en la inicialización, se crea una. Valor predeterminado: True
|
upload_datasets
|
Si se establece en True y no se pasan identificadores de conjuntos de datos, se cargará el conjunto de datos de evaluación en Azure Storage. Esto mejorará la visualización disponible en la vista web. Valor predeterminado: False
|
tag
Requerido
|
Cadena que se va a adjuntar a la explicación para distinguirla de otras después de la carga. |
get_raw
|
Si es True y se ha pasado el parámetro Valor predeterminado: False
|
raw_feature_names
|
Lista de nombres de características sin procesar, reemplazando los nombres de características diseñadas del constructor. Valor predeterminado: None
|
experiment_name
|
Nombre deseado que se va a dar una explicación si Valor predeterminado: explain_model
|
raw_eval_dataset
|
Datos de eval sin procesar que se cargarán para obtener explicaciones sin procesar. Valor predeterminado: None
|
true_ys
|
Etiquetas True para los ejemplos de evaluación. Valor predeterminado: None
|
Devoluciones
Tipo | Description |
---|---|
Objeto de explicación. |
Atributos
explainer
Obtiene el explicador utilizado internamente por el contenedor.
Devoluciones
Tipo | Description |
---|---|
Explicador utilizado internamente por el contenedor. |