Función EXPLAIN_MODEL
La función EXPLAIN_MODEL devuelve un tipo de datos SUPER que contiene un informe de explicabilidad del modelo en formato JSON. El informe de explicabilidad contiene información sobre el valor de Shapley para todas las características del modelo.
Actualmente, la función EXPLAIN_MODEL solo es compatible con los modelos XGBoost AUTO ON o AUTO OFF.
Cuando el informe de explicabilidad no está disponible, la función devuelve estados que muestran el progreso del modelo. Entre ellos se encuentran Waiting for training job to
complete
, Waiting for processing job to complete
y Processing job failed
.
Cuando se ejecuta la instrucción CREATE MODEL, el estado de la explicación pasa a ser Waiting
for training job to complete
. Cuando se ha formado el modelo y se envía una solicitud de explicación, el estado de esta pasa a ser Waiting for processing
job to complete
. Cuando la explicación del modelo se completa correctamente, queda a disposición el informe de explicabilidad completo. De lo contrario, el estado pasa a ser Processing job
failed
.
Cuando ejecute la instrucción CREATE MODEL, puede utilizar el parámetro MAX_RUNTIME
opcional para especificar la cantidad máxima de tiempo que debe durar el entrenamiento. Una vez que la creación del modelo alcanza esa duración, Amazon Redshift deja de crear el modelo. Si alcanza ese límite de tiempo mientras crea un modelo de piloto automático, Amazon Redshift le devolverá el mejor modelo hasta el momento. La explicabilidad del modelo está disponible una vez que finaliza el entrenamiento del modelo, por lo que si MAX_RUNTIME
se establece a una duración baja, es posible que el informe de explicabilidad no esté disponible. El tiempo de entrenamiento varía y depende de la complejidad del modelo, el tamaño de los datos y otros factores.
Sintaxis
EXPLAIN_MODEL ('schema_name.model_name')
Argumento
- schema_name
-
El nombre del esquema. Si no se especifica schema_name, se selecciona el esquema actual.
- model_name
-
El nombre del modelo. El nombre del modelo en un esquema debe ser único.
Tipo de retorno
La función EXPLAIN_MODEL devuelve un tipo de datos SUPER, tal y como se muestra a continuación.
{"version":"1.0","explanations":{"kernel_shap":{"label0":{"global_shap_values":{"x0":0.05,"x1":0.10,"x2":0.30,"x3":0.15},"expected_value":0.50}}}}
Ejemplos
El siguiente ejemplo devuelve el estado de la explicación waiting for training job to complete
.
select explain_model('customer_churn_auto_model');
explain_model
--------------------------------------------------------
{"explanations":"waiting for training job to complete"}
(1 row)
Cuando la explicación del modelo se completa correctamente, queda a disposición el informe de explicabilidad completo de la siguiente manera.
select explain_model('customer_churn_auto_model');
explain_model
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{"version":"1.0","explanations":{"kernel_shap":{"label0":{"global_shap_values":{"x0":0.05386043365892927,"x1":0.10801289723274592,"x2":0.23227865827017378,"x3":0.0676685133940455,"x4":0.0897097667672375,"x5":0.08502141653270926,"x6":0.07581993936077065,"x7":0.16462880604578135},"expected_value":0.8492974042892456}}}}
(1 row)
Dado que la función EXPLAIN_MODEL devuelve el tipo de datos SUPER, es posible consultar el informe de explicabilidad. De este modo, se pueden extraer valores de Shapley de global_shap_values
, expected_value
o de características específicas.
En el siguiente ejemplo, se extrae global_shap_values
para el modelo.
select json_table.report.explanations.kernel_shap.label0.global_shap_values from (select explain_model('customer_churn_auto_model') as report) as json_table;
global_shap_values
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{"state":0.10983770427197151,"account_length":0.1772441398408543,"area_code":0.08626823968639591,"phone":0.0736669595282712,"intl_plan":3.344907436910987,"vmail_plan":0.09646600597854467,"vmail_message":0.2064922655089351,"day_mins":2.015038015251777,"day_calls":0.13179511076780168,"day_charge":0.4941091720480879,"eve_mins":0.46081379198626105,"eve_calls":0.16913440417758477,"eve_charge":0.09651014369401761,"night_mins":0.44218153640050845,"night_calls":0.15311640089218997,"night_charge":0.13850366104495426,"intl_mins":0.7583662464883899,"intl_calls":0.47144468610485685,"intl_charge":0.10945894673611875,"cust_serv_calls":0.31822051038387733}
(1 row)
En el siguiente ejemplo, se extrae global_shap_values
para la característica x0.
select json_table.report.explanations.kernel_shap.label0.global_shap_values.x0 from (select explain_model('customer_churn_auto_model') as report) as json_table;
x0
------------------------
0.05386043365892927
(1 row)
Si el modelo se crea en un esquema específico y se tiene acceso al modelo creado, entonces es posible realizar una consulta sobre la explicación del modelo, tal y como se muestra a continuación.
-- Check the current schema
SHOW search_path;
search_path
------------------
$user, public
(1 row)
-- If you have the privilege to access the model explanation
-- in `test_schema`
SELECT explain_model('test_schema.test_model_name');
explain_model
---------------------------------------------------------
{"explanations":"waiting for training job to complete"}
(1 row)